相关文章推荐
行走的丝瓜  ·  react.js - ...·  1 年前    · 
奋斗的企鹅  ·  PyCharm ...·  1 年前    · 
ITextFontResolver fontResolver = renderer.getFontResolver();   
fontResolver.addFont("C:/Windows/fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 

若不定义呢 ?

自然显示不了中文,很多情况下,我们不一定在html中显示指定CSS使用字体。或者html内容就是一段字符串。

怎么办,自然是修改xhtmlrenderer中PDF字体定义部分了。

附件中有修改后的xhtmlrenderer核心包,已经对中文自动支持。

客户端代码补上:

	public static void main(String[] args) throws Exception {
		String outputFile = "f:/teste/html/firstdoc.pdf";
		OutputStream os = new FileOutputStream(outputFile);
		ITextRenderer renderer = new ITextRenderer();
		String html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head><body><p>你好啊!</p><p>这里加入图片</p><p><img src=\"hnd3.jpg\" width=\"139\" height=\"102\" /></p><p><img src=\"hnd3 (2).jpg\" width=\"140\" height=\"95\" /></p><p>测试而已!</p><p>hello the world~</p></body></html>";
		renderer.setDocumentFromString(html);
		// 解决图片的相对路径问题
		renderer.getSharedContext().setBaseURL("file:/F:/teste/html/");
		renderer.layout();
		renderer.createPDF(os);
		os.close();
		System.out.println("生成成功!");

 我这边代码拷贝自楼主,修改一下,如上,没有在html中定义样式。中文显示正常。

需要 iTextAsian.jar,以及修改后的源代码包。

 附件中有生成PDF

修改 xhtmlrenderer 代码如下:

找到 org.xhtmlrenderer.pdf.ITextOutputDevice 类,找到

cb.setFontAndSize(_font.getFontDescription().getFont(), _font.getSize2D() / _dotsPerPoint);
try {
     cb.setFontAndSize(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), _font.getSize2D()/_dotsPerPoint);
} catch (Exception e) {
     System.out.println("ITextOutputDevice.java drawString方法字体设置错误!");
     e.printStackTrace();

 时间有限,暂时如是之。

1、下载宋体字体,放入工程路径。​​​​​​http://www.font5.com/download_2.php?id=10712&designated=1257835742&address=0 2、添加jar <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependency> <groupId>com.itex.. 首先,当然是找到能够解析PDF的完美组件,百度和谷歌不约而同的告诉我们。IText是王道。而目前开源的组件中,Itext的确是一个First Choice,如果各位单纯是做把图片转成PDF或者自己写了Velocity或者FreeMarker模板生成了HTML是非常推荐直接用Itext来进行的。 下面就是用Flying Saucer(xhtmlrendere)来实现的代码: loading...... java项目中用到了html转pdf的需求,现在写一个自己认为最优方案的总结,虽然还是有一些小的bug为了保证中文的支持需要在被转换的html添加body的添加中文字体样式,保持这个字体和后边转换pdf的字体一致就可以了,不需要必须是SimSun字体body{font-family:SimSun;}下面放上jar包的引用pom注意:org.xhtmlrenderer.core-renderer.R... 解决思路: 1.使用FreeMaker模板index.ftl渲染动态数据(title和二维码链接作为动态入参) 2.添加动态数据的模板代码通过xhtmlrenderer转换成图片 3.上传图片至图片服务器,获取图片url 拆分实现步骤: 1.使用FreeMaker模板index.ftl渲染动态数据(title和二维码链接作为动态入参) 1.1 引入FreeMaker依赖 <dependency> 来源:xhtmlrendererhtml转换成pdf,完美css,带图片,手动分页,解决内容断开的问题 - 煮过的花朵 - 博客园 之前用itext7将html导出为pdf,比较方便,代码较少,而且支持base64的图片。但是itext7是收费的,所以换成了xhtmlrendererxhtmlrenderer自动引入依赖包itext2.0.8,而且不能再引入其他版本的itext,因为itext2.0.8是已经被废弃的,里面的很多方法在新版本已经没有了。 itext导出pdf最重要的4个难点: <groupId>org.xhtmlrenderer</groupId> <artifactId>core-renderer</artifactId> <version>R8pre2</version> 最近在用echarts时,遇见文字及图例失真、不清晰问题,特此记录 // 方法一: this.chart = this.$echarts.init(document.getElementById('supplierContentChart'), null, {renderer: 'svg'}) // 采用svg渲染,比canvans清晰度高 // 方法二: this.chart = this.$echarts.init(document.getElementById('supplierContentCha