我目前正在處理的項目需要大量打印文檔,這些文檔將郵寄給客戶。例如,一次印刷運行可能包含超過1000封信件,其中每封信件都會轉到不同的客戶端。PDFBox中的合併文檔既沒有空白頁也沒有太多...但只在打印時
爲了生成此打印運行,外部服務(即不使用PDFBox)首先將這些字母中的每一個都生成爲單個PDF文件。然後,我的代碼加載所有這些PDF文件,將它們與PDFBox合併在一起(以便它們可以作爲打印房間中的單個作業打印),然後向前端(也帶有PDFBox)添加一個「橫幅頁面」告訴印刷廠如何處理這些字母。
一切都打印雙面。但是,由於每封信都要寄給不同的客戶,所以我不能在一張紙上背對背地打印兩封信。這意味着任何具有奇數頁面的信件都需要添加一個空白頁面。印刷只是以前,只包含兩個字母一個非常小的印數合併後的PDF文檔可以是這個樣子:
Banner Page
Blank
Letter 1
Blank
Letter 2
Blank
但是,這是我的問題進來,我添加了這個空白頁代碼:
PDFMergerUtility docMerger = new PDFMergerUtility();
for (PDDocument currDoc : documents) {
// Add blank page to document if odd number
if (currDoc.getNumberOfPages() % 2 != 0) {
currDoc.addPage(new PDPage());
}
// Merge into single document
docMerger.appendDocument(mergedDoc, currDoc);
// Close currDoc
currDoc.close();
}
這似乎一直工作的橫幅頁面,但對於某些類型的字母,它擰了起來。如果我打開生成的PDF,它看起來沒問題,但是當我打印時,每封信之間都會有一張額外的空白紙。
所以當我看到這個在Acrobat Reader(甚至PDFBox的的觀衆):
Sheet 1: Banner Page
Sheet 2: Letter 1
Sheet 3: Letter 2
打印輸出看起來是這樣的:
Sheet 1: Banner Page
Sheet 2: Letter 1
Sheet 3: BLANK!
Sheet 4: Letter 2
Sheet 5: BLANK!
同時,如果我採取new PDPage()
代碼出來,在Acrobat和打印輸出中,我得到以下結果:
Sheet 1: Banner Page
Sheet 2: Letter 1 (front) AND Letter 2 (back)
我有三通過PDDocument.silentPrint(PrinterJob)
進行編輯調試,但當它深入到PDF結構中時,事情開始變得非常危險,沒有什麼東西會跳出來。任何想法可能會發生什麼?
所以......紙張尺寸是最終的問題?如果是這樣,請接受你自己的答案:)。 – jjmontes