[英]Printing Multiple PDFs from Java as a single print job (physical printing)
我想在一個打印作業中從java(使用java打印服務)打印多個pdf。
我想將多個pdf作為單個作業發送到打印機。 這樣,當我從打印機中取出它時,我的“批量”中的所有文檔一起打印並且不與其他人的打印作業交錯。
批處理可能包含1000個打印作業。
我試過jpedal,但它不支持java.awt.print.Book
Book book = new Book();
PdfDecoder pdfDecoder = readFileApplyOptions("C:/Temp/singlepagetest.pdf", pageFormat);
book.append(pdfDecoder, pageFormat);
PdfDecoder pdfDecoderTwo = readFileApplyOptions("C:/Temp/printfax-test.pdf",pageFormat);
book.append(pdfDecoderTwo, pageFormat);
printJob.setPageable(book);
printJob.print();
只打印出第一個pdf。 如何在單個作業中打印多個pdf?
readFileAndApplyOptions()基本上創建一個新的PdfDecoder對象並返回它。
我也以類似的方式嘗試了Sun的PDFRenderer PDFRenderer (使用Book對象),但我的代碼仍然只打印出第一頁。
有沒有人遇到類似的問題? 有沒有我可能缺少的解決方案?
不是Java特定的,但我在C#中體驗過這個。 我通過將每個文檔打印到一個文件(在編程上等同於打印對話框上的“PrintToFile”復選框)解決了它,然后將每個文件連接成一個內存流,我以原始格式傳遞給Win32 API打印機假脫機(因為默認情況下,輸出到文件已正確格式化)。
您可以在Java中使用類似的技術
我在JTabbedPane的幾個JPanel上打印時遇到了同樣的困難,每個JPanel都在一個單獨的頁面上。 我把它們收集在一本書中,但它只打印了第一頁。
Book類運行良好(正確的頁數),但我認為問題來自setPageable。 既然一本書不是可印刷的,我就成功了,它有效!
解決方法:
設計一個PrintableBook類:extends Book,實現Printable
public class PrintableBook extends Book implements Printable { Vector<Printable> pages;// NB: we assume pages are single public PrintableBook() { super(); pages = new Vector<Printable>(); } public void add(Printable pp) { append(pp, pp.getPageFormat()); pages.add(pp); } public int print(Graphics g, PageFormat pf, int pageIndex) { if (pageIndex >= pages.size()) return NO_SUCH_PAGE; else { Printable pp = pages.elementAt(pageIndex); return pp.print(g, pf, 0); } } }
然后使用printJob.setPrintable( printableBook )
而不是setPageable
您應該使用iText庫將所有pdf文檔合並到一個文檔中,然后逐頁打印合並的文檔。
AFAIK,你不能,多個文件將被打印在多個工作崗位上。
解決方法是將所有pdf加入單個文檔並打印出來。
: - /
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.