gpt4 book ai didi

java - Html2Pdf 转换器禁用文本选择

转载 作者:行者123 更新时间:2023-12-01 19:12:36 26 4
gpt4 key购买 nike

我使用 html2pdf lib,用于从 html 创建 pdf 文件。我正在尝试禁止用户复制 pdf 内容

ConverterProperties converterProperties = new ConverterProperties();
try {
HtmlConverter.convertToPdf(html, new FileOutputStream(fileName), converterProperties);
} catch (IOException e) {
e.printStackTrace();
}

其中 html 是 thymeleaf 模板。之后,我就进入了项目 PDF 文件的根目录。但我需要禁用此 PDF 的文本选择(就像它是从图像创建的一样)如何禁用 pdf 中的文本,例如在 pdf 文件的第二层中放置不可见文本

最佳答案

要禁止查看 PDF 的用户复制 PDF 内容,您可以使用所有者密码(而不是用户密码)加密 PDF,并设置相应的权限标志以禁止复制内容。在这种情况下,仍然可以选择文本,但缓冲区中不会出现任何内容。

PdfWriter pdfWriter = new PdfWriter("C:/out.pdf", new WriterProperties().setStandardEncryption(
"".getBytes(), "ownerPass".getBytes(), EncryptionConstants.ALLOW_SCREENREADERS, EncryptionConstants.ENCRYPTION_AES_256));
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
HtmlConverter.convertToPdf(new FileInputStream("C:/in.html"), pdfDocument);
pdfDocument.close();

如果您用于从生成的 PDF 中解析文本的工具尊重我们之前设置的权限配置,那么您在默认模式(用户模式)下从该 PDF 中提取文本时可能会遇到问题。在这种情况下,您可以将之前设置的所有者密码传递给该工具,以便它知道您是文档的所有者,并且允许您从中提取文本。或者,如果该工具不提供此类功能,您可以在将该 PDF 传递到解析工具之前解密 PDF 并将其转换为没有任何限制的纯 PDF。以下是解密 PDF 的代码:

PdfDocument pdfDocument = new PdfDocument(new PdfReader("C:/out.pdf",
new ReaderProperties().setPassword("ownerPass".getBytes())),
new PdfWriter("C:/decrypted.pdf"));
pdfDocument.close();

关于java - Html2Pdf 转换器禁用文本选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59458886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com