2015-03-25 68 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

相关问题