2011-03-29 140 views
6

我試圖將PDF註釋的內容轉換爲字符串,以便將該信息存儲在數據庫中用於搜索目的。使用iText閱讀PDF註釋

有誰知道如何使用iText/iTextSharp完成此操作?

+0

你試圖從中獲取什麼樣的註釋? – 2011-04-07 17:21:06

回答

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字典返回,但不知道如何a:看看它是文本註釋和B:如何提取它 – 2011-07-09 14:40:56

+0

@Mark Storer,我可以知道myCodeToGetAnAnnotsType中的過程是什麼功能。 – 2017-12-22 14:31:02

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和查找/ ANNOT,你很快就會發現你的註釋對象。