Я пытаюсь создать PDF из Html с помощью iText и Flying Saucer. Я использовал различные методы, предложенные для SO, чтобы включить DocumentBuilder
разобрать быстро.Flying Saucer - ITextRenderer createPdf очень медленно
Однако 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();
}
Ответы на этот вопрос может помочь: [ссылка] (http://stackoverflow.com/questions/5431646/is-there-any-way-improve-the-performance-of-flyingsaucer) – Edd
В мой случай, загружая больше css (например: bootstrap.css) и образы, вызывающие задачу layout() медленнее. – YROjha
Вы нашли решение? – s1moner3d