2013-03-08 74 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);)
  • 如果它是一个可见的签名,请确保第二个签名在视觉上位于不同位置
相关问题