如何仅将用户密码添加到 pdf 文件而不使用 iText 添加所有者密码?据我所知,似乎只能通过添加用户密码和所有者密码来做到这一点。
问问题
3083 次
2 回答
4
加密现有的 PDF 是这样完成的:
public void encryptPdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.setEncryption(USER, OWNER,
PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA);
stamper.close();
reader.close();
}
见http://itextpdf.com/examples/iia.php?id=219
如果 OWNER 是null
,那么将生成一个随机的所有者密码(没有人知道的密码)。也许这就是您的客户的意思。正如 mkl 已经解释的那样,拥有一个带有 USER 密码但没有 OWNER 密码的 PDF 是没有意义的。
于 2013-01-22T07:42:00.580 回答
0
以下代码是您需要添加所有者密码的代码。
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperprintobj);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE,new File(fileName));
exporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED, Boolean.TRUE);
exporter.setParameter(JRPdfExporterParameter.IS_128_BIT_KEY, Boolean.TRUE);
//exporter.setParameter(JRPdfExporterParameter.USER_PASSWORD, "jasper");
exporter.setParameter(JRPdfExporterParameter.OWNER_PASSWORD, "reports");
exporter.setParameter(
JRPdfExporterParameter.PERMISSIONS,
new Integer(PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING)
);
exporter.exportReport(); // finally export as pdf
在生成 pdf 的 java 中使用此代码。
于 2013-01-22T05:18:49.180 回答