는 명확히 주셔서 감사합니다. Acrobat을 사용하여 원하는 데이터를 추가하는 방법에 대한 설명을 기반으로 이제 메타 데이터를 참조하고 있음을 알게되었습니다.
필자는 Acrobat을 사용하여 "Test"값이 "Test"인 사용자 지정 메타 데이터 항목을 추가했으며이 파일을 보면이 키/값 쌍이 두 곳에서 나타남을 볼 수 있습니다 빨간 점) :
- 그것은 메타 데이터를 저장하는 전통 장소입니다 정보 사전에 존재한다.
- XMP 메타 데이터 스트림에 접두어가 pdfx 인 태그 (사용자 정의 태그 용)로 제공됩니다.
iText를 사용할 때 Info 사전에 추가 값을 쉽게 추가 할 수 있습니다. XMP 메타 데이터를 업데이트하는 것도 가능하지만 직접 XMP 스트림을 만들어야합니다. 어쩌면 PDF에 정보 사전 만 있고 XMP가 없을 수도 있습니다.
또한 그 키를 갖는 목적은 값을 검색하고 나중에 사용자 지정 항목을 삭제하는 것입니다. 이 경우 정보 사전에 추가 항목을 추가하는 것으로 충분합니다. 처음부터 또는 다음 예제 중 하나가 필요합니다 기존의 PDF로 생성 된 PDF로 정보 사전에 사용자 정의 항목을 추가 할 것인지 여부에 따라
: CustomMetaEntry에서
, 우리는 표준 메타 데이터 항목을 추가 제목 및 사용자 정의라는 항목 시험 :
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.addTitle("Some example");
document.add(new Header("Test", "test"));
document.open();
Paragraph p = new Paragraph("Hello World");
document.add(p);
document.close();
}
당신이 볼 수 있듯이,이 iText는 제목, 저자, ... 메타 데이터를 추가 할 수 addX()
방법을했다. 그러나 사용자 정의 항목을 추가하려면 add()
메소드를 사용하여 Header
인스턴스를 추가해야합니다. 문서를 열려고 메타 데이터를 추가해야합니다. 기존 PDF의 정보를 사전에 항목을 추가하려면
, 당신은 예를 MetadataPdf를 들어, 내 book에서 예를 수행 할 수 있습니다
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
Map<String, String> info = reader.getInfo();
info.put("Title", "Hello World stamped");
info.put("Subject", "Hello World with changed metadata");
info.put("Keywords", "iText in Action, PdfStamper");
info.put("Creator", "Silly standalone example");
info.put("Author", "Also Bruno Lowagie");
stamper.setMoreInfo(info);
stamper.close();
reader.close();
}
이 예제에서, 우리는에서 정보 사전을 가져 getInfo()
메서드를 사용하여 PdfReader
인스턴스를 만듭니다.
이 또한 PDF에서 사용자 지정 데이터를 검색하는 방법에 대한 답변입니다. Map
키 Test
와 항목이 포함되어있는 경우는 다음과 같이 그 값을 얻을 수 있습니다 : 당신은 지금이 Map
에 String
의의 여분 쌍을 추가 할 수 있습니다
String test = info.get("Test");
. 이 예에서는 메타 데이터에 표준 키를 추가하지만 사용자 지정 키를 사용할 수도 있습니다.
기존 PDF 파일에서 항목을 제거하는 것은 항목을 추가하는 것과 같은 방법으로 수행됩니다. null
값을 추가하는 것으로 충분합니다. 예를 들어 :
info.put("Test", null);
이것은 값이 경우 Test
라는 이름의 사용자 정의 항목을 귀하의 정보를 사전에 존재 제거합니다.
문자열 쌍을 다시 검색하도록 코드를 요청할 수 있습니다. 이름 (테스트) 및 값 (테스트)을 사용자 지정 속성에 저장한다고 가정하고 이름이 테스트인지, 값을 다시 얻는 방법을 알고 있습니까? 감사합니다 – brian
또 다른 한가지는 사용자 지정 속성 (테스트, 테스트)을 추가하기 전에 pdf를 해시 할 때 문자열 a를 얻습니다. – brian
그러나 info.put ("Test", null) 메서드를 사용하여 사용자 정의 속성을 삭제할 때. 사용자 정의 속성을 삭제 한 후 pdf를 다시 해시하고 다른 문자열을 가져옵니다. b. 이 두 문자열은 동일하지 않습니다. 어떻게하면 같은 해시 결과를 얻을 수 있습니까? MD5를 사용하는 해시 알고리즘 – brian