2011-03-14 101 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