2013-03-08 103 views
1
import java.io.*; 
import com.lowagie.text.DocumentException; 
import org.xhtmlrenderer.pdf.ITextRenderer; 

public class FirstDoc { 

    public static void main(String[] args) 
     throws IOException, DocumentException { 

     String url= "http://www.facebook.com"; 

     String outputFile = "firstdoc.pdf"; 
     OutputStream os = new FileOutputStream(outputFile); 

     ITextRenderer renderer = new ITextRenderer(); 
     renderer.setDocument(url); 
     renderer.layout(); 
     renderer.createPDF(os); 

     os.close(); 
    } 
} 

但我得到這個錯誤錯誤:'文件過早結束'。

> ERROR: 'Premature end of file.' 
Exception in thread "main" org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException: Premature end of file. 
at org.xhtmlrenderer.resource.XMLResource$XMLResourceBuilder.createXMLResource(XMLResource.java:191) 
at org.xhtmlrenderer.resource.XMLResource.load(XMLResource.java:71) 
at org.xhtmlrenderer.swing.NaiveUserAgent.getXMLResource(NaiveUserAgent.java:205) 
at org.xhtmlrenderer.pdf.ITextRenderer.loadDocument(ITextRenderer.java:102) 
at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:106) 
at com.test.java.FirstDoc.main(FirstDoc.java:17) 

Caused by: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: Premature end of file. 
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:720) 
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313) 
at org.xhtmlrenderer.resource.XMLResource$XMLResourceBuilder.createXMLResource(XMLResource.java:189) 
... 5 more 
Caused by: org.xml.sax.SAXParseException: Premature end of file. 
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231) 
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:637) 
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:708) 
... 7 more 

回答

4

最有可能http://www.facebook.com不會返回一個HTML文檔,而是一個HTTP重定向或什麼的,大概ITextRenderer不支持。

您應該通過測試一些URL來驗證這一點,該URL不會做重定向。

0

如果在使用IText將第二個簽名添加到pdf文件時出現文件錯誤的提前結束,請確保您正在做的事情正確。

  • 第二簽名應具有不同的名稱比第一個
  • 簽名應以附加模式進行添加。例如:(PdfStamper.createSignature(reader,os,'\ 0',null,append);
  • 確保pdf認證級別應該支持添加第二個簽名字段,例如:(appearance.setCertificationLevel(PdfSignatureAppearance。 NOT_CERTIFIED);)
  • 如果它是一個可見的簽名,請確保第二個簽名在視覺上位於不同位置
相關問題