Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA:将输入或输出流传递给ITextRenderer(xhtml到pdf转换器)_Java_Itext_Inputstream_Outputstream_Pdf Conversion - Fatal编程技术网

JAVA:将输入或输出流传递给ITextRenderer(xhtml到pdf转换器)

JAVA:将输入或输出流传递给ITextRenderer(xhtml到pdf转换器),java,itext,inputstream,outputstream,pdf-conversion,Java,Itext,Inputstream,Outputstream,Pdf Conversion,我想将我的XHTML文本转换为PDF。我将其转换为FileOutputStream,但我找不到方法将其作为输入传递到ITextRenderer。这可能吗?怎么可能 守则: String finalXhtml=xhtmlparser(xmlText); ByteArrayInputStream finalXhtmlStream = new ByteArrayInputStream(finalXhtml.getBytes()); String HTML_TO_PDF = "ConvertedFi

我想将我的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.");

如果我需要提供更多详细信息,请告诉我。

我假设您使用的是
飞碟。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();
当然,您也可以这样做,同时跳过inputstream:

renderer.setDocumentFromString(finalXhtml);

我使用以下代码将HTML数据导出为PDF,代码如下:

renderer.setDocumentFromString(htmls.toString());
renderer.layout();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + ".pdf\"");
renderer.createPDF(outputStream);
renderer.createPDF(fos);
现在,我使用内联CSS使用样式生成PDF,但是否有任何选项可以通过加载外部CSS使用setDocumentFromString()函数。

renderer.loadDocument()获取文件,但我想传递ByteArrayInputStream或ByteArrayOutputStream,我可以这样做吗?