我想将XHTML文本转换为PDF。我将其转换为FileOutputStream,但找不到找到将其作为输入传递给ITextRenderer的方法。那有可能吗?

代码 :

String finalXhtml=xhtmlparser(xmlText);
ByteArrayInputStream finalXhtmlStream = new ByteArrayInputStream(finalXhtml.getBytes());

 String HTML_TO_PDF = "ConvertedFile.pdf";
 OutputStream os = new FileOutputStream(HTML_TO_PDF);

  ITextRenderer renderer = new ITextRenderer();
      //   renderer.loadDocument(finalXhtmlStream);  i can pass a file here can i pass an input or output stream ?
         renderer.layout();
         renderer.createPDF(os) ;
         os.close();
   System.out.println("done.");

注意:我可以将文件传递给ITextRenderer,如下所示:
 String File_To_Convert = "report.xhtml";
 String url = new File(File_To_Convert).toURI().toURL().toString();
 String HTML_TO_PDF = "ConvertedFile.pdf";
 OutputStream os = new FileOutputStream(HTML_TO_PDF);

 ITextRenderer renderer = new ITextRenderer();
     renderer.setDocument(url);
     renderer.layout();
     renderer.createPDF(os);
 os.close();
   System.out.println("done.");

请让我知道是否需要提供更多详细信息。

最佳答案

我假设您正在使用Flying Saucer。 ITextRenderer具有执行类似操作的方法:

public void setDocumentFromString(String content) {
    InputSource is = new InputSource(new BufferedReader(new StringReader(content)));
    Document dom = XMLResource.load(is).getDocument();

    setDocument(dom, null);
}

修改代码后,您想要的内容将如下所示:
String finalXhtml=xhtmlparser(xmlText);
ByteArrayInputStream finalXhtmlStream = new ByteArrayInputStream(finalXhtml.getBytes());

String HTML_TO_PDF = "ConvertedFile.pdf";
OutputStream os = new FileOutputStream(HTML_TO_PDF);

Document document = XMLResource.load(finalXhtmlStream).getDocument();

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(document, null);
renderer.layout();
renderer.createPDF(os) ;
os.close();

当然,您也可以这样做,并跳过所有输入流:
renderer.setDocumentFromString(finalXhtml);

09-05 12:06