# wkhtmltopdf
# 一、背景
公司有基于HMTL代码转PDF文件的需求,使用了一款名为wkhtmltopdf的开源软件。但是所使用的0.12.4版本存在一些中文字转换Bug。相关Issues:Wrong Japanese/Chinese word is converted in bookmarks.、Incorrect Chinese Characters is converted in PDF outline. 。并在上面Issues中找到了解决问题的办法,即修改wkhtmltopdf源码所依赖qt的源码并重新安装。
# 二、解决问题
# 1、下载源码
git clone -b '0.12.4' git@github.com:wkhtmltopdf/wkhtmltopdf.git --recursive
# 2、修改qt源码
diff --git a/src/gui/painting/qprintengine_pdf.cpp b/src/gui/painting/qprintengine_pdf.cpp
index f6d6e1cc34..862984f6ed 100644
--- a/src/gui/painting/qprintengine_pdf.cpp
+++ b/src/gui/painting/qprintengine_pdf.cpp
@@ -1694,7 +1694,10 @@ void QPdfEnginePrivate::printString(const QString &string) {
for(int j=0; j < 2; ++j) {
if (part[j] == '(' || part[j] == ')' || part[j] == '\\')
array.append('\\');
- array.append(part[j]);
+ if (part[j] == '\r' )
+ array.append("\\r");
+ else
+ array.append(part[j]);
}
}
array.append(")");
- 修改源码
git apply fixed_incorrect_chinese_characters.patch.txt
# 3、编译源码
git clone git@github.com:wkhtmltopdf/packaging.git
使用packaging docker编译
- 构建镜像
./build docker-images jessie-amd64
- 编译
./build package-docker jessie-amd64 ../wkhtmltopdf