我正在使用此代碼將 docx 轉換為 pdf:
try {
PdfOptions options = PdfOptions.create();
PdfConverter.getInstance().convert(firstDoc, out, options);
} catch (IOException ex) {
throw new IllegalArgumentException("Conversion failed.");
}
return prepareResponseEntity(out);
它在 Windows 上運行良好,但是當它在 docker 上運行時,轉換會跳過諸如“???????ū?”和西里爾字母之類的符號。
我嘗試將字體嵌入到模板中。將 .docx 模板更改為 Liberation 字體“sans”并匯入其 'ttf 檔案,但沒有任何效果。我無法安裝 Microsoft 字體,因為此應用程式用于商業目的。
我有哪些選擇?
uj5u.com熱心網友回復:
我找到了一個解決方案:
try {
PdfOptions options = PdfOptions.create();
options.fontProvider((familyName, encoding, size, style, color) -> {
try {
BaseFont baseFont = BaseFont.createFont("fonts/LiberationSans-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
return new Font(baseFont, size, style, color);
} catch (Exception e) {
throw new IllegalArgumentException("Font was not found" e);
}
});
PdfConverter.getInstance().convert(firstDoc, out, options);
} catch (IOException ex) {
throw new IllegalArgumentException("Conversion failed");
}
return prepareResponseEntity(out);
您還需要將字體 .ttf 檔案添加到資源檔案夾中,它可以作業!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323943.html
標籤:爪哇 pdf apache-poi 文档
上一篇:itext5簽名PDF僅包含影像
下一篇:如何在pdf輸出中部分斜體?