iTextとFlyingSaucerを使用してHtmlからPDFを生成しようとしています。すばやくDocumentBuilder
解析できるように、SOで提案されているさまざまな手法を使用しました。
ただし、ITextRenderer createPdf(outputstream)
ボトルネックになっています。それは非常に遅く、プロセスの速度を改善する方法がわかりません。
どんな助けでも本当にありがたいです。
private Document getDocument(String htmlContent) throws Exception
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//For faster document.
factory.setNamespaceAware(false);
factory.setValidating(false);
factory.setFeature("http://xml.org/sax/features/namespaces", false);
factory.setFeature("http://xml.org/sax/features/validation", false);
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setEntityResolver(FSEntityResolver.instance());
return builder.parse(new ByteArrayInputStream(htmlContent.getBytes()));
}
public void printHtmlToPdf(final String htmlContent, String tempFile, String title) throws Exception
{
Document document = getDocument(htmlContent);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(document, null);
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(tempFile));
renderer.layout();
renderer.createPDF(outputStream);
outputStream.close();
}