我想把一个html的内容转化成为图片,在本地win是好的,但是在linux上总是乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想把一个html的内容转化成为图片,在本地win是好的,但是在linux上总是乱码相关的知识,希望对你有一定的参考价值。

代码如下:
htmlImageGenerator imageGenerator = new HtmlImageGenerator();
String table = "<table><tr><td>中国</td></tr></table>";
imageGenerator.loadHtml(table);
imageGenerator.getBufferedImage();

String realPath = application.getRealPath("upload/picture/test.png");
imageGenerator.saveAsImage(realPath);

我使用locale查看了linux上的编码现实的是zh_CN.UTF8,已经纠结了一个星期了,请高手指点。
生成图片以后在linux的图片显示为如上所示。

至少上传一下怎么个乱码的抓图吧?
一般来说,要么是字体设置不对,要么就还是编码不对。
看看怎么个乱码的图片,一般应该能看出来到底是字体的问题还是编码的问题。
当然,这是基于经验的分析。追问

显示为这样

追答

方块一般是没字体或者字体设置有问题。

追问

也就是说有可能是服务器上没有对应的汉字的字符集是吗?但是我测试过,使用FileOutPutStream测试写入一个txt文件,字符是正常的。

追答

不是,字符集是一方面。
一般来说 Linux 下面的方块是字体渲染程序没有找到对应字符的渲染数据而不能渲染出这个字符对应的图像。也就是没有字体文件。
如果是字符集没有,那么一般是输出混乱(被识别为别的字符)。

不过这个主要还是基于经验。并不绝对是这样。
如果可以,你可以让他渲染大量的文字,如果有乱码。就是字符编码错误,如果没有乱码而全都是方块,那就是字体文件没有。

不过注意,你要先确保你的字体渲染程序支持 cjk 输出。

追问

哦,我们现在请服务器维护的同事帮助我们添加了部分字体,也有可能不全,您说的需要确保支持cjk是什么东东,现在问题依旧没有解决。

追答

添加字体是一方面,你还要调用啊。还有编码转换也要注意,不过如果编码错误,你输出大量的中英文混排是可以看到乱码或者文字显示错误的情况。如果仅仅是字体,那么你应该中文都是方块,英文一般应该能正常显示。这种分析都是要看经验感觉来的……

你还是先试试普通的英文如何吧。

cjk 是 中-日-韩 的意思,也就是东方字体编码的支持,这三个语言的实现方式是现在基本是统一的支持方法。

追问

英文都没有问题,就是中文有问题,因为使用的是第三方的包Html2image所以我也不确定他使用的是什么字体来处理中文的。

追答

这个只能看这个第三方的东西有没有设置了。
话说 Linux 下面很多软件依然这么坑爹啊……

参考技术A 在ubuntu下用工具enconv转换你的源文件编码到utf8即可(标准的html是不推荐指定字体的!如果你指定的是某不兼容utf8的字体,你必须修改你的源文件使之使用兼容utf8的字体)追问

这个实现不了,我们现在的html是直接充数据库中取出来的,不能修改起源文件

追答

请你暂存到硬盘上再处理

参考技术B 请问这个后来是怎么解决的啊,我也遇到这个问题,谢谢! 参考技术C 大神,找到解决的办法了吗?

以上是关于我想把一个html的内容转化成为图片,在本地win是好的,但是在linux上总是乱码的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net 将HTML中通过dom-to-image.js标签div内的内容转化为图片保存到本地

我想把QQ空间里的留言板整个网页全部下载到本地电脑,包括下一页的留言,和下下页的内容

win10 UWP Markdown 含源码

python将PNG格式的图片转化成为jpg

Python | 图片转pdf

Win10 IIS本地部署网站运行时图片和样式不正常?