如何防止使用 jodconverter 编辑我的 pdf?
How prevent editing my pdf using jodconverter?
我正在使用 jodconverter 3.0-beta4,我正在从 HTML 转换为 PDF。
我的 HTML 包含一个表单,但我不想在我的 PDF 中包含可编辑的字段。我想如果我能让我的 pdf 只读那么字段就消失了,但我的代码不起作用。
我已经尝试过不同版本的 PDF,但是低于 2 的版本无法正确重现我的 HTML。它转换 HTML 一些未标记的输入,但我的收音机输入都已标记。
这是我的代码
DocumentFormat format = new DocumentFormat("PDF/A", "pdf", "application/pdf");
Map<String, Object> filterData = new HashMap<String, Object>();
filterData.put("SelectPdfVersion", 2);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("FilterData", filterData);
properties.put("FilterName", "writer_pdf_Export");
properties.put("Changes", 0);
properties.put("RestrictPermissions", true);
format.setStoreProperties(DocumentFamily.TEXT, properties);
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
File htmlFile = File.createTempFile("tempHTML" , ".html");
org.apache.commons.io.FileUtils.writeStringToFile(htmlFile, html);
File pdfFile = File.createTempFile("tempPDF", ".pdf");
converter.convert(htmlFile, pdfFile, format);
可能会先将 HTML input
转换为静态文本,然后再将其转换为 PDF。
由于您已经在使用包含 HTML 内容的字符串,因此 html
:
类似于:
// ☐ ☑ ☒ ☉ ◉ ○
html = html.replaceAll("(?si)<input type=\"radio\"[^>]*value=\"("
+ checkedValue + ")\"[^>]*>(.*?)</input>",
"◉ ");
html = html.replaceAll("(?si)<input type=\"radio\"[^>]*value=\"("
+ "[^\"]+" + ")\"[^>]*>(.*?)</input>",
"○ ");
可能你需要做更多,上面的代码依赖于 value 属性之前的 type 属性等等。
我正在使用 jodconverter 3.0-beta4,我正在从 HTML 转换为 PDF。 我的 HTML 包含一个表单,但我不想在我的 PDF 中包含可编辑的字段。我想如果我能让我的 pdf 只读那么字段就消失了,但我的代码不起作用。
我已经尝试过不同版本的 PDF,但是低于 2 的版本无法正确重现我的 HTML。它转换 HTML 一些未标记的输入,但我的收音机输入都已标记。
这是我的代码
DocumentFormat format = new DocumentFormat("PDF/A", "pdf", "application/pdf");
Map<String, Object> filterData = new HashMap<String, Object>();
filterData.put("SelectPdfVersion", 2);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("FilterData", filterData);
properties.put("FilterName", "writer_pdf_Export");
properties.put("Changes", 0);
properties.put("RestrictPermissions", true);
format.setStoreProperties(DocumentFamily.TEXT, properties);
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
File htmlFile = File.createTempFile("tempHTML" , ".html");
org.apache.commons.io.FileUtils.writeStringToFile(htmlFile, html);
File pdfFile = File.createTempFile("tempPDF", ".pdf");
converter.convert(htmlFile, pdfFile, format);
可能会先将 HTML input
转换为静态文本,然后再将其转换为 PDF。
由于您已经在使用包含 HTML 内容的字符串,因此 html
:
类似于:
// ☐ ☑ ☒ ☉ ◉ ○
html = html.replaceAll("(?si)<input type=\"radio\"[^>]*value=\"("
+ checkedValue + ")\"[^>]*>(.*?)</input>",
"◉ ");
html = html.replaceAll("(?si)<input type=\"radio\"[^>]*value=\"("
+ "[^\"]+" + ")\"[^>]*>(.*?)</input>",
"○ ");
可能你需要做更多,上面的代码依赖于 value 属性之前的 type 属性等等。