java - 在Java中使用wkhtmltopdf将pdf编码为utf-8

标签 java gwt gxt wkhtmltopdf

我有 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/

相关文章:

gwt - 使用 GWT 平台将参数从一个演示者传递到另一个演示者

java - GWT 2.7.0 Super Dev Mode,更改后不要重新编译服务器端代码

java - 如何处理GXT 2.2网格中单元格的点击?

java - 希望使用 Java 创建随机数组

java - 应用程序错误:java: module not found: javafx.

java - Dropwizard Metrics 获取每个 REST 请求的平均项目数

java - Hibernate + GWT 异常

GWT future 计划

css - 如何将CSS添加到treegrid GXT 3中的选定行

java - 在 java 代码中,从 java.util.List 获取 scala.Iterable