|
You last visited: Today at 19:33
Advertisement
PDF drucken
Discussion on PDF drucken within the Java forum part of the Coders Den category.
02/17/2016, 17:40
|
#1
|
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
|
PDF drucken
Hallo,
ich versuche seit Tagen eine PDF in der selben größe und Qualität zu drucken wie der Acrobat oder Firefox/Chrome.
Momentan benutze ich die pdfbox. Jedoch unterstüzt es manche Schriftarten nicht, obwohl andere Programme es problemlos darstellen, die Schriftgröße ist etwas kleiner/größer, die Zeilenabstände sind anders, die Kopf & Frußzeile ist verrückt und das selbe für den linken und rechten Rand.
Gibt es eine alternative zu pdfbox die es fehlerfrei drucken kann?
MfG
Mr.Tr33
ps: wer mir hierbei helfen möchte, ich kann die Tage Testpdfs hochladen
|
|
|
02/18/2016, 16:36
|
#2
|
elite*gold: 0
Join Date: Sep 2008
Posts: 9,484
Received Thanks: 3,109
|
Möchtest du die Datei ich sage mal "allgemein gültig" an den Drucker übertragen oder möchtest du einfach die PDF Datei weiterschicken?
Falls du nur die PDF weiterschicken möchtest ist das ganze eigentlich recht simpel, dann muss aber der Drucker in der Lage sein eine PDF selbst zu interpretieren, kann er dies nicht, drückt er unlesbare Zeichen aus.
Dann gäbe es noch eine Alternative, bei der du allerdings den Acrobat Reader auf dem Rechner benötigst und du über diesen die PDF an den Drucker versendest. Funktioniert dann eben nur bei Rechnern mit installiertem Reader.
Vielleicht hilft dir eventuell die PDF-Render Klasse weiter:
PHP Code:
import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.print.Book; import java.awt.print.PageFormat; import java.awt.print.Paper; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel;
import javax.swing.JOptionPane;
import com.sun.pdfview.PDFFile; import com.sun.pdfview.PDFPage; import com.sun.pdfview.PDFRenderer;
public class PDFPrinter {
public PDFPrinter(File file) { try { FileInputStream fis = new FileInputStream(file); FileChannel fc = fis.getChannel(); ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page PDFPrintPage pages = new PDFPrintPage(pdfFile);
// Create Print Job PrinterJob pjob = PrinterJob.getPrinterJob(); PageFormat pf = PrinterJob.getPrinterJob().defaultPage(); Paper a4paper = new Paper(); double paperWidth = 8.26; double paperHeight = 11.69; a4paper.setSize(paperWidth * 72.0, paperHeight * 72.0);
/* * set the margins respectively the imageable area */ double leftMargin = 0.3; double rightMargin = 0.3; double topMargin = 0.5; double bottomMargin = 0.5;
a4paper.setImageableArea(leftMargin * 72.0, topMargin * 72.0, (paperWidth - leftMargin - rightMargin) * 72.0, (paperHeight - topMargin - bottomMargin) * 72.0); pf.setPaper(a4paper);
pjob.setJobName(file.getName()); Book book = new Book(); book.append(pages, pf, pdfFile.getNumPages()); pjob.setPageable(book);
// Send print job to default printer if (pjob.printDialog()) { pjob.print(); } } catch (IOException e) { e.printStackTrace(); } catch (PrinterException e) { JOptionPane.showMessageDialog(null, "Printing Error: " + e.getMessage(), "Print Aborted", JOptionPane.ERROR_MESSAGE); e.printStackTrace(); } }
class PDFPrintPage implements Printable { private PDFFile file;
PDFPrintPage(PDFFile file) { this.file = file; }
public int print(Graphics g, PageFormat format, int index) throws PrinterException { int pagenum = index + 1;
// don't bother if the page number is out of range. if ((pagenum >= 1) && (pagenum <= file.getNumPages())) { // fit the PDFPage into the printing area Graphics2D g2 = (Graphics2D) g; PDFPage page = file.getPage(pagenum); double pwidth = format.getImageableWidth(); double pheight = format.getImageableHeight();
double aspect = page.getAspectRatio(); double paperaspect = pwidth / pheight;
Rectangle imgbounds;
if (aspect > paperaspect) { // paper is too tall / pdfpage is too wide int height = (int) (pwidth / aspect); imgbounds = new Rectangle( (int) format.getImageableX(), (int) (format.getImageableY() + ((pheight - height) / 2)), (int) pwidth, height); } else { // paper is too wide / pdfpage is too tall int width = (int) (pheight * aspect); imgbounds = new Rectangle( (int) (format.getImageableX() + ((pwidth - width) / 2)), (int) format.getImageableY(), width, (int) pheight); }
// render the page PDFRenderer pgs = new PDFRenderer(page, g2, imgbounds, null, null); try { page.waitForFinish(); pgs.run(); } catch (InterruptedException ie) { }
return PAGE_EXISTS; } else { return NO_SUCH_PAGE; } } } }
|
|
|
02/18/2016, 22:15
|
#3
|
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
|
Die kenne ich bereits. Ich habe vor eine fertige PDF einfach zu drucken.
Habe hier auch eine kleine Diskussion:
|
|
|
 |
Similar Threads
|
Briefmarken Drucken?
08/07/2013 - Off Topic - 16 Replies
Ich müste dringend einen Brief verschicken habe aber keine Briefmarke mehr zuhause und es ist grade am Regen und ich habe kein bock zur Post zu Fahren.
jetzt ist meine Frage gibt es eine Möglichkeit sich online eine Briefmarke aus zu Drucken und diese mit PP oder lastschrift zu Bezahlen?
|
auf T-shirts drucken ?
10/13/2011 - Main - 5 Replies
Hallo,
undzwar ich hab ne frage kennt wer von euch ne seite wo ich mir das bild hier http://img97.imageshack.us/img97/3995/594361513264 08234533100.jpg aufn schwarzes t-shirt draufdrucken kann ? es soll so ablaufen die drucken das bild aufn schwarzes t-shirt ich überweise denen das geld und die schickens mir per post geht sowas kennt wer so ne seite von euch ?
danke vorraus.
MfG: ¥ankees'
|
[VB.Net]TextDokument Drucken
05/30/2010 - Coding Tutorials - 2 Replies
Hallo Elitepvpers! heute zeige ich euch wie ihr in Visual Basic 2008 in 8 Schritten ganz einfach ein Programm Programmiert, dass Texte aus einem Textfeld druckt!
Fangen wir an!
Schritt 1
Wähle das Label-SteuerElement aus und ziehe es oben auf die Form! Dieses Label ist dazu adr, das der Benutzer weiss was er zu tuen hat (Anweisung)
Schritt 2
Nun Ziehe das Textbox-SteuerElement auf die Form, unterhalb des Labels, stellen die EIgenschaften auf Multi-Line und machen es etwas größer!...
|
Drucken mit internet ?
04/15/2010 - Technical Support - 3 Replies
hallo com,
sry wenn es dre falsche platz ist für den thread :handsdown:
also ich hab einen Canon MX310 drucker und auf meinem computer tisch hab ich kein platz für den drucker also will ich es über mein modem vom internet machen (wenn es geht :D) und ich hab auch schon ge-google-t und hab rausgefunden das man den drucker freigeben muss das hab ich auch schon gemacht und meine frage ist wie ich das jetzt anschließe (mit dem modem :(:confused:)
wen ich alles falsch gemacht habe bitte...
|
D2NT Drucken
04/14/2010 - Diablo 2 - 8 Replies
Ich habe eine funktion, die den kalten immunes überspringt. Manchmal ist der bildschirm gefüllt ist. Wie kann ich eine zeitmesser eingang, damit es nicht den bildschirm auszufüllen?
if(NTA_GetResistance(target, NTA_DAMAGE_COLD) >= 100)
{
Print("ÿc3Cold Immune " + "ÿc8" + target.name)
return 1;
}
|
All times are GMT +1. The time now is 19:35.
|
|