我有 GWT、ext-GWT Web 项目,采用 utf-8 字符集。我还在 html 文件中添加了 utf-8 字符集。
此外,我需要创建一些 pdf 报告。因此,我编写了一个特殊的 servlet,它采用模板 html 文件,添加一些信息(以本地语言)并将新的生成 html 文件转换为 wkhtmltopdf 的 pdf 文件。 .
现在,当我尝试将生成的 html 文件(也有 <meta charset="UTF-8">
)转换为 pdf 文件时,我从客户端代码发送到 servlet 的本地语言信息(一些字符串)在结果 pdf 文件中被替换为“?”黑色菱形中的符号。
为了解决这个问题,我向 Process Builder 添加了一些参数,例如 "--encoding"
"utf-8"
:
private void ConvertHTMLtoPDF(String sConvertationProgramm, String sHTML, String sPDF)
{
try {
ProcessBuilder pb = new ProcessBuilder(sConvertationProgramm, "--encoding", "utf-8", sHTML, sPDF);
Process process = pb.start();
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}
但还是没有任何效果。同时我只在tomcat服务器上有这些符号,在jetty上没有同样的问题。
<小时/>那么,问题出在哪里,是在向服务器发送本地信息时(导致模板 html 文件中的本地语言的另一个信息正确显示)还是在服务器端写入/转换时?
有人有什么建议吗?谢谢
最佳答案
我发现了我的问题。我必须向大家道歉,因为我的问题在于编写新生成的html,所以不要使用这个:
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
BufferedWriter bw = new BufferedWriter(new FileWriter(fHTML));
我必须使用这个:
BufferedReader br = new BufferedReader(new InputStreamReader(fis,"UTF8"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fHTML), "UTF-8"));
所以,问题出在读/写 html 文件上。
关于java - 在Java中使用wkhtmltopdf将pdf编码为utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17042539/