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,ITextRenderer并Document为我创建了这个代码.
Document从格式化的xhtml字符串创建最短的方法是什么?我更喜欢使用现有的Flying Saucer库,而不必导入另一个XML解析jar(只是为了一致的错误和功能).
以下作品:
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).