package demo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.openxml4j.opc.*;
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 DocxToPdf {
public static void main(String[] args){
try
{
String inputFile = "F:\\MY WORK\\CollectionPractice\\WebContent\\APCR1.docx";
String outputFile = "F:\\MY WORK\\CollectionPractice\\WebContent\\APCR1.pdf";
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);
} catch (Exception e) {
e.printStackTrace();
}
}
}
当我运行此代码时,会出现类似这样的错误,并且我也使用了以下jar文件。
错误: java.lang.NoSuchMethodError:org.apache.poi.POIXMLDocumentPart.getPackageRelationship()Lorg / apache / poi / openxml4j / opc / PackageRelationship;
答案 0 :(得分:1)
你可能混淆了jar版本的POI。该错误表明加载的类没有调用类在编译期间看到的方法,因此您在类路径中有不同版本的POI。
请参阅https://poi.apache.org/overview.html处的“组件地图”,了解所包含的不同组件以及它们最终的罐子,确保您的类路径中只有一个这样的罐子,而不是多个不同的版本。