LEADTOOLS PDF(Leadtools.Pdfアセンブリ)

フレームを表示

ParsePagesメソッド






解析にオブジェクトのタイプを指定する一つ以上のPDFParsePagesOptions列挙体メンバ。
解析への最初のページ番号の1から始まるインデックス。ドキュメントで1以上でなければならなくて、頁数以下でなければなりません。
解析への最後のページ番号の1から始まるインデックス。ドキュメントでfirstPageNumber以上でなければならなくて、頁数以下でなければなりません。ドキュメントにおける最後のページを表すために、-1の特殊値を使います。
一つ以上のPDFページからのテキスト項目(文字)、イメージ、長方形、アノテーション、フォームフィールド、デジタル署名、ハイパーリンクとフォントなどのオブジェクトを解析する
構文
'Declaration
 
Public Sub ParsePages( _
   ByVal options As PDFParsePagesOptions, _
   ByVal firstPageNumber As Integer, _
   ByVal lastPageNumber As Integer _
) 
'Usage
 
Dim instance As PDFDocument
Dim options As PDFParsePagesOptions
Dim firstPageNumber As Integer
Dim lastPageNumber As Integer
 
instance.ParsePages(options, firstPageNumber, lastPageNumber)
public void parsePages(int pdfParsePagesOptions, int firstPageNumber, int lastPageNumber)

パラメーター

オプション
解析にオブジェクトのタイプを指定する一つ以上のPDFParsePagesOptions列挙体メンバ。
firstPageNumber
解析への最初のページ番号の1から始まるインデックス。ドキュメントで1以上でなければならなくて、頁数以下でなければなりません。
lastPageNumber
解析への最後のページ番号の1から始まるインデックス。ドキュメントでfirstPageNumber以上でなければならなくて、頁数以下でなければなりません。ドキュメントにおける最後のページを表すために、-1の特殊値を使います。
解説

PDFDocumentオブジェクトが作成されるとき、PDF文書のページはPDFDocument.Pagesコレクションですでに解析されて、値を入力されます。各々のページは、これらの項目で使われるテキスト項目(文字)、イメージ、長方形とハイパーリンク、アノテーション、フォームフィールド、デジタル署名ならびにフォントなどの他のオブジェクトを格納するかもしれません。これらの項目は、パフォーマンス理由で自動的に解析されません。代わりに、ParsePagesメソッドを興味を持っている(またはすべてのページ)ページ範囲と解析する項目の型を指定して呼び出さなければなりません。

まず最初に、PDFDocumentPage.FontsPDFDocumentPage.ObjectsPDFDocumentPage.HyperlinksPDFDocumentPage.ObjectsPDFDocumentPage.HyperlinksPDFDocumentPage.AnnotationsPDFDocumentPage.FormFieldsと各々のPDFDocumentPagePDFDocumentPage.Signaturesリストの値は、nullに設定されます。ParsePagesメソッドが呼び出されるとき、対応するリストはページで項目を見つけて値を入力されます。

興味がある項目の任意型を解析することができます、これは以下のようにParsePagesに渡される型PDFParsePagesOptionsオプションパラメーターを通してされます:

スペースなどの空白文字またはタブは、デフォルトで解析されて、個々のオブジェクトとして返されます。この動作は、オプションパラメーターのPDFParsePagesOptions.ObjectsによるPDFParsePagesOptions.IgnoreWhiteSpaces列挙体メンバがPDFDocument.ParsePagesに渡したOR'ingによって停止されることができます。PDFTextProperties.IsEndOfWordPDFTextProperties.IsEndOfLineプロパティを用いて白い文字なしでページでワードとテキスト行を再建することができることに注意すべきです。PDFTextPropertiesのサンプルは、そうする方法を示します。

PDFParsePagesOptionsの値は、一緒にOR処理されることができます。

サンプル

このサンプルは、PDF文書からすべてのオブジェクトを解析します。imageとPDFTextPropertiesにPDFページのテキストを外部ファイルへ書き込む方法を示すPDFページのオブジェクトを描画する方法のサンプルのためのPDFObjectを参照してください

Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Controls
Imports Leadtools.Pdf
Imports Leadtools.Svg
Imports Leadtools.WinForms

<TestMethod> _
Public Sub PDFDocumentParsePagesExample()
  Dim pdfFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Leadtools.pdf")
  Dim txtFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "LEAD_pdf.txt")
  ' Open the document
  Using document As PDFDocument = New PDFDocument(pdfFileName)
    ' Parse everything and for all pages
    Dim options As PDFParsePagesOptions = PDFParsePagesOptions.All
    document.ParsePages(options, 1, -1)

    ' Save the results to the text file for examining
    Using writer As StreamWriter = File.CreateText(txtFileName)
       For Each page As PDFDocumentPage In document.Pages
         writer.WriteLine("Page {0}", page.PageNumber)

         Dim fonts As IList(Of PDFFont) = page.Fonts
         ' Note, no need to check if fonts is null since we passed .All
         ' This will either get the fonts or an empty list. Same for all
         ' the other objects
         writer.WriteLine("Fonts: {0}", fonts.Count)
         For Each font As PDFFont In fonts
           writer.WriteLine("  FaceName: {0}", font.FaceName)
           writer.WriteLine("  FontStyle: {0}", font.FontStyle.ToString())
           writer.WriteLine("------")
         Next font
         writer.WriteLine("---------------------")

         Dim objects As IList(Of PDFObject) = page.Objects
         writer.WriteLine("Objects: {0}", objects.Count)
         For Each obj As PDFObject In objects
           writer.WriteLine("  ObjectType: {0}", obj.ObjectType.ToString())
           writer.WriteLine("  Bounds: {0}, {1}, {2}, {3}", obj.Bounds.Left, obj.Bounds.Top, obj.Bounds.Right, obj.Bounds.Bottom)
           WriteTextProperties(writer, obj.TextProperties)
           writer.WriteLine("  Code: {0}", obj.Code)
           writer.WriteLine("------")
         Next obj
         writer.WriteLine("---------------------")

         Dim hyperlinks As IList(Of PDFHyperlink) = page.Hyperlinks
         writer.WriteLine("Hyperlinks: {0}", hyperlinks.Count)
         For Each hyperlink As PDFHyperlink In hyperlinks
           writer.WriteLine("  Hyperlink: {0}", hyperlink.Hyperlink)
           writer.WriteLine("  Bounds: {0}, {1}, {2}, {3}", hyperlink.Bounds.Left, hyperlink.Bounds.Top, hyperlink.Bounds.Right, hyperlink.Bounds.Bottom)
           WriteTextProperties(writer, hyperlink.TextProperties)
         Next hyperlink
         writer.WriteLine("---------------------")
       Next page
    End Using
  End Using
