2011-03-14 103 views
1

我使用以下将HTML转换成PDF:FlyingSaucer:将HTML文档转换为PDF,忽略外部CSS?

InputStream convert(InputStream fileInputStream) { 

     PipedInputStream inputStream = new PipedInputStream() 
     PipedOutputStream outputStream = new PipedOutputStream(inputStream) 
     new Thread({ 
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
      factory.setNamespaceAware(false); 
      DocumentBuilder builder = factory.newDocumentBuilder(); 
      Document document = builder.parse(fileInputStream) 

      ITextRenderer renderer = new ITextRenderer() 
      renderer.setDocument(document, "") 
      renderer.layout() 
      renderer.createPDF(outputStream) 
     }).start() 

     return inputStream 
    } 

从文档,显然我应该能够在某个地方设置了“用户代理”解析器,但我不知道在哪里,究竟。任何人都知道如何忽略文档中的外部CSS?

回答

1

不一样的问题,但我的一个答案将在这里工作过:Resolving protected resources with Flying Saucer (ITextRenderer)

重写此方法:

public CSSResource getCSSResource(String uri) { 
    return new CSSResource(resolveAndOpenStream(uri)); 
} 

public CSSResource getCSSResource(String uri) { 
    return new CSSResource(new ByteArrayInputStream([] as byte[])); 
} 
+0

我怎么没解决?我试图重新调用null,但是这给出了一个nullpointerexception。 显示java.lang.NullPointerException \t在org.xhtmlrenderer.context.StylesheetFactoryImpl.parse(StylesheetFactoryImpl.java:93) – 2011-03-15 17:32:24

+0

是的,因为你更新你有一个空的InputStream返回CSSResource。 – Adam 2011-03-15 19:07:41