0
給出一個帶簽名的數字簽名PDF文件,我想將此文檔打印在紙上。PDFBox未在javax.print api上打印簽名
將PDFBox與下列代碼一起使用我可以打印文檔,除了簽名不會在死樹的薄薄的漂白表單上結束。文本週圍的定位不會改變。所以它似乎意識到那裏應該有東西,但它不會被打印。
import java.awt.print.PrinterJob;
import javax.print.PrintService;
import javax.print.attribute.HashPrintRequestAttributeSet;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPageable;
InputStream pdf = getPDFInputStreamSomeHow();
PDDocument pdDocument = PDDocument.load(pdf);
PDFPageable pageable = new PDFPageable(pdDocument);
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintService(service);
job.setPageable(pageable);
job.print(attrs);
看來,PDFBox的實際上不支持這種簽名的,因爲當我使用org.apache.pdfbox.rendering.PDFRenderer
來渲染頁面的BufferedImage
,簽名只是渲染,因爲它是我經常PDF閱讀器(Acrobat或了Evince) 。
如何在打印時讓PDFBox正確呈現簽名?我寧願不打印BufferedImage
,因爲它會將文檔分成多個打印作業,並使我對發送到打印機的渲染圖像的質量負責。
您正在使用什麼PDFBox版本以及您使用的操作系統是否可以共享PDF?某些打印問題可通過使用4參數PDFPageable構造函數來解決,最後一個參數設置爲您希望的dpi,例如300(是的,這使您對發送給打印機的渲染圖像的質量負責)。其他打印問題可能會通過關閉或打開「擴展」對話框中的高級打印而消失。 (沒有確切的詞語,有JIRA問題,但JIRA已關閉) –
以下是https://issues.apache.org/jira/browse/PDFBOX-3729問題,這可能是也可能不是原因。 –
我不能分享這個PDF,因爲它包含機密信息並生成一個新的而不是一個麻煩。但這不是問題,因爲你的建議奏效了!請張貼使用4參數構造函數作爲答案,我會接受它。 – Joost