2011-12-15 15 views
2

iTextSharpを使用してPDFモジュールを読んでいます。理由は分かりませんが、GetField()メソッドを使用してPDFフィールドを読み込もうとすると、PDFファイルに正しく入力されたいくつかのフィールドが空(value = "")として返されます。iTextSharpを使用してPDF形式のデータを読み取る:空の値

あなたはその理由を知っていますか? PDFフィールドから値を抽出する他の方法はありますか?

PdfReader pdfReader = new PdfReader(new RandomAccessFileOrArray(fileName), null); 
pdfFormFields = pdfReader.AcroFields; 

foreach (var field in pdfFormFields.Fields) { 
    _logger.Error("Field: " + field.Key + " - Value: " + pdfFormFields.GetField(field.Key.ToString())); 
} 

これが出力されます:

PDFReader.PDFRead - Field: modulo1[0].BASALE_PAG1[0].SITO_TUMORE_PRIMITIVO[0] - Value: Stomaco 
PDFReader.PDFRead - Field: modulo1[0].BASALE_PAG1[0].ALTRO_SITO_TUMORE_PRIMITIVO[0] - Value: cervice 
PDFReader.PDFRead - Field: modulo1[0].BASALE_PAG1[0].IST_PRIM_SECOND[0] - Value: su secondario 
PDFReader.PDFRead - Field: modulo1[0].BASALE_PAG1[0].STADIAZIONE[0] - Value: IIa 
PDFReader.PDFRead - Field: modulo1[0].BASALE_PAG2[0].OCTREOSCAN_Ga-PET[0] - Value: Negativo 
PDFReader.PDFRead - Field: modulo1[0].BASALE_PAG2[0].FUNZIONANTE[0] - Value: No 
PDFReader.PDFRead - Field: modulo1[0].BASALE_PAG2[0].CgA_INIZIO_TERAPIA[0] - Value: 1.00000000 
PDFReader.PDFRead - Field: modulo1[0].BASALE_PAG2[0].CgA_VAL_RIFERIMENTO[0] - Value: 
PDFReader.PDFRead - Field: modulo1[0].BASALE_PAG2[0].ACIDO5_VAL_RIFERIMENTO[0] - Value: 

TNX、
アンドレア

+0

多分コードスニペットは、必ず – MethodMan

+0

@DJKRAZEに役立つだろう:) –

+0

あなたは、例えば、何かのためにフィールドを設定するコードを持っていますこのようにAcroFields pdfFields = pdfStamper.AcroFields; pdfFields.SetField( "SomeFieldName"、...。); – MethodMan

答えて

0

はあなたのコード に合うように、この作業の変更のようなものは、これは、PDFのためにあなたをLISTNERの多くを作成することになります作成した。このコードは、あなたのC#でのすべてのフィールドの内容を与えるべき

​​
1

public string ReadPdfFile(string fileName) 
      { 
       StringBuilder text = new StringBuilder(); 

       if (File.Exists(fileName)) 
       { 
        PdfReader pdfReader = new PdfReader(fileName); 

        for (int page = 1; page <= pdfReader.NumberOfPages; page++) 
        { 
         ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 
         string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); 

         currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); 
         text.Append(currentText); 
        } 
        pdfReader.Close(); 
       } 
       return text.ToString(); 
      } 
      private static string GetFormFieldNames(PdfReader pdfReader) 
      { 
       return string.Join("\r\n", pdfReader.AcroFields.Fields 
               .Select(x => x.Key).ToArray()); 
      } 

      private static string GetFormFieldNamesWithValues(PdfReader pdfReader) 
      { 
       return string.Join("\r\n", pdfReader.AcroFields.Fields 
               .Select(x => x.Key + "=" + 
               pdfReader.AcroFields.GetField(x.Key)) 
               .ToArray()); 
      } 
      private void Button_Click_1(object sender, RoutedEventArgs e) 
      { 
       var reader = new PdfReader(@"Direction_to_your.pdf"); 
       AcroFields form = reader.AcroFields; 
       txtBox1.Text = GetFormFieldNamesWithValues(reader); 
       reader.Close(); 
      } 
関連する問題