我使用了以下代码:
package com.allianz.re.gim.service.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter;
import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions;
public class PDF {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String inputFile = "C:/TEMP/question.docx";
String outputFile = "C:/TEMP/question.pdf";
if ((args != null) && (args.length == 2)) {
inputFile = args[0];
outputFile = args[1];
}
System.out.println("inputFile:" + inputFile + ",outputFile:" + outputFile);
FileInputStream in = new FileInputStream(inputFile);
XWPFDocument document = new XWPFDocument(in);
File outFile = new File(outputFile);
OutputStream out = new FileOutputStream(outFile);
PdfOptions options = null;
PdfConverter.getInstance().convert(document, out, options);
}
}
使用的附属人
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.pdf</artifactId>
<version>2.0.1</version>
</dependency>
输入:
下面的docx在文本上放置了一个矩形形状,该矩形的布局选项位于“文本后面”,您可以从图像中看到它
pdf输出,我只有ahs文字。矩形形状不存在。对于放置在文本后面的图像或放置在图像上方的艺术字,也会发生同样的情况:
使用这些依赖关系和代码片段时,我能够
1.转换docx中具有相同字体的图像。
2.用docx相同字体转换简单文本。
但是很少有以下缺点:
1。无法转换图像,在文本后面有布局选项(以在图像顶部显示文本)无法正常工作。仅在PDF中转换了文本。
2。对于其中包含一些文字的艺术字或形状也会发生相同的问题。仅测试被转换。
有人可以帮我吗?