用 flying saucer 生成pdf文件 Css及html的问题

xiaochun023 xiaochun023 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用 flying saucer 生成PDF文件,因为要生成文章,而文章是由tinymce发布的。可能有些文章发布出去后格式有问题,比如说标签不规范,有的没有闭合。

这样 flying saucer 就会报错
org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException: The entity "nbsp" was referenced, but not declared.
org.xhtmlrenderer.resource.XMLResource$XMLResourceBuilder.createXMLResource(XMLResource.java:191)
org.xhtmlrenderer.resource.XMLResource.load(XMLResource.java:71)

最让人头疼的是这个xhtmlrenderer不认   连这个空格他都不认识,我真是郁闷了。这还让人活吗?

如何可以忽略 文章内容里面的代码不规范?

String url=webappDomain+"/pdfView.do";
String outputFile = webappRoot+"/download/xxx/"+pdfPath+"/";
File f = new File(outputFile);
if(!f.exists()) {
f.mkdirs();
}
outputFile +=diaryBookName+".pdf";
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument("http://localhost:8080/pdfView.do");

// 解决中文支持问题
ITextFontResolver fontResolver = renderer.getFontResolver();
if(webappDomain.indexOf("ai9475") > -1) {
fontResolver.addFont("/usr/share/fonts/chinese/TrueType/SimSun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
}else {
fontResolver.addFont("C:/Windows/fonts/SimSun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
}


// 解决图片的相对路径问题
// renderer.getSharedContext().setBaseURL("file:/E:/");

renderer.layout();
renderer.createPDF(os);

os.close();
...全文
评论 6
收藏 已收藏
分享
返回顶部
xiaochun023
Java 51,407 成员 86,135 内容