0

我正在使用 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);
4

1 回答 1

1

在将 HTMLinput转换为 PDF 之前,可能会将其转换为静态文本。

由于您已经在使用带有 HTML 内容的字符串,因此html

就像是:

// ☐ ☑ ☒ ☉ ◉ ○
html = html.replaceAll("(?si)<input type=\"radio\"[^>]*value=\"("
        + checkedValue + ")\"[^>]*>(.*?)</input>",
        "◉ $2");
html = html.replaceAll("(?si)<input type=\"radio\"[^>]*value=\"("
        + "[^\"]+" + ")\"[^>]*>(.*?)</input>",
        "○ $2");

可能你需要做更多的事情,上面的代码依赖于 value 属性之前的 type 属性等等。

于 2016-11-01T19:07:57.830 回答