Java 如何使用密码保护已存在的PDF?
如何为现有PDF设置密码?您是否看过我书第12章中的示例 就这么简单:Java 如何使用密码保护已存在的PDF?,java,itext,Java,Itext,如何为现有PDF设置密码?您是否看过我书第12章中的示例 就这么简单: public void encryptPdf(String src, String dest) throws IOException, DocumentException { PdfReader reader = new PdfReader(src); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); st
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();
}
请注意,用户和所有者的类型为byte[]。您有不同的权限选项查找以ALLOW_u开头的常量,并且可以从不同的加密算法中进行选择
至于参数:src是现有PDF的路径。dest是加密PDF的路径。很明显,在读取文件时不能写入文件。这里解释如下:你看过我书第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();
}
请注意,用户和所有者的类型为byte[]。您有不同的权限选项查找以ALLOW_u开头的常量,并且可以从不同的加密算法中进行选择
至于参数:src是现有PDF的路径。dest是加密PDF的路径。很明显,在读取文件时不能写入文件。这里对此进行了解释:回答@Alberto问题:如果只有字节数组作为输入,并且需要另一个字节数组作为输出,那么如何加密pdf,请使用前面的答案 我有一个名为addPasswordbyte[]templateByte的方法,它接受PDF文件的字节数组作为参数,并返回加密的字节数组作为响应
public byte[] addPassword(byte[] templateByte)
{
String USER_PASS = "Hello123";
String OWNER_PASS = "Deva123";
PdfReader pdfReader = null;
ByteArrayOutputStream byteArrayOutputStream = ByteArrayOutputStream(templateByte.length);
byteArrayOutputStream.write(templateByte, 0, templateByte.length);
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();
}
@Alberto问题的答案:如果只有字节数组作为输入,并且需要另一个字节数组作为输出,那么如何加密pdf,使用前面的答案 我有一个名为addPasswordbyte[]templateByte的方法,它接受PDF文件的字节数组作为参数,并返回加密的字节数组作为响应
public byte[] addPassword(byte[] templateByte)
{
String USER_PASS = "Hello123";
String OWNER_PASS = "Deva123";
PdfReader pdfReader = null;
ByteArrayOutputStream byteArrayOutputStream = ByteArrayOutputStream(templateByte.length);
byteArrayOutputStream.write(templateByte, 0, templateByte.length);
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();
}
请始终提供您的问题的详细信息。此外,请描述您已经尝试过的内容。您使用的是哪种语言?可能重复的请始终提供您的问题的答案。此外,请描述您已经尝试过的内容。你使用的是哪种语言?可能重复你如何加密pdf如果你只有字节数组作为输入-并且需要另一个字节数组作为输出,这是可能的?@AlbertoAcuña,回答你的问题并参考布鲁诺的答案。如果你只有字节数组作为输入,并且需要另一个字节数组作为输出,你如何加密pdf,这是可能的?@AlbertoAcuña,回答你的问题并参考布鲁诺的答案。ByteArrayOutputStream?@Lijo,请完成你的问题。我不明白。这对我不起作用,我仍然可以在没有密码提示的情况下打开我的PDF。ByteArrayOutputStream?@Lijo,请完成你的问题。我没有得到它。这对我不起作用,我仍然可以在没有密码提示的情况下打开我的PDF。