3

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.");

詳細をお知らせいただく必要がある場合はお知らせください。

4

2 に答える 2

6

次のコードを使用して、次のコードで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()関数を使用できるオプションはありますか。

于 2013-12-30T13:00:58.347 に答える
2

私はあなたがを使用していると仮定しています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);
于 2013-03-11T22:56:03.800 に答える