在超出此代码时,我将得到以下异常:
public byte[] watermarking(byte[] orig) throws IOException {
PdfReader pdfReader = new PdfReader(orig);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper pdfStamper = null;
try {
pdfStamper = new PdfStamper(pdfReader, baos); //exc here
...
}
...
} catch (DocumentException var8) {
...
}
}
例外:
11:43:11,094 ERROR [de.mlp.xbg.pa.rest.SessionRR] (http-/127.0.0.1:8081-6) PdfReader not opened with owner password: java.lang.IllegalArgumentException: PdfReader not opened with owner password
关于这个主题,我检查了其他线程,似乎最简单的解决方案是添加PdfReader.unethicalreading = true;
。
但是,我不得不使用iText 2.1.7或更高版本(__com.lowagie
iText),而不是iText 5.0.0或更高版本(__com.itextpdf
iText)。库的旧版本中不存在PdfReader.unethicalreading
。
发布于 2016-03-23 11:11:35
这里似乎有一个解决办法,让iText用免责声明忽略密码
,我通过执行下面的代码将法律问题留给您。
public static PdfReader unlockPdf(PdfReader reader) {
if (reader == null) {
return reader;
}
try {
java.lang.reflect.Field f = reader.getClass().getDeclaredField("encrypted");
f.setAccessible(true);
f.set(reader, false);
} catch (Exception e) { /* ignore */ }
return reader;
}
https://stackoverflow.com/questions/36176286
复制相似问题