End Sub

Private Shared Sub WriteTextProperties(ByVal writer As StreamWriter, ByVal textProperties As PDFTextProperties)
  writer.WriteLine("  TextProperties.FontHeight: {0}", textProperties.FontHeight.ToString())
  writer.WriteLine("  TextProperties.FontWidth: {0}", textProperties.FontWidth.ToString())
  writer.WriteLine("  TextProperties.FontIndex: {0}", textProperties.FontIndex.ToString())
  writer.WriteLine("  TextProperties.IsEndOfWord: {0}", textProperties.IsEndOfWord.ToString())
  writer.WriteLine("  TextProperties.IsEndOfLine: {0}", textProperties.IsEndOfLine.ToString())
  writer.WriteLine("  TextProperties.Color: {0}", textProperties.Color.ToString())
End Sub

Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Controls;
using Leadtools.Pdf;
using Leadtools.Svg;
using Leadtools.WinForms;

[TestMethod]
public void PDFDocumentParsePagesExample()
{
   string pdfFileName = Path.Combine(LEAD_VARS.ImagesDir, @"Leadtools.pdf");
   string txtFileName = Path.Combine(LEAD_VARS.ImagesDir, @"LEAD_pdf.txt");
   // Open the document
   using(PDFDocument document = new PDFDocument(pdfFileName))
   {
      // Parse everything and for all pages
      PDFParsePagesOptions options = PDFParsePagesOptions.All;
      document.ParsePages(options, 1, -1);

      // Save the results to the text file for examining
      using(StreamWriter writer = File.CreateText(txtFileName))
      {
         foreach(PDFDocumentPage page in document.Pages)
         {
            writer.WriteLine("Page {0}", page.PageNumber);

            IList<PDFFont> fonts = page.Fonts;
            // Note, no need to check if fonts is null since we passed .All
            // This will either get the fonts or an empty list. Same for all
            // the other objects
            writer.WriteLine("Fonts: {0}", fonts.Count);
            foreach(PDFFont font in fonts)
            {
               writer.WriteLine("  FaceName: {0}", font.FaceName);
               writer.WriteLine("  FontStyle: {0}", font.FontStyle.ToString());
               writer.WriteLine("------");
            }
            writer.WriteLine("---------------------");

            IList<PDFObject> objects = page.Objects;
            writer.WriteLine("Objects: {0}", objects.Count);
            foreach(PDFObject obj in objects)
            {
               writer.WriteLine("  ObjectType: {0}", obj.ObjectType.ToString());
               writer.WriteLine("  Bounds: {0}, {1}, {2}, {3}", obj.Bounds.Left, obj.Bounds.Top, obj.Bounds.Right, obj.Bounds.Bottom);
               WriteTextProperties(writer, obj.TextProperties);
               writer.WriteLine("  Code: {0}", obj.Code);
               writer.WriteLine("------");
            }
            writer.WriteLine("---------------------");

            IList<PDFHyperlink> hyperlinks = page.Hyperlinks;
            writer.WriteLine("Hyperlinks: {0}", hyperlinks.Count);
            foreach(PDFHyperlink hyperlink in hyperlinks)
            {
               writer.WriteLine("  Hyperlink: {0}", hyperlink.Hyperlink);
               writer.WriteLine("  Bounds: {0}, {1}, {2}, {3}", hyperlink.Bounds.Left, hyperlink.Bounds.Top, hyperlink.Bounds.Right, hyperlink.Bounds.Bottom);
               WriteTextProperties(writer, hyperlink.TextProperties);
            }
            writer.WriteLine("---------------------");
         }
      }
   }
}

private static void WriteTextProperties(StreamWriter writer, PDFTextProperties textProperties)
{
   writer.WriteLine("  TextProperties.FontHeight: {0}", textProperties.FontHeight.ToString());
   writer.WriteLine("  TextProperties.FontWidth: {0}", textProperties.FontWidth.ToString());
   writer.WriteLine("  TextProperties.FontIndex: {0}", textProperties.FontIndex.ToString());
   writer.WriteLine("  TextProperties.IsEndOfWord: {0}", textProperties.IsEndOfWord.ToString());
   writer.WriteLine("  TextProperties.IsEndOfLine: {0}", textProperties.IsEndOfLine.ToString());
   writer.WriteLine("  TextProperties.Color: {0}", textProperties.Color.ToString());
}

static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
必要条件

ターゲットプラットホーム

参照

参照

PDFDocumentクラス
PDFDocumentメンバ

   Leadtools.Pdfは、PDF Pro、Pro Suite、ドキュメントまたはメディカルがキーを認可して、ロック解除することを義務づけます。詳細は、以下を参照してください。LEADTOOLSツールキット機能