使用Flying Saucer将xhtml字符串转换为PDF的最简单方法是什么?

Ste*_*hen 6 pdf xhtml rendering flying-saucer xhtmlrenderer

我已经使用飞碟一段时间了,结果非常棒.

我可以像这样通过uri设置文档

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(xhtmlUri);
Run Code Online (Sandbox Code Playgroud)

这很好,因为它将解析相对于给定URI的所有相对css资源等.但是,我现在正在生成xhtml,并希望将其直接呈现为PDF(不保存文件).ITextRenderer中的相应方法似乎是:

private Document loadDocument(final String uri) {
    return _sharedContext.getUac().getXMLResource(uri).getDocument();
}

public void setDocument(String uri) {
    setDocument(loadDocument(uri), uri);
}

public void setDocument(Document doc, String url) {
    setDocument(doc, url, new XhtmlNamespaceHandler());
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我现有的代码只给出了uri,ITextRendererDocument为我创建了这个代码.

Document从格式化的xhtml字符串创建最短的方法是什么?我更喜欢使用现有的Flying Saucer库,而不必导入另一个XML解析jar(只是为了一致的错误和功能).

Ste*_*hen 5

以下作品:

Document document = XMLResource.load(new ByteArrayInputStream(templateString.getBytes())).getDocument();
Run Code Online (Sandbox Code Playgroud)

以前,我曾尝试过

final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
dbf.setValidating(false);

final DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
Document document = documentBuilder.parse(new ByteArrayInputStream(templateString.getBytes()));
Run Code Online (Sandbox Code Playgroud)

但是它失败了,因为它试图从http://www.w3.org下载HTML docType (它为java库返回503).