禁用 PDF 框打印问题

问题描述 投票:0回答:1

我正在使用此示例 PDFBox 代码来加密和禁用 pdf 文件的打印。加密成功,但打印未禁用。

可能是什么问题?

这是我的 pom.xml 的依赖项部分

<dependencies>
    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.6</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15</artifactId>
        <version>1.46</version>
    </dependency>
</dependencies>

下面是源代码

import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;

public class Test {
    public static void main(String[] args) throws Exception {
        PDDocument doc = PDDocument.load(new File("/tmp/Test.pdf"));
        int keyLength = 128;
        AccessPermission ap = new AccessPermission();
        ap.setCanPrint(false);
        StandardProtectionPolicy spp = new StandardProtectionPolicy("Admin", "Password", ap);
        spp.setEncryptionKeyLength(keyLength);
        spp.setPermissions(ap);
        doc.protect(spp);
        doc.save("/tmp/Test-Encrypted.pdf");
        doc.close();
    }

}
java pdf encryption printing pdfbox
1个回答
0
投票

我已经尝试过这个代码片段,我可以在下面禁用打印选项 1.adobe acrobat阅读器 2.镀铬 3.微软边缘 4.福昕PDF阅读器。 但我无法在 Firefox 中阻止。任何帮助都是值得赞赏的。

AccessPermission ap = new AccessPermission();
ap.setCanPrint(false);
ap.setCanModify(false);
ap.setCanPrintDegraded(false);
doc.setAllSecurityToBeRemoved(true);
StandardProtectionPolicy policy = new StandardProtectionPolicy("","",ap);
doc.protect(policy);
© www.soinside.com 2019 - 2024. All rights reserved.