我已经开发了一个java邮件api程序,它将发送邮件,它也附加pdf文件,所以最终邮件发送时附有pdf文件并且pdf将密码保护所以我使用iText库在使用pdf作为密码保护在java中时出现错误
,所以我必须制订下述
private static final byte[] USER = "password 1234".getBytes();
private static final byte[] OWNER = "password 1234".getBytes();
// attachment part
MimeBodyPart attachPart = new MimeBodyPart();
String filename = "c:\\index.pdf";
PdfReader reader = new PdfReader(filename);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filename));
stamper.setEncryption(USER, OWNER,
PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA);
stamper.close();
reader.close();
DataSource source = new FileDataSource(filename);
attachPart.setDataHandler(new DataHandler(source));
attachPart.setFileName(filename);
这个代码,但我得到这个错误下面,请指教如何进行
Exception in thread "main" java.io.FileNotFoundException: c:\index.pdf (The requested operation cannot be performed on a file with a user-mapped section open)
现在你可以请指教我想通过我的Java程序本身使密码保护的PDF文件,例如我想修改我的下面的程序,如打开PDF文件密码1234创建,每当一个邮件发送客户端应该打开PDF文件,但在打开之前,他应该在pdf文件的弹出框中输入1234来查看它,请问我可以如何在java程序中实现这一点。下面在此先感谢是我的java程序
** ** index.pdf **是否存在** C **驱动器中?我怀疑它是异常状态文件未找到。 –
首先,不要尝试同时读取和写入同一个文件。写入临时文件,然后附加。 – RealSkeptic
@RealSkeptic谢谢,你能否请更新我的帖子,这将有助于掌握更多谢谢inadvance –