使用PD4ML无法渲染PDF中的几个汉字

问题描述 投票:0回答:1

我正在尝试使用 PD4ML 生成 PDF,但在渲染时很少有中文字符显示为?在输出文件中。

下面是我生成 PDF 的参考代码片段。

try {
            // Initialize PD4ML
            PD4ML pd4ml = new PD4ML();

            // Set page size and orientation (A4, landscape mode)
            pd4ml.setPageSize(PD4Constants.A4);
            pd4ml.changePageOrientation(PD4Constants.A4);
            pd4ml.useTTF("java:fonts", true);
            pd4ml.enableDebugInfo();
            // Set PDF output stream
            FileOutputStream fos = new FileOutputStream("D:\\output.pdf");

            // Define the HTML content (static)
            String htmlContent = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">  <meta charset=\"utf-8\"> <html><body>𨑳𠎀䁱         需要创建中文PDF</body></html>";

            // Convert HTML content to PDF
            pd4ml.render(new StringReader(htmlContent), fos);

            // Close output stream
            fos.close();

            System.out.println("PDF generated successfully.");

        } catch (Exception e) {
            e.printStackTrace();
        }

下面提到的字符引起了问题。

𨑳𠎀䁱

在社区中解决了以下问题 转换包含中文字符的 HTML 时出现 PD4ML 问题

我的 fonts.jar 中已经有 simsun.ttf 了

有人可以帮忙解决这个问题吗?

java pdf-generation cjk pd4ml
1个回答
0
投票

我怀疑您的代码缺少配置。 SimSun-ExtB 字体需要设置为扩展字符的后备字体。你可以尝试像下面这样设置吗?

pd4ml.setDefaultTTFs("SimSun", "SimSun-ExtB");

或者,如果问题仍然无法解决,您可以尝试使用第三方 API 服务,例如 PageSnap.co,不用担心渲染问题。

© www.soinside.com 2019 - 2024. All rights reserved.