我正在尝试使用 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 了
有人可以帮忙解决这个问题吗?
我怀疑您的代码缺少配置。 SimSun-ExtB 字体需要设置为扩展字符的后备字体。你可以尝试像下面这样设置吗?
pd4ml.setDefaultTTFs("SimSun", "SimSun-ExtB");
或者,如果问题仍然无法解决,您可以尝试使用第三方 API 服务,例如 PageSnap.co,不用担心渲染问题。