Java PDFBox:如何从PDF打印一系列页面
我真的不知道该怎么做。我是这个库(PDFBox)的新手,我设法实现了(使用Java)代码,可以打印任何选定的PDF 现在,如果需要,我需要允许用户指定要打印的页面范围。 这是我的代码中处理打印的部分Java PDFBox:如何从PDF打印一系列页面,java,netbeans,pdfbox,Java,Netbeans,Pdfbox,我真的不知道该怎么做。我是这个库(PDFBox)的新手,我设法实现了(使用Java)代码,可以打印任何选定的PDF 现在,如果需要,我需要允许用户指定要打印的页面范围。 这是我的代码中处理打印的部分 try { // TODO add your handling code here: PrintService myPrintService = findPrintService(
try
{
// TODO add your handling code here:
PrintService myPrintService = findPrintService(printerCmb.getSelectedItem().toString());
PrinterJob job = PrinterJob.getPrinterJob();
job.setPageable(doc);
job.setPrintService(myPrintService);
job.print( );
}
catch (PrinterException ex)
{
Logger.getLogger(PrintDialog.class.getName()).log(Level.SEVERE, null, ex);
}
我下一步做什么
这就是我创建“文档”的方式
下面的代码有助于打印整个PDF文件中特定页面的数据,希望这能解决您的问题。
PDDocument doc=PDDocument.load(“您的PDF路径”);
PDFTextStripper剥离器=新的PDFTextStripper();
剥离器。设置开始页(1);
剥离器.setEndPage(Integer.MAX_值);
List ans=Arrays.asList(changeText.split(“,\n”);
系统输出打印LN(ans);
因此,我使用用户的建议解决了这个问题。
我使用PageRanges()
函数指定了范围。下面是代码
...
job.setPageable(doc);
job.setPrintService(myPrintService);
PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
PageRanges pageRng = new PageRanges( lower , upper);
attr.add(pageRng);
job.print(attr);
注意:
上限
和下限
是从用户处获取的整数变量 如果您对答案感到满意,则标记为回答您的代码不会在打印机上打印任何内容。它只提取文本并输出,但不输出到纸质打印机。println代表标准输出,“doc”从何而来?public Pageable doc代码>和doc=PDDocument.load(selPdf)代码>不起作用。无论如何,在此期间我发现了一些可能有用的东西,类PageRanges
。这是一个打印作业属性,因此使用PrintRequestAttributeSet attr=new HashPrintRequestAttributeSet();属性添加(新页面范围(1,1));作业打印(attr)
@TilmanHausherr,我现在就试试。@TilmanHausherr,我已经尝试了你的解决方案,但是我一直得到一个错误java.lang.IllegalArgumentException:Null range specified
,即使我打印出整数变量并且它们不是Null;虽然如果我输入原始的数字,比如1和5,函数工作得很顺利。在它里面放一个断点,看看你的变量到底是什么。在Netbeans中,您可以通过单击代码左侧的行号来设置断点。如果没有什么奇怪的事,那就开始看看到底发生了什么。。。
Below is the code which can be helpful for printing data from specific pages in the whole PDF file hope this would solve your issue.
PDDocument doc = PDDocument.load("Your PDF path");
PDFTextStripper stripper = new PDFTextStripper();
stripper.setStartPage( 1 );
stripper.setEndPage( Integer.MAX_VALUE );
List<String> ans= Arrays.asList(changeText.split(",\n"));
System.out.println(ans);
...
job.setPageable(doc);
job.setPrintService(myPrintService);
PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
PageRanges pageRng = new PageRanges( lower , upper);
attr.add(pageRng);
job.print(attr);