我正在使用此示例 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();
}
}
我已经尝试过这个代码片段,我可以在下面禁用打印选项 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);