2011-03-29 8 views
6

PDF 주석의 내용을 문자열로 가져 와서 그 정보를 검색 목적으로 데이터베이스에 저장할 수 있도록했습니다.iText를 사용하여 PDF 주석 읽기

누구든지 iText/iTextSharp를 사용하여이를 수행하는 방법을 알고 있습니까?

+0

어떤 종류의 주석을 텍스트에서 가져 오려고합니까? –

답변

2

네,하지만 세부 사항은 실제로 어떤 종류의 주석 이냐에 달려 있습니다. 일반적으로

: 자세한 내용은

PdfDictionary pageDict = myPdfReader.getPageN(firstPageIsOne); 

PdfArray annotArray = pageDict.getAsArray(PdfName.ANNOTS); 

for (int i = 0; i < annotArray.size(); ++i) { 
    PdfDictionary curAnnot = annotArray.getAsDict(i); 

    int someType = myCodeToGetAnAnnotsType(curAnnot); 
    if (someType == THIS_TYPE) { 
    writeThisType(curAnnot); 
    } else if (someType == THAT_TYPE) { 
    writeThatType(curAnnot); 
    } 
} 

, 당신은 PDF Specification을 검사해야합니다, 특히 주석 설명 : "장 12.5.6 주석 유형".

관심있는 유형을 알려 주시면 도움이 될 수 있습니다. 내가했던 것처럼 구글을 통해이 문제를 발견 한 사람에게 나중에 참조 할 수 있도록

+0

마크 스티커 메모로 추가 된/텍스트 주석 목록을 가져오고 싶습니다./Annot Dictionary가 반환되었지만 확실하지 않은 방법 : 텍스트 주석인 경우 B 참조 : 추출 방법 –

+0

@Mark Storer, myCodeToGetAnAnnotsType에서 어떤 함수가 프로세스인지 알 수 있습니까? –

1

...

스티커 메모 주석의 이름과 내용을 찾을 수있다 싶은 경우 수있는 일이 (마크의 대답에 부분적으로 기초)

PdfReader reader = new PdfReader(somePDF); 
PdfDictionary pageDict = reader.GetPageN(1); 

PdfArray annotArray = pageDict.GetAsArray(PdfName.ANNOTS); 

for (int i = 0; i < annotArray.Size; ++i) 
{ 
    PdfDictionary curAnnot = annotArray.GetAsDict(i); 

    PdfString name = curAnnot.GetAsString(PdfName.T); 
    PdfString contents = curAnnot.GetAsString(PdfName.CONTENTS); 
    if (!string.IsNullOrWhiteSpace(name?.ToString())) 
    { Console.WriteLine(name); } 
    if (!string.IsNullOrWhiteSpace(contents?.ToString())) 
    { Console.WriteLine(contents); } 
} 

은 또한 텍스트 편집기에서 PDF를 열고/주석 창을 찾아서 신속하게 주석 객체를 찾을 수 있습니다 당신이 찾고 있습니다 어떤 것들을 식별하는 데 도움합니다.

관련 문제