java - 来自文档属性的西里尔文文本在 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 的东西,但对此并没有太多的想法
解决方案
推荐阅读
- javascript - 以编程方式将基于时间的触发器添加到 Google Apps 脚本中的插件
- java - 在 Spring Boot 应用程序中混合 Groovy 和 Java 源代码
- chaquopy - Chaquopy 没有使用正确的构建路径
- mysql - MySQL - 如何通过其他唯一列设置一列数据
- json - 匹配具有不同结构的两个数组
- c# - SqlException:过程或函数指定的参数过多
- flutter - 与孩子大小相同的可拖动反馈
- airflow - 无需完全重启即可将代码部署到 Airflow
- git - 如何在 groovy 中运行 git 过滤器分支
- c# - 从子类中的父类访问设置的最佳方式