Установить данные XMP с помощью itextSharp 5.3.3

Я борюсь с созданием PDF/A с itextSharp. Я все еще использую PdfAWriter, который возвращает файл PDF, который выглядит хорошо, но я пытаюсь проверить файл здесь, что-то идет не так. этот инструмент проверки возвращает следующие сообщения:

  • dc: title / * [0]:: Отсутствует квалификатор языка.
  • dc: description / * [0]:: Отсутствует квалификатор языка.
  • Требуемое свойство XMP 'pdfaid: part' отсутствует
  • Требуемое свойство XMP 'pdfaid: conformance' отсутствует
  • Требуемое свойство XMP 'xmp:CreateDate' для записи информации о документе 'CreationDate' отсутствует.
  • Требуемое свойство XMP 'xmp:ModifyDate' для ввода информации о документе 'ModDate' отсутствует

Это код, который я использую:

oWriter = PdfAWriter.GetInstance(oDoc, New FileStream(sNomeFileOut, FileMode.Create), PdfAConformanceLevel.PDF_A_1B)
oWriter.PdfVersion = PdfAWriter.VERSION_1_5
Dim pdfD As New PdfDictionary()
pdfD.Put(New PdfName("Keywords"), New PdfString("DESADV"))
pdfD.Put(New PdfName("Creator"), New PdfString("TESI eIntegration"))
pdfD.Put(New PdfName("Author"), New PdfString("TESI eIntegration"))
pdfD.Put(New PdfName("Title"), New PdfString("DESADV PDS version"))
pdfD.Put(New PdfName("Subject"), New PdfString("DESADV PDS version"))
pdfD.Put(New PdfName("pdfaid:conformance"), New PdfString("PDF/A 1B"))
pdfD.Put(New PdfName("xmp:CreateDate"), New PdfString(DateTime.Now.ToShortDateString()))
pdfD.Put(New PdfName("xmp:ModifyDate"), New PdfString(DateTime.Now.ToShortDateString()))
Dim stream As New MemoryStream
Dim xmp As New XmpWriter(stream, pdfD, PdfAConformanceLevel.PDF_A_1B)
xmp.Close()
oWriter.XmpMetadata = stream.ToArray()
oWriter.PageEvent = New PdfPageEventHandler

Кто-то может помочь решить эту проблему?

1 ответ

Решение

Вы можете настроить iTextSharp на автоматическое создание метаданных XMP на основе метаданных, установленных вами в Document и уровень соответствия PDF/A. Попробуйте что-то вроде этого:

Document oDoc = new Document();
PdfWriter oWriter = PdfAWriter.GetInstance(oDoc,
  new FileStream(sNomeFileOut, FileMode.Create), PdfAConformanceLevel.PDF_A_1B);
oDoc.AddTitle("Some title");
oDoc.AddSubject("Subject");
oDoc.AddKeywords("Keywords, go, here");
oDoc.AddCreator("Some app");
oDoc.AddAuthor("Author");
oWriter.CreateXmpMetadata();
oDoc.Open();
//...

Как Бруно уже прокомментировал, обновление - это хорошая идея: много изменений, связанных с PDF/A, было сделано с 5.3.3.

Другие вопросы по тегам