IText — как создать запись AF в каталоге документов в формате PDF_A_3B — PDF/A-3 B ⇐ JAVA
-
Anonymous
IText — как создать запись AF в каталоге документов в формате PDF_A_3B — PDF/A-3 B
Мне нужно создать PDF/A-3-B (ISO 19005-3:2012. Часть 3) с помощью iText с вложениями.
Как создать запись AF в каталоге документов PDF?
Я использовал код Java в конце этого вопроса для создания пробного теста. Используя Adobe XI Pro Preflight, я вижу, что структура PDF стала такой:
Корень каталога документов АФ: 0: (6) /T:FileSpec Но структура должна быть такой:
Корень каталога документов АФ: 0: (6) [6 0 R] /T:FileSpec Другими словами, я считаю, что запись AF должна быть указателем на само вложение.
ISO говорит следующее:
КЛЮЧ: AF ТИП: массив словарей Значение: (Необязательно) Массив словарей спецификаций файлов. представление исходного содержимого, из которого создан этот документ производные или данные, используемые для создания визуального представления. Для создания примера можно использовать следующий макет Java-кода:
public static Final String RESULT = "target/pdfa3.pdf"; общедоступная статическая окончательная строка FONTPATH = "/usr/share/fonts/truetype/msttcorefonts/times.ttf"; частный статический шрифт FONT = FontFactory.getFont(FONTPATH, BaseFont.CP1252, BaseFont.EMBEDDED); публичный тест на недействительность(){ //создание документа Документ документ = новый документ(); PdfAWriter Writer = PdfAWriter.getInstance(документ, новый FileOutputStream(RESULT), PdfAConformanceLevel.PDF_A_3B); //создание Xmp по умолчанию писатель.createXmpMetadata(); документ.открыть(); //добавляем вложение как внедренный файл PdfDictionary fileParameter = новый PdfDictionary (); fileParameter.put(new PdfName("ModDate"), new PdfString("2013-01-09T16:28-02:00")); PdfFileSpecification fs = PdfFileSpecification.fileEmbedded (писатель, src.getAbsolutePath(), src.getName(), null, false, "image/jpeg", fileParameter); fs.put(new PdfName("AFRelationship"), новое PdfName("Источник")); Writer.addFileAttachment(src.getName().substring(0, src.getName().indexOf('.')), fs); //????????????????????? // В ЭТОМ ДЕЛО: КАК ДОБАВИТЬ ЗАПИСЬ AF? //это не работает: Writer.getExtraCatalog().put(new PdfName("AF"), new PdfArray(fs)); //????????????????????? //добавляем текст document.add(new Paragraph("Hello World!", FONT)); //сделанный! документ.закрыть(); }
Мне нужно создать PDF/A-3-B (ISO 19005-3:2012. Часть 3) с помощью iText с вложениями.
Как создать запись AF в каталоге документов PDF?
Я использовал код Java в конце этого вопроса для создания пробного теста. Используя Adobe XI Pro Preflight, я вижу, что структура PDF стала такой:
Корень каталога документов АФ: 0: (6) /T:FileSpec Но структура должна быть такой:
Корень каталога документов АФ: 0: (6) [6 0 R] /T:FileSpec Другими словами, я считаю, что запись AF должна быть указателем на само вложение.
ISO говорит следующее:
КЛЮЧ: AF ТИП: массив словарей Значение: (Необязательно) Массив словарей спецификаций файлов. представление исходного содержимого, из которого создан этот документ производные или данные, используемые для создания визуального представления. Для создания примера можно использовать следующий макет Java-кода:
public static Final String RESULT = "target/pdfa3.pdf"; общедоступная статическая окончательная строка FONTPATH = "/usr/share/fonts/truetype/msttcorefonts/times.ttf"; частный статический шрифт FONT = FontFactory.getFont(FONTPATH, BaseFont.CP1252, BaseFont.EMBEDDED); публичный тест на недействительность(){ //создание документа Документ документ = новый документ(); PdfAWriter Writer = PdfAWriter.getInstance(документ, новый FileOutputStream(RESULT), PdfAConformanceLevel.PDF_A_3B); //создание Xmp по умолчанию писатель.createXmpMetadata(); документ.открыть(); //добавляем вложение как внедренный файл PdfDictionary fileParameter = новый PdfDictionary (); fileParameter.put(new PdfName("ModDate"), new PdfString("2013-01-09T16:28-02:00")); PdfFileSpecification fs = PdfFileSpecification.fileEmbedded (писатель, src.getAbsolutePath(), src.getName(), null, false, "image/jpeg", fileParameter); fs.put(new PdfName("AFRelationship"), новое PdfName("Источник")); Writer.addFileAttachment(src.getName().substring(0, src.getName().indexOf('.')), fs); //????????????????????? // В ЭТОМ ДЕЛО: КАК ДОБАВИТЬ ЗАПИСЬ AF? //это не работает: Writer.getExtraCatalog().put(new PdfName("AF"), new PdfArray(fs)); //????????????????????? //добавляем текст document.add(new Paragraph("Hello World!", FONT)); //сделанный! документ.закрыть(); }
Мобильная версия