2015-03-25 97 views
2

我正在嘗試創建一個顯示類似名稱,停止號碼和票價的pdf文件。該代碼編譯和運行完美,但是當我試圖添加一個圖像,它創建的PDF文件是0 kb,並已損壞。我一直呆在這裏幾個小時,仍然無法找到我的代碼中有什麼問題。我只想在我的pdf文件中添加圖像。任何幫助,將不勝感激。謝謝。PDF文件在IText中添加圖像時變爲0 kb

public class PDFDisplay { 

public static void generatePDF(PassengerBean passengerBean) throws DocumentException, MalformedURLException, IOException { 
    Document document = new Document(); 

    try { 
     final Chunk NEWLINE = new Chunk("\n"); 
      PdfWriter.getInstance(document, 
       new FileOutputStream("C:\\sample.pdf")); 

      document.open(); 

      Image img = Image.getInstance("image/mrt.jpg"); 
      document.add(new Paragraph("Sample 1: This is simple image demo.")); 
      document.add(img); 


      String hr = "-----------------------------------------------------------"; 
      String spacer = " "; 
      String name = "Passenger Name: " + passengerBean.lname + "," + " " + passengerBean.fname; 
      String dest = "Destination: " + passengerBean.dest + " STATION"; 
      String stopno = passengerBean.stop; 
      double fare = passengerBean.fare; 
      String fare1 = "Fare: PHP" + " " + String.valueOf(fare); 
      String ccnum = "CREDIT CARD NUMBER: " + " " + "************" + passengerBean.ccnum.substring(Math.max(0, passengerBean.ccnum.length() - 4)); 

      Paragraph para8 = new Paragraph(32); 
      para8.setSpacingBefore(100); 
      para8.setSpacingAfter(10); 
      para8.add(new Chunk(spacer)); 
      document.add(para8); 

      Paragraph para9 = new Paragraph(32); 
      para9.setSpacingBefore(100); 
      para9.setSpacingAfter(10); 
      para9.add(new Chunk(hr)); 
      document.add(para9); 

      // Setting paragraph line spacing to 32 
      Paragraph para1 = new Paragraph(32); 
      para1.setSpacingBefore(5); 
      para1.setSpacingAfter(10); 
      para1.add(new Chunk(name)); 
      document.add(para1); 

      Paragraph para2 = new Paragraph(); 
      para2.setSpacingAfter(10); 
      para2.add(new Chunk(dest)); 
      document.add(para2); 

      Paragraph para3 = new Paragraph(); 
      para3.setSpacingAfter(10); 
      para3.add(new Chunk(stopno)); 
      document.add(para3); 

      Paragraph para4 = new Paragraph(); 
      para4.setSpacingAfter(10); 
      para4.add(new Chunk(fare1)); 
      document.add(para4); 

      Paragraph para5 = new Paragraph(); 
      para5.setSpacingAfter(10); 
      para5.add(new Chunk(ccnum)); 
      document.add(para5); 


      document.close(); 



     } catch (DocumentException e) { 
      e.printStackTrace(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
} 
} 
+0

您是在IDE調試器中逐行執行一行代碼嗎?你發現了什麼? – 2015-03-25 06:56:03

+0

@JimGarrison,是的,我已經嘗試過調試器。這似乎沒有錯,或者我只是錯過了一些東西。 – Gelly 2015-03-25 07:10:21

回答

1

您可能無法獲取圖像。使用

System.out.print(img.getUrl()); 

我已經測試你的代碼,以我的本地和輸出其提供適當的PDF文件 嘗試你的圖像打印網址。

+0

就是這樣!我忘了將圖像放在工作區內而不是放在eclipse文件夾中。我太傻了。感謝你的幫助! – Gelly 2015-03-25 07:59:41

+0

如果你想使用相對路徑,那麼你必須遵循這個, String current = new java.io.File(「。」).getCanonicalPath(); Image img = Image.getInstance(current +「\\ src \\ image \\ mrt.jpg」); – 2015-03-25 08:03:31