2017-05-26 73 views
1

我真誠地不知道如何處理此問題。我是這個圖書館的新手(PDFBox),我設法實現了代碼(使用Java),可以打印任何選定的PDF。PDFBox:如何從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); 

      } 

我該怎麼辦下一步是什麼?

這就是我創建「doc」的方式。

public Pageable doc; JFileChooser getPDF = new JFileChooser(); 
      FileFilter filter = new FileNameExtensionFilter("PDF File", "pdf"); 
      getPDF.setFileFilter(filter); 
      getPDF.setDialogTitle("Select a PDF file"); 
      getPDF.showOpenDialog(getPDF); 
      try 
      { 
        Connection conn = null; 
        conn = DriverManager.getConnection(urlDist); 
        //SQLiteConnection new2 = new SQLiteConnection(urlDist, filename); 
        File selPdf = getPDF.getSelectedFile(); 
        doc = PDDocument.load(selPdf); 

        if (doc != null) 
        { 
           count = doc.getNumberOfPages(); 
           noPagestxt.setText(String.valueOf(count)); 
           filename = selPdf.getName(); 
           fileNametxt.setText(filename); 
           pagesPrint.setEnabled(true); 
        } 
        // cleaning memory 

        // cleaning memory 
      } 
      catch (Exception ex) 
      { 
        Logger.getLogger(BioProject.class.getName()).log(Level.SEVERE, null, ex); 
      } 
+0

「doc」從哪裏來? –

+0

'public Pageable doc;'''doc = PDDocument.load(selPdf);'不起作用。無論如何,在此期間,我發現了一些可能有用的東西,「PageRanges」類。這是一個打印作業屬性,所以使用'PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet(); attr.add(new PageRanges(1,1)); job.print(attr);' –

+0

@TilmanHausherr,我會嘗試一下。 –

回答

1

於是,我上的使用用戶TilmanHausherr的建議的問題。 我使用PageRanges()函數指定範圍這裏是代碼。

... 
job.setPageable(doc); 
job.setPrintService(myPrintService); 
PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet(); 
PageRanges pageRng = new PageRanges(lower , upper); 
attr.add(pageRng); 
job.print(attr); 

注:upperlower是從用戶得到整型變量。

-1
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); 
+0

如果您對答案滿意,則標記爲已回答 – VRJ

+0

您的代碼不會將任何內容打印到打印機。它只是提取文本並輸出它。 –

+0

是的,它讀取數據並打印 – VRJ