当前位置: 首页 > 知识库问答 >
问题:

用docx4j转换docx -> pdf时如何改变字体编码?

上官高畅
2023-03-14

当我将docx文档转换为pdf时,我的国家字符会转换为“#”符号。< br >有什么方法可以为pdf文档设置字体编码?

我过去使用xdocreport,它可以处理这个问题,但我在图像、页眉和页脚方面有问题。

Docx4j可以做到这一点,但字体不行。转换后,字体使用ANSI编码,而我希望使用windows-1250。有选项可以设置吗?

共有2个答案

锺离马鲁
2023-03-14

我有同样的问题,发现,正如你自己提到的,一个字体问题。系统上的字体需要支持你的编码。

例如:对于使用“Arial”字体的文档,德语元音变音符字符显示为“?”。

我找到了另一个解决方案,按如下方式覆盖PDF字体编码:

    //
    // read template
    //
    File docxFile = new File(System.getProperty("user.dir") + "/" + "Test.docx");
    InputStream in = new FileInputStream(docxFile);

    // 
    // prepare document context
    //
    IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, TemplateEngineKind.Velocity);
    IContext context = report.createContext();
    context.put("name", "Michael Küfner");

    // 
    // generate PDF output
    //
    Options options = Options.getTo(ConverterTypeTo.PDF).via(ConverterTypeVia.XWPF);
    PdfOptions pdfOptions = PdfOptions.create();
    pdfOptions.fontEncoding("iso-8859-15");
    options.subOptions(pdfOptions);     


    OutputStream out = new FileOutputStream(new File(docxFile.getPath() + ".pdf"));
    report.convert(context, options, out);

尝试根据需要设置 pdfOptions.font中的属性编码(在我的情况下是“iso-8859-15”)。

将其设置为“UTF-8”(接缝为默认值)会导致特殊字符出现同样的问题。

我发现的另一件事:

使用 Word 2007/2010 的默认“Calibri”字体时,即使使用 UTF-8 编码,也不会出现问题。也许 iText 中嵌入的 1 类 Arial 字体(用于生成 PDF)不支持 UTF-8 编码。

梁丘俊材
2023-03-14

我的问题是-在linux服务器上缺少正确的True Type字体。插入的默认字体(没有我的代码页)。

我解决了通过 ttf-mscore 字体安装程序安装默认的 Ms Windows 字体的问题

在debian上:

apt-get install ttf-mscorefonts-installer
 类似资料:
  • 我正试图用Docx4J将一个DOCX文件转换为PDF,并收到两个不同文档的两个不同的异常。 1)对于文档1,第一个文档的org.docx4j.utils.singletRaversAlutilVisitorCallback.apply(SingletRaversAlutilVisitorCallback.java:27)中出现一个NullPointerException。 下面包含的代码是否是在P

  • 我的目标是采取现有的措施。docx文件,并使用docx4j将其从Linux命令行转换为PDF(http://www.docx4java.orghttp://www.docx4java.org).入门指南(http://www.docx4java.org/svn/docx4j/trunk/docx4j/docs/Docx4j_GettingStarted.html)指的是最新(2.8.1)软件包中实

  • 我正在尝试将. docx文件转换为. pdf文件。现在我有以下代码: 以下是版本: 但是当我运行它时,我只得到一个空的pdf文件。我还得到以下堆栈跟踪: 我还应该做些什么?

  • 我需要将docx转换成pdf,我正在使用docx4j-3.2.1库。生成的pdf输出中有一些格式丢失。 可以清楚地看到,有两个值得注意的问题。一个是页眉中图像的大小/尺寸,在生成的pdf中减小。它没有像输入中那样覆盖整个标题区域。 其次是字体大小似乎发生了变化(或者字体本身发生了变化) 我如何在生成的pdf中保留标题上原始图像的尺寸?有没有一些方法可以用来微调docx到pdf的转换? 任何帮助都非

  • (*来自http://www.docx4java.org/forums/xhtml-import-f28/html-docx-html-inserts-a-lot-of-space-t1966.html#p6791?sid=78b64a02482926c4dbdbbafbf50d0a914将在应答时更新) 我已经创建了一个html测试文档,其内容如下: 然后,我的代码从这个html创建一个docx