質問

Javaアプリケーション内からPDFファイルをサイレントしようとしています(より具体的にはJ2EE WebApp)。

このアプリケーションでは、iTextを使用してPDFファイルを作成しています。作成されたファイルはフォームレターで、それぞれが正確に1つのページで構成されています。

これらのPDFファイルをレンダリングして印刷するために、PDFレンダラーライブラリを使用しようとしました。 (こちらを参照: https://pdf renderer.dev.java.net/ )

私はいくつかの有用な例コードを見つけました http://juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/ 確かに、作業機関から最初のドキュメントを印刷することができるまで、そう長くはありませんでした。

しかし今、面白い部分が来ます:

各PDFファイルを印刷した後、何らかの形でねじ込まれました。それはまだ読みやすく、すべてでしたが、フォーマット全体が少しクレイジーになりました。彼らがそうあるべきではないラインブレーキ、含まれる画像のエラーアーティファクト、テキストの解除は突然長くまたは短くなります...

さらに、印刷されたのは、この「ハッキングされた」バージョンでもありました。そのため、エラーはレンダリングプロセスのどこかにある必要があると思います。

これは、レンダリングおよび印刷プロセス全体を担当するソースコードです。

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);

別の楽しい事実:PDFのねじ込みは、作成されたITEXT PDFドキュメントでのみ発生します。他のランダムなPDFを印刷しようとすると、マングルされません。

問題が何であるかについてのアイデアはありますか?そして、レンダリングは私のPDFにどのように影響するのでしょうか?私がこのscourceコードを理解しているので、read_onlyモードはそれを正確に防ぐ必要があります...

編集:ITEXTを作成したPDFを作成すると、埋め込まれたフォントも削除されることがわかりました。繰り返しますが、PDFレンダラーを介してレンダリング/印刷する前に、これは完全に正常に機能しました。 (PDFプロパティなどにもフォントが表示されます...)

役に立ちましたか?

解決

たぶん、itextがレンダラーと互換性のないPDFファイルを作成しているのでしょうか?作成するPDFバージョンを確認しましたか?古いバージョンを指定することは可能ですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top