Html 到 Pdf 转换后的 pdf 对于某些字符有“#”[重复]

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

我正在使用 openhtmltopdf 库将 HTML 转换为 PDF,但转换后的 PDF 使用“#”而不是“ı”、“ş”、“Ş”、“ç”、“Ç”、“Ö”等字符。我该如何解决?

Java代码:

ByteArrayOutputStream renderedPdfBytes = new ByteArrayOutputStream();
PdfRendererBuilder builder = new PdfRendererBuilder();
builder.withHtmlContent(htmlContent, "/");
builder.toStream(renderedPdfBytes);
builder.run();
renderedPdfBytes.close();
byte[] renderedPdf = renderedPdfBytes.toByteArray(); 

try (FileOutputStream fos = new FileOutputStream(pdfFile)) {
    fos.write(renderedPdf);
}

HTML内容:

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <span class="close-icon close"></span>
        <div class="modal-content">
            <div class="modal-header"><h2>İade Prosedürü 27.09.2023</h2></div>
            <div class="modal-body" style="margin-bottom: 50px;"><p>İade edilmek istenen.</p></div>
        </div>
    </body>
</html>

HTML 视图:

转换后的PDF视图:

java pdf-generation pdfbox html-to-pdf openhtmltopdf
1个回答
1
投票

如果您在使用 openhtmltopdf 库生成的 PDF 中遇到字符无法正确显示的问题,则可能与字体嵌入或字体支持有关。 您可以修改代码以包含具有适当字符支持的自定义字体。这是它的例子。

PdfRendererBuilder builder = new PdfRendererBuilder();
// Use Noto Sans font (or any other font with proper character support)
builder.useFont(() -> {
    try (InputStream inputStream = HtmlToPdfConverter.class.getResourceAsStream("/path/to/NotoSans-Regular.ttf")) {
        return FontUtil.createFont(inputStream);
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.