itextxmlworker转换html生成pdf文件

itextxmlworker转换html⽣成pdf⽂件转载:blog.sina/s/blog_71d09f5f0101bi8g.html
⼯作需要,把⼀些表格以pdf格式输出以供打印。查到itext是java的开源⽣成pdf的⼯具包,看了使
⽤后感觉好复杂,竟然要把表格⽤itext语法重新绘制到pdf⽂档中。再查直接转换html到pdf的⼯
具,发现有flying-saucer,看了下感觉更新不是很及时,⼜看了Ireport,感觉是从数据库导出多项
数据成报表的,和我要转换html table的思路不⼀致。后来查到itext有个独⽴的xmlworker就做这件
事情,想着itext分属出来的应该和itext的集成⽐较好,就选了这个。
itextpdf-5.3.5,xmlworker5.4.0,以及提供亚洲字体的extrajars-2.2中的itext-asian.jar
查了些资料,参考:
他的做法是定义⾃⼰的parser, MyXMLParser p=new MyXMLParser(worker);并且为了⽀持中⽂,
直接修改l.xml.pipeline.html.HtmlPipeline的源代码,感觉很黄很暴⼒。⼜去英⽂⽹站⼀通检
索,终于得到了⼀些启发,没有留存,就不表出处了。其中提到关键的⼀点说以前可以⽤XMLWorkerFontProvider来提供相应的字体,按照这个思路来说,也是可以提供中⽂字体进来的。
信息采集研究了⼀下,选定l.xml.XMLWorkerHelper来处理html流,传⼊⾃定义的
fontProvider来提供中⽂字体。
⽰例:
class myFontProvider extends XMLWorkerFontProvider {
8510w
@Override
public Font getFont(final String fontname, final String encoding,
final boolean embedded, final float size, final int style,
final BaseColor color) {
BaseFont bf = null;
try {
bf = ateFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);hanhan
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
医用灯泡
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Font font = new Font(bf, size, style, color);
font.setColor(color);
return font;
}
}
处理代码:
Document document = new Document(PageSize.A4, 30, 30, 30, 30);
document.setMargins(30, 30, 30, 30);2011国际大学英辩论会
PdfWriter pdfwriter;
pdfwriter = Instance(document,
document.open();北京龙源冷却技术有限公司
XMLWorkerHelper wh = Instance();
InputStream cssInput = null;
wh.parseXHtml(pdfwriter, document, input, cssInput,
new myFontProvider());
document.close();
问题解决了,不需要修改源代码,重载getFont来提供中⽂字体,改的还是⽐较粗暴,只提供了宋体⼀种字体,感兴趣的可以根据fontname提供多种字体,时间所限就没再尝试了。html流要写的标准,有不合标准的会报错,具体看itext说明⽀持的xml标准即可。如果html流不是⾃⼰⽣成的,可以参考别⼈提到的⼀些转换⼯具,我看到有jtidy类似的⼯具,没研究过不做评述。

本文发布于:2024-09-22 11:29:34,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/292667.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字体   提供   提到   研究   启发
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议