# 1 楼答案 @Alberto问题的答案:如果只有字节数组作为输入,并且需要另一个字节数组作为输出,那么如何加密pdf,使用前面的答案 我有一个名为addPassword(byte[]templateByte)的方法,它接受PDF文件的字节数组作为参数,并返回加密的字节数组作为响应 public byte[] addPassword(byte[] templateByte) { String USER_PASS = "Hello123"; String OWNER_PASS = "Deva123"; PdfReader pdfReader = null; ByteArrayOutputStream byteArrayOutputStream = ByteArrayOutputStream(templateByte.length); //removed manual write to output stream try { pdfReader = new PdfReader(templateByte); PdfStamper stamper = new PdfStamper(pdfReader, byteArrayOutputStream); stamper.setEncryption(USER_PASS.getBytes(), OWNER_PASS.getBytes(), PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA); stamper.close(); pdfReader.close(); return byteArrayOutputStream.toByteArray(); } catch (Exception e) { e.printStackTrace(); } return byteArrayOutputStream.toByteArray(); }
# 2 楼答案 你看过我书第12章的例子了吗 就这么简单: 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(); } 请注意USER和OWNER属于byte[]类型。您有不同的权限选项(查找以ALLOW_开头的常量),并且可以从不同的加密算法中进行选择 至于参数:src是现有PDF的路径dest是加密PDF的路径。很明显,在读取文件时不能写入文件。这里解释道:How to update a PDF without creating a new PDF?
# 1 楼答案
@Alberto问题的答案:如果只有字节数组作为输入,并且需要另一个字节数组作为输出,那么如何加密pdf,使用前面的答案
我有一个名为addPassword(byte[]templateByte)的方法,它接受PDF文件的字节数组作为参数,并返回加密的字节数组作为响应
# 2 楼答案
你看过我书第12章的例子了吗
就这么简单:
请注意
USER
和OWNER
属于byte[]
类型。您有不同的权限选项(查找以ALLOW_
开头的常量),并且可以从不同的加密算法中进行选择至于参数:
src
是现有PDF的路径dest
是加密PDF的路径。很明显,在读取文件时不能写入文件。这里解释道:How to update a PDF without creating a new PDF?