2008-10-06 3 views
6

PDF 문서를 사용하는 일부 (자바) 코드를 작성하고 모든 책갈피에서 명명 된 대상을 작성하고 싶습니다. 나는 iText API가이 일을하는 가장 쉬운 방법이라고 생각하지만 이전에는 API를 사용한 적이 없다.iText API를 사용하여 PDF 파일의 모든 책갈피에 대한 대상 만들기

iText API를 사용하여 이런 종류의 코드를 작성하는 방법은 무엇입니까? iText 자체로 기존 PDF를 조작하는 데 필요한 구문 분석을 수행 할 수 있습니까? 내가 생각하고 조작의 종류는 다음과 같습니다

  • 열기,
  • 를 즐겨 찾기,
  • 저장,
  • 닫기를 목적지를 만듭니다.

아니면 다른 API가 더 좋을까요?

답변

3

나는 당신에게 당신이 이것을 실망시킬지도 모른다는 것을 경고 할 것입니다. iText는 실제로 파서로 사용하기위한 것이 아닙니다. 완전히 새로운 PDF 문서를 만드는 데 더 많은 도움이됩니다.

iText를 사용하여 시작하려면 기존 PDF 문서를 수정할 수 없습니다. 그렇다면 일 수 있습니다. 원하는 추가 기능으로 복사본을 만드는 것입니다. (다른 사람이 더 잘 알고 있다면 을 알려주세요.이게 나를 미치게합니다.)

원본 파일의 입력 스트림에서 PdfReader 개체를 만드는 것이 좋습니다. 그런 다음 대상에 대한 PdfCopy 개체 (기존 소스의 데이터를보다 편리하게 가져 오는 확장 된 PdfWriter)를 만듭니다.

내가 알 수있는 한, 책갈피는 iText에서 전혀 얻을 수 없습니다. 다른 라이브러리가 필요할 수 있습니다. 난 jpedal 그들을 추출하는 능력을 가질 수 있습니다 (당신이 원하는 것을 얻기 위해 구문 분석 할 수 있습니다 XML 문서로 그들을 얻을 수 있습니다.) 그러나 당신이 그들을 얻을, 당신은 다음 java.util에 추가 할 수 있습니다. 목록을 만들고 PDFCopy에서 그 목록을 개요로 설정하십시오. 책갈피 자체는 특정 키 세트가있는 HashMap입니다. 나는 모든 값이 무엇인지는 모르겠지만 "Title", "Action"(이 값이 무엇인지 알 수는 없지만 이름이 지정된 대상이라고 지정할 수있는 것 같습니다.) 및 "URI"(이것은 외부 링크 인 경우 사용됩니다. 연결하려는 이름이 지정된 대상의 이름을 지정하는 것으로 의심됩니다). 다시 말하면 세부 사항을 찾기가 어렵습니다.

그런 다음 각 페이지를 PdfCopy로 가져와 리더의 페이지를 반복합니다. this page 도움을 받으실 수 있습니다.

죄송합니다. 더 도움이되지 않습니다. 행운을 빕니다.

P. 다른 사람이 (L) GPL 또는 BSD 라이센스가있는 더 나은 도구를 알고 있다면, 그것에 대해 듣고 싶습니다.

+0

감사합니다. 그러면 앞으로 나아갈 수 있습니다. –

5

추가 답변 : iText에 텍스트 구문 분석 기능을 추가 한 몇 달 전 iText에 패치를 제출했습니다 (현재 승인되었으며 HEAD의 일부 임). PdfBox (아래 언급)는 오래된 외부 참조 테이블 형식 대신 외부 참조 스트림을 사용하는 최신 PDF를 읽는 데 문제가 있습니다.


기존의 PDF 파일을 구문 분석에 아주 좋은 또 다른 라이브러리는 또한 기존의 PDF를 수정하는 데에도 사용될 수 있습니다 PdfBox입니다. 참고 - Lucene이 사용하는 텍스트 구문 분석기입니다.

또한 iText 에 PDF 파일을 구문 분석 할 수있는 기능이 있지만 각 페이지의 텍스트 내용을 분석하는 데는별로 좋지 않습니다. 북마크 등을 저장하는 데 사용되는 PDF 상위 레벨 구조 (사전 등)에 액세스하려는 경우 PDF 사양을 읽으면 손이 조금 더러워지지 않아도됩니다. 절대적으로 당신이 요구하는 것을하십시오 (우리는 우리 자신을 꽤 많이합니다).

PDF Spec은 크지 만 대부분 읽을 수 있으며, 실제 페이지 콘텐츠 및 렌더링에 맞게 조정할 수 있습니다. 책갈피 만 추출하면됩니다. .