iText Java disable print pdf

2019-07-15 10:54发布

问题:

We are using the following code to disable Print option in PDF. Works really well.

    PdfReader reader = new PdfReader("my-old-file.pdf");
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("my-new-file.pdf"));
    stamper.setEncryption("my-owner-password".getBytes(), "my-user-password".getBytes(),
    PdfWriter.AllowCopy, PdfWriter.STRENGTH40BITS);
    stamper.close();

Everything was hunky dory till yesterday. We decided to update PDF Reader version to 9.3 from version 8.2 The print option is not disabled anymore! Looks like this code only works if we have Adobe Acrobat Reader 8 installed. For other versions, it does not disable the copy or print buttons.

Please help.
Thanks

回答1:

I don't see Adobe simply dropping support for those security flags, but they may have grown weary of STRENGTH40BITS. I suggest you update to STRENGTH128BITS.

That or it's an Adobe Bug.

PS: The latest version of Acrobat is 9.4, you might try that version instead... long odds but worth a shot. 9.3 was a tad flaky.

Sadly, this is all guess-work on my part. Good hunting.



回答2:

use the following jars:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.3.2</version>
</dependency>
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.47</version>
</dependency>
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcmail-jdk15on</artifactId>
    <version>1.47</version>
</dependency>