2017-02-13 14 views
0

나는 기존 PDF (PDF/A3 표준)의 각 페이지에 메타 데이터를 포함시키는 프로젝트 작업을하고 있습니다. 페이지의 수만큼 xml 파일을 가지고 있으며, 프로그램은 해당 xml 파일을 메타 데이터로 페이지에 임베드합니다.PDF 페이지의/메타 데이터 항목에 xmp를 채우는 방법

지금까지 내 프로그램은 iText 5에서 사용하는 각 페이지에/Metadata 항목을 추가하고 각 페이지의 메타 데이터 항목에 간단한 문자열이나 텍스트를 추가 할 수 있으며 PDF 아래에 표시 할 수 있습니다 Adobe Acrobat Pro의 트리 구조.

 writer.addPageDictEntry(PdfName.METADATA, new PdfString("123")); 

문제를 지금까지 어떻게/메타 데이터 항목에 XML을 추가하는 것입니다 페이지로/메타 데이터 항목을 추가하는 경우 여기 내 코드는? 내 XML 파일은 몇 가지 간단한 트리 구조입니다, 나는 PDF 파일로 XML 파일을 변환하는 방법을 모른다. iText 개발자 사이트에서는 각 페이지의/Metadata 항목에 xmp에 대한 참조가 포함되어야한다고 말합니다. 그렇게하는 방법을 모릅니다. 모든 xml 파일을 함께 포함해야하며 각 페이지의 항목에 파트의 참조를 전달해야합니까?

This screenshot of acrobat pro shows what my program can do so far, click here to see the pic

답변

0

addPageDictEntry() 방법은 당신이 필요하지 않습니다. setPageXmpMetadata() 방법을 시도해야합니다. API docs을 참조하십시오.

이 방법은 byte[]을 허용합니다. byte[]에 올바른 XMP 데이터가 포함되어 있는지 확인하십시오. 이 메서드는 내부적으로 모든 무거운 작업을 수행합니다. 즉, XML을 포함하는 스트림 객체를 만들고 페이지 사전에서 해당 스트림 객체에 대한 참조를 추가합니다. PDF 스트림을 직접 객체로 사용하는 것은 PDF에서 금지되어 있습니다.

당신이이 PdfWriter에 추가하여 참조를 받고, 스트림이 자신을 객체 생성하여, 어려운 방법을 수행하고 페이지 사전의 항목의 값으로 해당 참조를 사용하려는 경우, 이 질문에 대한 답변에서 영감을 얻으실 수 있습니다 : How do I add XMP metadata to each page of an existing PDF using iTextSharp (또는 this example),하지만 단축키 방법을 사용하는 것이 훨씬 쉬워야합니다.

+0

답변 해 주셔서 감사합니다. 그것은 정말로 많은 도움이 될 것입니다 !!! 바로 지금 PDF 페이지에 xmp를 채우는 방법을 알아 냈습니다. 그러나 내가 만난 새로운 문제가있다. 어도비 아크로뱃 CC가 진정한 PDF/A인지 아닌지를 확인하는 것에 지쳤다. 그러나 소프트웨어에서 내 PDF 파일이 사실 PDF/A-3A가 아니며 "XMP 속성이 미리 정의되어 있지만 정의에 따라 사용되지 않습니다 (XMP 2005)"라는 오류 메시지가 표시됩니다. 오류 속성은 정확히 "http://purl.org/dc/elements/1.1/dc:title"입니다. 이 문제를 해결하는 방법을 모르기 때문에 나는 이것에 대해 혼란스러워합니다. –

+0

누구나 PDF를 보지 않고이 질문에 어떻게 답할 수 있습니까? 나는'/ Info' 사전의 메타 데이터와 XMP의 메타 데이터 사이에 차이가 있다고 추측 할 수 있습니다. –

+0

안녕하세요, 저는이 테스트 용 PDF 파일을이 Dropbox 링크에 업로드했습니다. 이것을 확인해주십시오. PDF/A-2B 유효성 검사를 통과하는 법을 모르겠습니다. https://www.dropbox.com/s/wibx73w99utbmmp/Univ.Of.Arizona_Libraries_azu_acku_z3016_ray29_1349_merged.pdf?dl=0 –