我已經開發了一個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 –