java - PDF框。 Java : How to print only one page of PDF instead of full document?

标签 java pdf printing pdfbox

我想打印 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);
}

我已将这一行添加到代码中:System.out.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);                
    }
}

关于java - PDF框。 Java : How to print only one page of PDF instead of full document?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34305497/

相关文章:

php - 未定义的字体 : In Fpdf

parsing - 如何找到预告片字典?

c# - 打印文档

python - 为什么 `sys.stderr` 和 `sys.stdout` 在 shell 的末尾放置一个数字,而不是在模块中 - python

java - 逐行获取Util方法#

java - 从持久化实体 JPA 中删除列表的对象

java - 是否有任何标准方法可以使用 gradle 从 intellij 运行 java 项目?

pdf - ps2pdf : preserve page size

java - 返回格式化字符串无法正常工作

Delphi - 文本打印在黑色背景上