使用java密码保护pdf

时间:2015-05-27 08:02:02

标签: java pdf itext

我想将现有的PDF设为密码保护,我正在使用我正在使用的迭代文字

http://howtodoinjava.com/2014/07/29/create-pdf-files-in-java-itext-tutorial/

我开发了一个程序,它将以PDF作为附件发送邮件。下面是我将PDF文件设为密码保护的代码。

现在PDF文件已附在邮件中,但是当我尝试打开它时,我收到一条错误信息,说明它已损坏。

我在下面的代码中做错了什么?

//  attachment part
MimeBodyPart attachPart = new MimeBodyPart();
String filename = "c:\\SettingupRulesin outlook2003.pdf";

//OutputStream file = new FileOutputStream(new File("PasswordProtected.pdf"));
final OutputStream os = new FileOutputStream(filename);
com.itextpdf.text.Document doc = new com.itextpdf.text.Document();
PdfWriter writer = PdfWriter.getInstance(doc, os);
writer.setEncryption(USER_PASSWORD.getBytes(),
                     OWNER_PASSWORD.getBytes(), PdfWriter.ALLOW_PRINTING,
                     PdfWriter.ENCRYPTION_AES_128); 

os.close();


DataSource source = new FileDataSource(filename);
attachPart.setDataHandler(new DataHandler(source));
attachPart.setFileName(filename);

1 个答案:

答案 0 :(得分:1)

您使用了 PdfWriter。该类可用于从头开始创建新的 PDF,而不是操作现有的 PDF。请改用 PdfStamper 来处理现有文档。