2016-11-01 10 views
0

Я использую jodconverter 3.0-beta4, и я конвертирую из HTML в PDF. Мой HTML-код содержит форму, но я не хочу иметь редактируемые поля в моем PDF-файле. Я думал, что если бы я мог читать мой pdf-файл, тогда поля исчезли, но мой код не работает.Как предотвратить редактирование моего pdf с помощью jodconverter?

Я уже пробовал с различными версиями 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); 
+1

Можно преобразовать HTML-входы в текст. –

+0

Thats true Я могу отправлять только те опции, которые отмечены/заполнены. Я действительно не думал об этом. Благодарю. – ikkarion

+0

@JoopEggen, можете ли вы высказать свой отзыв в качестве ответа? – ikkarion

ответ

1

Можно преобразовать HTML-input с до статического текста до преобразования его в формате PDF.

Как вы уже используете строку с содержимым HTML, html:

Что-то вроде:

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

Возможно, вам нужно сделать больше, и приведенный выше код зависит от атрибута типа предшествующего значение атрибута и т. д.