我开始研究如何改变?docm文件转换成PDF文件。据我所知,只有开源库可以转换。docx转pdf。我的解决方案是寻找一种方法来转换。docm to。docx,同时保留每一条信息。为此,我找不到合适的开源解决方案,但我找到了一个apache-poi的submit(链接)。使用在提交中找到的代码,我成功地创建了。包含我的所有信息的docx文件。docm文件有。
String dir = "<directory>";
for (int i = 1; i < 41; i++) {
File f = new File(dir + File.separator + i + ".docm");
File target = new File(dir + "output" + i + ".docx");
try {
new DocumentConverter(f).toDocx(target);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
我从链接中复制了代码,并以上述方式使用它。
一旦我有了包含所有信息的.docx文件,我就开始将它们转换为.pdf文件。为此,我找到了两个可能的开源库,docx4j和documents4j。
Docx4j转换为pdf代码:
try {
Docx4J.toPDF(WordprocessingMLPackage.load(target), new FileOutputStream(dir + "out" + i + ".pdf"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (Docx4JException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
这将为我生成一个pdf文件,其中包含除MS Word的评论之外的所有信息。
文档4j转换为PDF代码:
try (ByteArrayOutputStream bo = new ByteArrayOutputStream()) {
try (InputStream in = new BufferedInputStream(new FileInputStream(target));) {
IConverter converter = LocalConverter.builder()
.baseFolder(new File(dir))
.workerPool(20, 25, 2, TimeUnit.SECONDS)
.processTimeout(5, TimeUnit.SECONDS)
.build();
Future<Boolean> conversion = converter
.convert(in).as(DocumentType.DOC)
.to(bo).as(DocumentType.PDF)
.prioritizeWith(1000) // optional
.schedule();
conversion.get();
try (OutputStream outputStream = new FileOutputStream("out"+ i +".pdf")) {
bo.writeTo(outputStream);
}
converter.shutDown();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这将为我生成一个看起来不错的pdf文件,并包含MS Word的注释。
进一步的测试表明docx4j pdfs在文本上是准确的,但是位置被改变了(例如:段落被合并或分成两段)。documents4j的pdf在位置上更准确,但就像我说的,它们缺少信息。我的测试是在以相同方式创建的表单文档上进行的,缺失的信息总是在相同的位置。
我的问题如下:
编辑:我忘记包含我正在使用每个库的最新版本。
Docents4j通过VBS脚本将实际工作委托给MS Word,因此,结果的任何更改都是由于脚本中的配置。您可以尝试使用它,看看是否可以让Word包含您缺少的内容:https://github.com/documents4j/documents4j/blob/master/documents4j-transformer-msoffice/documents4j-transformer-msoffice-word/src/main/resources/word_convert.vbs
只需构建项目,并查看更改如何影响输出。
我在Eclipse IDE中编写了JavaFx项目,它工作正常。 一旦我把它转换成Maven项目,我的FMXL文件就停止打开了。但是,如果我创建新的FXML文件并将它们放在相同的文件夹中,一切都会正常工作。 有没有办法在不重新创建所有FXML文件的情况下运行我的Maven项目? 我已经尝试过在代码中更改FXML文件的路径,将FXML移到src/main/resources包,或者简单地将代码从旧的
如何正确转换dto到json在Java?我这样做就像下面使用: 问题在于格式化字段。在Dto我有我的日期在这种格式:但转换此dto到json字节后,我看到我的拆分为对象与许多属性如下: 在使用之后,我希望将中的所有属性以与转换之前相同的格式进行转换。如何做到这一点? 谢谢你的帮助!
我该怎么做才能更精确地定位这些点(±3km就足够精确了)?
问题内容: 我想将一些div转换为PDF,并且尝试了jsPDF库,但没有成功。看来我不明白我需要导入什么才能使库正常工作。我已经看过这些示例,但仍然无法弄清楚。我尝试了以下方法: 在jQuery之后: 用于测试目的,但我收到: 身体的第一个div 在哪里。 问题答案: 您可以按如下方式使用html中的pdf, 步骤1:将以下脚本添加到标题 步骤2:添加HTML脚本以执行jsPDF代码 对此进行自定
问题内容: 我正在从事Spring MVC项目。我正在使用Hibernate。我想将AJAX与jQuery结合使用,以从Spring Controller中获取一些JSON。不幸的是,当我在应用程序中实现方法时,出现了一个错误: 我必须使用哪种适配器以及以哪种方式使用?该方法的最后一行发生了错误: 这是我在Spring MVC项目中与Hibernate一起使用的班级: 编辑 我想知道:我的对象是代
问题内容: 我有一个包含单个模块和一些依赖项的项目。我想在一个包含编译模块的单独目录中创建一个jar。另外,我想在模块旁边提供依赖项。 无论我如何扭曲IntelliJ的“构建jar”过程,模块的输出都将显示为空(除了META-INF文件之外)。 问题答案: 这是使用IntelliJ 10构建jar的方法http://blogs.jetbrains.com/idea/2010/08/quickly-