解决java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature 异常

发布时间 2023-10-11 19:51:49作者: 人间大爱
public static void main(String[] args) throws Exception {
InputStream imageInputStream = new FileInputStream(new File("d:/temp/sign.png"));
byte[] buffer = new byte[4096];
int n;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while (-1 != (n = imageInputStream.read(buffer))) {
  output.write(buffer, 0, n);
}
InputStream inputStream = new FileInputStream(new File("d:/temp/testpdf.pdf"));

// 读取模板文件
PdfReader reader = new PdfReader(inputStream);

// 目标文件路径
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(new File("d:/temp/testpdf_result.pdf")));
Document documentPd = new Document();

// 获取所在页和坐标,左下角为起点
float x = -7;
float x2 = documentPd.getPageSize().getWidth();
float y = documentPd.getPageSize().getHeight() / 2 - 80;
float y2 = documentPd.getPageSize().getHeight();
// 读图片

Image image = Image.getInstance(output.toByteArray());

// 获取操作的页面

PdfContentByte under = stamper.getOverContent(1);

// 根据域的大小缩放图片
image.scaleToFit(100, 100);

// 添加图片
image.setAbsolutePosition(x, y);
under.addImage(image);
stamper.close();    ///就是这行报错。。。。
reader.close();

}

 

运行以上这段段时时,报错:

java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature

解决方法:在代码开头加上如下这行,即可解决:

System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");