首页 > 解决方案 > 来自文档属性的西里尔文文本在 docx4j 的 PDF 文件中已损坏

问题描述

我正在尝试使用 docx4j 3.7.7 将 docx 转换为 pdf。问题是 pdf 正在正确生成,但没有出现具有西里尔文文本的 docpropery。它以##### 的形式出现。带有西里尔文字的普通段落正在正确生成。这个问题只能在 linux 中重现。在 Windows 中, docProperty 正在正确转换。用于测试的文件可以在这里找到 文件

下面是代码:


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.docx4j.Docx4J;
import org.docx4j.convert.out.FOSettings;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

public class TestRussian {

    public static void main(String[] args) {
        new TestRussian().convertWordToPdf();

    }

    public void convertWordToPdf() {
        FileOutputStream fileOutputStream =null;
        try {
            File file = new File("Test1.docx");

            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(file);

            boolean checkViaFo = Docx4J.pdfViaFO();
            FOSettings foSettings = Docx4J.createFOSettings();
            fileOutputStream= new FileOutputStream("PDFRussian1.pdf");
            foSettings.setWmlPackage(wordMLPackage);
            //Getting error in update() during complex field update
            //FieldUpdater updater = new FieldUpdater(wordMLPackage);
            //updater.update(true);

            Docx4J.toPDF(wordMLPackage,fileOutputStream);
            System.out.println("Done");
        } catch (Exception ex) {

        } finally {
            try {
                if (fileOutputStream != null) {
                    fileOutputStream.close();
                }
            } catch (IOException e) {
            }
        }

    }

}

我读过一些关于 MERGEGORMAT & CHARFORMAT 的东西,但对此并没有太多的想法

标签: javalinuxdocx4jcyrillic

解决方案


推荐阅读