java中将docx转换为PDF的问题
我正在尝试将word docx文件转换为pdf文件,全部使用java,无需任何用户交互 这是到目前为止我的代码,我正在使用docx4j库java中将docx转换为PDF的问题,java,pdf,docx,docx4j,Java,Pdf,Docx,Docx4j,我正在尝试将word docx文件转换为pdf文件,全部使用java,无需任何用户交互 这是到目前为止我的代码,我正在使用docx4j库 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package richard.fileupload; import java.io.File; import java.io.FileInputStream;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package richard.fileupload;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.docx4j.convert.out.pdf.PdfConversion;
import org.docx4j.convert.out.pdf.viaXSLFO.PdfSettings;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
/**
*
* @author Richard
*/
public class pdfConverter {
public static void main(String[] args) {
createPDF();
createPDF();
}
private static void createPDF() {
try {
long start = System.currentTimeMillis();
// 1) Load DOCX into WordprocessingMLPackage
InputStream is = new FileInputStream(new File(
"D:/HelloWorld.docx"));
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
.load(is);
// 2) Prepare Pdf settings
PdfSettings pdfSettings = new PdfSettings();
// 3) Convert WordprocessingMLPackage to Pdf
OutputStream out = new FileOutputStream(new File(
"D:/HelloWorld.pdf"));
PdfConversion converter = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(
wordMLPackage);
converter.output(out, pdfSettings);
System.err.println("Generate pdf/HelloWorld.pdf with "
+ (System.currentTimeMillis() - start) + "ms");
} catch (Throwable e) {
e.printStackTrace();
}
}
}
然而,当我尝试运行时,我得到了这个错误,它编译得很好
run:
java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at org.docx4j.openpackaging.Base.<clinit>(Base.java:42)
at richard.fileupload.pdfConverter.createPDF(pdfConverter.java:32)
at richard.fileupload.pdfConverter.main(pdfConverter.java:21)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 3 more
java.lang.NoClassDefFoundError: Could not initialize class org.docx4j.openpackaging.packages.WordprocessingMLPackage
at richard.fileupload.pdfConverter.createPDF(pdfConverter.java:32)
at richard.fileupload.pdfConverter.main(pdfConverter.java:22)
BUILD SUCCESSFUL (total time: 0 seconds)
存在对Apache记录器的依赖性。获取JAR文件并将其放入类路径中。查看这篇帖子:我想这可能会对你有所帮助。我希望你不会陷入地狱。如果此web应用程序或企业应用程序在某些应用程序服务器(JBoss、GlassFish、WebSphere等)中运行。使用一些应用服务器,您可以利用应用服务器随附的log4j,尽管这可能会使您依赖于应用服务器。如果您运送自己的log4j,您可能必须努力避免与其他log4j发生碰撞。如果你的应用程序是桌面软件,请避免我的简介。您好,是的,这是一个运行在glassfish服务器上的web应用程序,此解决方案对此不起作用吗?谢谢,我已解决了该问题,但遇到了新的错误
java.lang.NoClassDefFoundError: org/apache/fop/apps/FopFactory
at org.docx4j.convert.out.pdf.viaXSLFO.Conversion.output(Conversion.java:231)
at richard.fileupload.pdfConverter.createPDF(pdfConverter.java:43)
at richard.fileupload.pdfConverter.main(pdfConverter.java:22)