【发布时间】:2017-09-07 21:14:50
【问题描述】:
我正在尝试将包含表格和图像的docx 文件转换为pdf 格式文件。
我一直在到处寻找,但没有得到正确的解决方案,请求给出正确和正确的解决方案:
这是我尝试过的:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
public class TestCon {
public static void main(String[] args) {
TestCon cwoWord = new TestCon();
System.out.println("Start");
cwoWord.ConvertToPDF("D:\\Test.docx", "D:\\Test1.pdf");
}
public void ConvertToPDF(String docPath, String pdfPath) {
try {
InputStream doc = new FileInputStream(new File(docPath));
XWPFDocument document = new XWPFDocument(doc);
PdfOptions options = PdfOptions.create();
OutputStream out = new FileOutputStream(new File(pdfPath));
PdfConverter.getInstance().convert(document, out, options);
System.out.println("Done");
} catch (FileNotFoundException ex) {
System.out.println(ex.getMessage());
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
例外:
Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.apache.poi.util.POILogger.log(ILjava/lang/Object;)V from class org.apache.poi.openxml4j.opc.PackageRelationshipCollection
at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.parseRelationshipsPart(PackageRelationshipCollection.java:313)
at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:162)
at org.apache.poi.openxml4j.opc.PackageRelationshipCollection.<init>(PackageRelationshipCollection.java:130)
at org.apache.poi.openxml4j.opc.PackagePart.loadRelationships(PackagePart.java:559)
at org.apache.poi.openxml4j.opc.PackagePart.<init>(PackagePart.java:112)
at org.apache.poi.openxml4j.opc.PackagePart.<init>(PackagePart.java:83)
at org.apache.poi.openxml4j.opc.PackagePart.<init>(PackagePart.java:128)
at org.apache.poi.openxml4j.opc.ZipPackagePart.<init>(ZipPackagePart.java:78)
at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:239)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:665)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:274)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:121)
at test.TestCon.ConvertToPDF(TestCon.java:31)
at test.TestCon.main(TestCon.java:25)
我的要求是创建一个 java 代码,将现有的 docx 转换为具有正确格式和对齐方式的 pdf。
请提出建议。
使用的罐子:
【问题讨论】:
-
如果您坚持使用 ApachePOI,这里还有另一个答案:stackoverflow.com/questions/6201736/…
-
Bruno 只能在您的问题是关于 iText 的情况下提供帮助。但是您的问题不是关于 iText,而是关于 Apache POI。无论如何,如果您标记尚未发表评论的人,那么当您标记他们时,他们将不会收到通知。 Stack Overflow 这样做是为了防止标签垃圾邮件,这是对你所做的事情的描述。
-
如果你不断改变球门柱,没有人能帮助你。在过去 15 分钟内,您多次编辑帖子并多次更改库。
-
在您的众多编辑之一中,您的例外中有
com.lowagie。 (我可以看到编辑历史)这意味着您使用的是 iText 的 ancient 版本,2.1.7 或更早版本,至少有 8 年历史。由于您似乎信任 Bruno Lowagie 的专业知识,因此您应该熟悉他对仍在使用这种旧 iText 版本的人的看法。
标签: java pdf ms-word apache-poi