Frage

Ich versuche, PDF -Dateien in einer Java -Anwendung (insbesondere eines J2EE -Webapps) zu stillen.

Innerhalb dieser Anwendung erstelle ich PDF -Dateien mit iText. Die erstellten Dateien sind Formellbuchstaben, die jeweils aus genau einer Seite bestehen.

Um diese PDF-Dateien zu rendern und auszudrucken, habe ich versucht, die PDF-Renderer-Bibliothek zu verwenden. (Siehe hier: https://pdf-renderer.dev.java.net/ )

Ich fand einen nützlichen Beispielcode bei http://juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/ Und in der Tat dauerte es nicht lange, bis ich das erste Dokument von meinem Arbeitsgerät ausdrucken konnte.

Aber jetzt kommt der lustige Teil:

Nach dem Drucken jeder der PDF -Dateien wurde irgendwie vermasselt. Es war immer noch lesbar und alles, aber die gesamte Formatierung wurde ein bisschen verrückt. LineBrakes, wo sie nicht sein sollten, Fehlerartefakte im enthaltenen Bild, die Einstimmung des Textes ist plötzlich länger oder kürzer, wie angenommen ...

Darüber hinaus war auch diese "gehackte" Version gedruckt ... also denke ich, dass der Fehler irgendwo im Rendering -Prozess sein muss.

Dies ist der Quellcode, der für den gesamten Rendering- und Druckprozess verantwortlich ist:

File f = this.file; //This accesses the created PDF file

FileInputStream fis = new FileInputStream(f);

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

PageFormat pf = PrinterJob.getPrinterJob().defaultPage();

pjob.setJobName(f.getName());

Book book = new Book();

book.append(pages, pf, pdfFile.getNumPages());

pjob.setPageable(book);

Eine weitere unterhaltsame Tatsache: Das Verfahren von PDFs einziger geschieht in den erstellten IText -PDF -Dokumenten. Wenn ich versuche, zufällige andere PDF zu drucken, wird es nicht verstümmelt.

Irgendwelche Ideen darüber, was das Problem sein könnte? Und wie kann sich das Rendering auf meine PDFs beeinflussen? Da ich diesen Scource -Code verstehe, sollte der READ_Only -Modus genau das verhindern ...

Bearbeiten: Ich habe gerade gesehen, dass das Drucken eines PDF -Erstellers auch die eingebetteten Schriftarten entfernt. Vor dem Rendern/Drucken über PDF-Renderer funktionierte dies wieder in Ordnung. (Schriftarten erschienen auch in den PDF -Eigenschaften usw. ...)

War es hilfreich?

Lösung

Vielleicht erstellt ITExt PDF -Dateien, die nicht mit Ihrem Renderer kompatibel sind? Haben Sie überprüft, welche PDF -Version sie erstellt? Vielleicht ist es möglich, eine ältere Version anzugeben?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top