2011-03-29 19 views
6

Bir PDF ek açıklamasının içeriğini dizeye almayı deniyorum, böylece bu bilgileri arama amacıyla bir veritabanında saklayabilirim.PDF Ek Açıklamaları iText ile okuma

Bunu, iText/iTextSharp kullanarak nasıl gerçekleştirileceğini bilen var mı?

+0

Metin almaya çalışırken hangi tür ek açıklamaları alıyorsunuz? –

cevap

2

Evet, ancak özellikler, bahsettiğiniz ek açıklamaların türüne bağlıdır. Genelde

: Ayrıntılar için

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); 
    } 
} 

, sen PDF Specification incelemek gerekir, özellikle açıklama açıklamaları: "Bölüm 12.5.6 Ek Açıklama Türleri".

Bize hangi tür önem verdiğinizi söylerseniz daha fazla yardımcı olabilirim. Benim yaptığım gibi Google üzerinden bu soruyu bulur herkese İleride

+0

Mark Yapışkan notlar olarak eklenmiş/Metin ek açıklamaları listesine ulaşmak istiyorum Bir Annot sözlüğüm döndü, ancak nasıl yapıldığını bilmiyorum: bir metin annotu olup olmadığına bakın ve B: ayıklamak için nasıl –

+0

@Mark Storer, MyCodeToGetAnAnnotsType'da hangi işlevin işlem olduğunu bilir miyim? –

1

...

yapışkan not açıklamalar isim ve içindekileri bulmak ne yapmak istiyorsanız geleni bu (Mark'ın cevap dayanmaktadır)

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); } 
} 

Ayrıca, bir metin editörü PDF açıp/Annot bakmak ve hızlı bir şekilde açıklama nesnesini bulacaksınız olabilir sizin için arıyor olabilir ne şeyler belirlemenize yardımcı olması için.