如何保护pdf文件密码?

我想要保护pdf文件密码。 我只是为了相同而找到一个很好的解决方案。 它工作正常但是在使用下面给出的代码保护pdf之后,它消除了我的pdf中已经存在的所有数据。

此代码使用的jar文件是:

itextpdf-5.2.1.jar

bcmail-jdk16-1.46.jar

bcprov-jdk16-1.46.jar

bctsp-jdk16-1.46.jar

保护PDF的代码:

import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Secure_file { private static String USER_PASSWORD = "password"; private static String OWNER_PASSWORD = "secured"; public static void main(String[] args) throws IOException { Document document = new Document(); try { PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("E:\\sample.pdf")); writer.setEncryption(USER_PASSWORD.getBytes(),OWNER_PASSWORD.getBytes(), PdfWriter.ALLOW_PRINTING,PdfWriter.ENCRYPTION_AES_128); document.open(); document.add(new Paragraph("This is Password Protected PDF document.")); document.close(); writer.close(); } catch (DocumentException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } } 

我需要在这个程序中做出哪些改变?

如果您在Action关键字中查找iText,您会发现加密指向示例part3.chapter12。 EncryptionPdf 。 该示例的方法createPdf本质上等同于您的代码,但方法encryptPdf是您想要的:

 /** User password. */ public static byte[] USER = "Hello".getBytes(); /** Owner password. */ public static byte[] OWNER = "World".getBytes(); ... 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(); } 
 stamper.setEncryption(USER, OWNER,PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128); 

我已经使用此代码为pdf添加密码。 它会在打开pdf时要求输入密码

我用过FOP参考这个文件

 FOUserAgent userAgent = fopFactory.newFOUserAgent(); useragent.getRendererOptions().put("encryption-params", new PDFEncryptionParams( null, "password", false, false, true, true)); Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent);