gpt4 book ai didi

java - 使用 doc4j 创建的 PDF 无法正确呈现语言环境文本

转载 作者:行者123 更新时间:2023-11-30 11:12:58 32 4
gpt4 key购买 nike

我正在使用 docx4j 创建 pdf 文件,使用 docx 格式可以正确呈现语言环境语言,但使用 pdf# 替换为语言环境字符串。

在我看到的文档中

当使用 docx4j 创建 PDF 时,它只能使用它可用的字体。这些字体有两个来源:

->安装在电脑上的那些

->文档中嵌入的

请注意,Word 会自动执行字体替换。当您在 Word 中打开现有文档并选择特定字体的文本时,您在屏幕上看到的实际字体不会是功能区中报告的字体,如果它没有安装在您的计算机上或嵌入在文档中。要查看 Word 2007 是否替换字体,请进入 Word 选项 > 高级 > 显示文档内容,然后按“字体替换”按钮。

Word 的字体替换信息不适用于 docx4j。作为开发人员,您有 3 个选择:

->确保字体已安装或嵌入

->告诉 docx4j 使用哪种字体,或者

->允许 docx4j 回退到默认字体

要在文档中嵌入字体,请在安装了该字体的计算机上的 Word 中打开它(选中没有替换),然后转到 Word 选项 > 保存 > 在文件中嵌入字体

但这似乎不起作用。

下面是我的代码:

        Mapper fontMapper = new IdentityPlusMapper();

PhysicalFont font = PhysicalFonts.getPhysicalFonts().get(
"Comic Sans MS");

fontMapper.getFontMappings().put("Algerian", font);

template.setFontMapper(fontMapper);

PdfSettings pdfSettings = new PdfSettings();

org.docx4j.convert.out.pdf.PdfConversion conversion = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(
template);

OutputStream out = new FileOutputStream(f1);
conversion.output(out, pdfSettings);

上面代码字体是Algerain

任何帮助将不胜感激。

最佳答案

发布这个答案是因为我看到这个问题用 UTF 编码多次提出,希望这篇文章能有所帮助。这段代码解决了上面的问题。

   File f = new File("/path/to/sample.docx");   
template.save(f);
File f1 = new File("/path/to/sample.pdf");
Runtime.getRuntime().exec("doc2pdf " + f);

如果 sample.docx 是包含任何国际语言(如中文等)的输入 docx 文件,它将被转换为具有相同文件名和相同路径的 pdf。

这是因为 Runtime.getRuntime().exec("doc2pdf "+ f); 这段代码在 unbuntu 操作系统的 java 程序中运行了终端命令 doc2pdf,在此之前我们需要从终端安装 sudo apt-get install unoconv 这是为了让 doc2pdf 命令起作用。

关于java - 使用 doc4j 创建的 PDF 无法正确呈现语言环境文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26623120/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com