Java PDFBox:如何从PDF打印一系列页面

Java PDFBox:如何从PDF打印一系列页面,java,netbeans,pdfbox,Java,Netbeans,Pdfbox,我真的不知道该怎么做。我是这个库(PDFBox)的新手,我设法实现了(使用Java)代码,可以打印任何选定的PDF 现在,如果需要,我需要允许用户指定要打印的页面范围。 这是我的代码中处理打印的部分 try { // TODO add your handling code here: PrintService myPrintService = findPrintService(

我真的不知道该怎么做。我是这个库(PDFBox)的新手,我设法实现了(使用Java)代码,可以打印任何选定的PDF

现在,如果需要,我需要允许用户指定要打印的页面范围。 这是我的代码中处理打印的部分

          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);