使用 Flying Saucer 将 xhtml 字符串转换为 PDF 的最简单方法是什么?
我使用Flying Saucer已经有一段时间了,效果非常好。
我可以像这样通过 uri 设置一个文档,
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(xhtmlUri);
这很好,因为它将解析相对于给定 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());
}
如您所见,我现有的代码仅提供 uri,而 ITextRenderer
负责创建 Document 对我来说。
从格式化的 xhtml 字符串创建 Document
的最短方法是什么? 我更喜欢使用现有的 Flying Saucer 库,而不必导入另一个 XML 解析 jar(只是为了一致的错误和功能)。
I've been using Flying Saucer for a while now with awesome results.
I can set a document via uri like so
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(xhtmlUri);
Which is nice, as it will resolve all relative css resources etc relative to the given URI. However, I'm now generating the xhtml, and want to render it directly to a PDF (without saving a file). The appropriate methods in ITextRenderer seem to be:
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());
}
As you can see, my existing code just gives the uri and ITextRenderer
does the work of creating the Document
for me.
What's the shortest way of creating the Document
from my formatted xhtml String? I'd prefer to use the existing Flying Saucer libs without having to import another XML parsing jar (just for the sake of consistent bugs and functionality).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
以下作品:
以前,我曾尝试过,
但失败了,因为它尝试从 http://www.w3 下载 HTML docType .org(对于 java 库返回 503)。
The following works:
Previously, I had tried
but that fails as it attempts to download the HTML docType from http://www.w3.org (which returns 503's for the java libs).
我使用以下内容没有问题:
这里的主要区别是传入 null URI,并且还为 DocumentBuilder 提供了实体解析器。
I use the following without problem:
The key differences here are passing in a null URI, and also provided the DocumentBuilder with an entity resolver.