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

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

  • dc: title / * [0] :: Отсутствует квалификатор языка.
  • dc: description / * [0] :: Отсутствует квалификатор языка.
  • Требуемое свойство XMP pdfaid: part отсутствует
  • Требуемое свойство XMP pdfaid: Complance отсутствует.
  • Требуемое свойство 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

Кто-нибудь может халп решить эту проблему?


person AngeloBad    schedule 29.04.2014    source источник
comment
Обновитесь до iText 5.5.0. Если вы посмотрите журналы изменений и примечания к выпуску, вы увидите, что с 22 сентября 2012 года (это дата публикации iTextSharp 5.3.3) было добавлено множество дополнительных функций, связанных с PDF / A.   -  person Bruno Lowagie    schedule 29.04.2014


Ответы (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();
//...

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

person rhens    schedule 29.04.2014