我想打印pdf文件的特定页面。在这个例子中,我有4页的pdf,我想打印第三页。我正在使用Apache PDFBox库。我试图删除除我要打印的页面之外的其他页面,但它现在打印除我要打印的页面之外的所有其他页面。。。有什么帮助吗?
这是我写的函数代码:
void printPDFS(String fileName, int i) throws PrinterException, IOException{
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.getPrintService();
// String test = "\\\\192.168.5.232\\failai\\BENDRAS\\DHL\\test2.pdf";
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintService(printJob.getPrintService());
PDDocument doc = PDDocument.load(fileName);
for(int j=1;j<=doc.getNumberOfPages();j++){
if(i!=j)
{
doc.removePage(j);
}
}
doc.silentPrint(job);
}
我已经在代码中添加了这一行:系统。出来println(doc.getPageMap())
控制台给我:
{13,0=4, 1,0=2, 7,0=3, 27,0=1}
什么意思?
您的代码不起作用,因为您没有考虑到删除页面也会更改索引较高的页面的索引,并减少页面数量。页面索引也是基于0的。删除这样的页面,应该可以:
i = Math.max(-1, Math.min(i, doc.getNumberOfPages()));
// remove all pages with indices higher than i
for (int j = doc.getNumberOfPages()-1; j > i; j--) {
doc.removePage(j);
}
// remove all pages with indices lower than i
for (int j = i-1; j >= 0; j--) {
doc.removePage(j);
}
或者更接近您的实现:
for(int j=doc.getNumberOfPages()-1; j >= 0; j--){
if(i!=j)
{
doc.removePage(j);
}
}
问题内容: 我想使用PDFBox打印 由iText创建的 PDF文件 。我已经使用PDDocument类及其方法print()成功尝试了此操作。您可以在此处找到文档: http //pdfbox.apache.org/apidocs/。 (我正在使用此代码:) 方法print()很好用,但是 有一个问题:当我需要打印多个文件时,该方法要求我为每个文档选择打印机。 有什么办法只能设置一次打印机吗?
问题内容: 我想读取捕获的异常的完整堆栈跟踪。 例如: 我想阅读“ … 23更多”,以了解异常的来源。 问题答案: 答案很简单,这些行已经在stacktrace中了:) 基本上,以下情况正在发生:
我正在尝试加载PDF文档并打印它。整个过程都正常,但我收到了以下警告“警告:您没有关闭PDF文档”,我不明白为什么在我关闭文档后会出现这种情况。它出现在第11行(job.print();)。因为它是在打印时发生的,所以我无法调试它。
我有一个PDF文件,我必须使用Java的Apache PDFBox库在PDF的每一页上打印页码。Pdf有一个包含动态内容的表格,我不知道我的内容需要在PDF上打印多少页,因为它包含一个包含动态数据的表格。 例如:-创建PDF时,文件可能有4或5页,在这种情况下,我必须在PDF页脚的每页上打印页码no。如下所示 假设内容将以PDF格式打印在4页上 第1页第1页,共4页 第2页第2页,共4页 在第3页
APIService: 在活动调用API中: