2011-02-08 186 views
2

我试图将HTMLl文件转换为PDF。为此,我正在使用iText。如果HTML在其正文中有一些图像,则iText无法将该图像放入PDF中,并引发以下异常。使用iText将HTML转换为PDF

ExceptionConverter: java.io.FileNotFoundException: D:\cid:[email protected] (The system cannot find the file specified).

如果HTML在其身体的一些形象,是有可能读出的图像,使之作为附件到PDF文件?这里是我的源代码(Truncate.java):

import java.io.BufferedReader; 
import java.io.DataInputStream; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

import com.lowagie.text.Document; 
import com.lowagie.text.DocumentException; 
import com.lowagie.text.Element; 
import com.lowagie.text.Paragraph; 
import com.lowagie.text.html.simpleparser.HTMLWorker; 
import com.lowagie.text.pdf.PdfWriter; 

public class Truncate { 
    public static void main(String[] args) throws DocumentException { 
     // TODO Auto-generated method stub 
     FileReader fr = null; 
     Document document = new Document(); 
     document.open(); 
     PdfWriter writer = null; 
     try { 
      String file_name = "C:\\Documentum\\Viewed\\911.htm"; 
      fr = new FileReader(file_name); 
      PdfWriter.getInstance(document, System.out); 
      writer = PdfWriter.getInstance(document, new FileOutputStream(
        "C:\\Documentum\\Viewed\\RH\\RH.pdf")); 
      document.add(new Paragraph("RH Mail")); 
      ArrayList htmlContentList = HTMLWorker.parseToList(fr, null); 

      //fetch the html content line by line 
      for (int htmlDataCntr = 0; htmlDataCntr < htmlContentList.size(); htmlDataCntr++) { 
       Element htmlDataElement = (Element) htmlContentList 
         .get(htmlDataCntr); 
       document.add(htmlDataElement); 
      } 
      fr.close(); 
      document.close(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     catch(Exception e){ 
      System.out.println(e); 
     } 
    } 
} 

回答

1

从附件名称看来,您的html似乎是从电子邮件中导出的。确保你应该以不同的方式解析电子邮件,并将图像与其他内容区分开来。

编辑:正如我所说,我认为问题在上游。 cid表示法对应于邮件中的嵌入式图像(例如,参见here)。因此,如果upsteam邮件解析器不会将图像文件作为附件提供给您,您无法对此做任何事情。

+0

是的。你是绝对正确的。我们有供应商提供的API(Documentum),它将电子邮件转换为HTML文档。然后,我们使用iText将此HTML文档解析/转换为PDF文档。虽然我们试图解析这个HTML文档,但我们正在得到例外。 – balaji 2011-02-08 11:43:05