Leadtools.Pdfアセンブリ > Leadtools.Pdf名前空間 :PDFDocumentPageクラス |
[SerializableAttribute()] public class PDFDocumentPage
'Declaration
<SerializableAttribute()> Public Class PDFDocumentPage
'Usage
Dim instance As PDFDocumentPage
public class PDFDocumentPage
[SerializableAttribute()] public ref class PDFDocumentPage
PDFDocumentPageクラスが、PDFDocument.Pagesコレクションの型として使われます。
新しいPDFDocumentオブジェクトがPDFDocument(string fileName)またはPDFDocument(string fileName、stringパスワード)コンストラクタで作成されるとき、PDFDocument.Pagesコレクションは自動的に作成されます。PDFDocumentオブジェクトがPDFファイルのリードオンリーのビューであるため、このコレクションはリードオンリーで、修正されることができません。PDF文書内のページに対応するコレクション内の各項目。
ページコレクションの各項目は、PDF文書におけるページと一致します。インデックス0の項目はページ1のプロパティで、インデックス1の項目はページ2のプロパティである、等です。PDFDocumentPage構造体に、ページ数を指定するPageNumberプロパティが格納され、この情報は便宜性のためのみであっても、PDFDocumentコンストラクタは、常に正しい順序で最初のページから最後のページまでコレクションを入力します。
各PDF文書ページには、2つの長方形領域、メディアボックスおよびクロップボックスが含まれます。PDFDocumentPageはロードして、MediaBoxとCropBoxプロパティで、これらの値を保存します。以下に説明する様々な幅と高さの値は、クロップボックスのものです。詳細については、「PDF座標系」を参照してください。
PDFDocumentPageクラスは、直接PDFファイルから読まれる(PDFクロップボックス)ページ読込みPDF単位の幅と高さを格納します。PDF単位は1/72のインチであるので、612×792のページサイズは8.5×11インチ(612/72 x 792/72)と一致します。各々のページ読込みPDF単位(1/72のインチ)のサイズは、幅と高さプロパティで自動的に設定されます。各々のページ読込みインチのサイズは、固定されもして、WidthInchesとHeightInchesプロパティでも設定されます。ページのサイズは、オーナー文書解像度にピクセル単位で依存します。この値はいつでもユーザーによって変更されることができるので、ページのピクセルサイズはそれに応じて変更します。現在の解像度を用いてページ読込みピクセルのサイズを取得するために、WidthPixelsとHeightPixelsプロパティを使います。
ドキュメントにおけるページの合計数は、Pages.Countです。
各々のPDFDocumentPageオブジェクトは、オリジナルのPDF文書における対応するページに位置するいろいろなPDFネイティブオブジェクトで値を入力されることもできます。PDFファイルからPDFDocumentオブジェクトを最初に作成するとき、後述するすべてのコレクションはnullの値を持っています。PDFDocument.ParsePagesメソッドを用いてオブジェクトでコレクションを値を入力することができます。解析される各々のページは、コレクションをオプションパラメーターとして渡されるPDFParsePagesOptionsの値に従いファイルでオブジェクトを見つけて値を入力されて、下で説明しておきます。
ParsePagesメソッドが返ったあと、以下のプロパティは以下のように初期化されます:
PDFParsePagesOptions.Objectsが指定されるならば、PDFDocumentPage.Objectsコレクションはページで見つけられるオブジェクト項目ごとにPDFObjectオブジェクトで値を入力されます。これらの項目は、テキスト(文字)、イメージまたは長方形でありえます。ページで見つけられるオブジェクト項目がないならば、PDFDocumentPage.Objectsは空のコレクション(PDFDocumentPage.Objects.Countは0であるでしょう)で初期化されます。
PDFParsePagesOptions.Hyperlinksが指定されるならば、PDFDocumentPage.Hyperlinksコレクションはページで見つけられるハイパーリンク項目ごとにPDFHyperlinkオブジェクトで値を入力されます。ハイパーリンクがページで見つけられないならば、PDFDocumentPage.Hyperlinksは空のコレクション(PDFDocumentPage.Hyperlinks.Countは0であるでしょう)で初期化されます。
PDFParsePagesOptions.Annotationsが指定されるならば、PDFDocumentPage.Annotationsコレクションはページで見つけられるアノテーション項目ごとにPDFAnnotationオブジェクトで値を入力されます。アノテーションがページで見つけられないならば、PDFDocumentPage.Annotationsは空のコレクション(PDFDocumentPage.Annotations.Countは0であるでしょう)で初期化されます。
PDFParsePagesOptions.Fontsが指定されるならば、PDFDocumentPage.Fontsコレクションはページで見つけられるフォント項目ごとにPDFFontオブジェクトで値を入力されます。フォントがページで見つけられないならば、PDFDocumentPage.Fontsは空のコレクション(PDFDocumentPage.Fonts.Countは0であるでしょう)で初期化されます。
PDFParsePagesOptions.FormFieldsが指定されるならば、PDFDocumentPage.FormFieldsコレクションはページで見つけられるフォームフィールド項目ごとにPDFFormFieldオブジェクトで値を入力されます。フォームフィールドがページで見つけられないならば、PDFDocumentPage.FormFieldsは空のコレクション(PDFDocumentPage.FormFields.Countは0であるでしょう)で初期化されます。
PDFParsePagesOptions.Signaturesが指定されるならば、PDFDocumentPage.Signaturesコレクションはページで見つけられるデジタル署名項目ごとにPDFSignatureオブジェクトで値を入力されます。シグネチャがページで見つけられないならば、PDFDocumentPage.Signaturesは空のコレクション(PDFDocumentPage.Signatures.Countは0であるでしょう)で初期化されます。
PDFDocumentPageオブジェクトは、ConvertPointとピクセル/インチ座標にページ/オブジェクトから、そして、それにポイントまたはrectを変換するのに用いられることができるConvertRectヘルパーメソッドも格納します。
このサンプルはPDF文書をロードして、すべてのそのオブジェクトを解析します。imageの上で表面でこれらのオブジェクトを描画する方法のサンプルのために、PDFDocumentPageを参照します。
Imports Leadtools Imports Leadtools.Codecs Imports Leadtools.Pdf Imports Leadtools.WinForms Public Sub PDFDocumentPageExample() 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.Pdf; using Leadtools.WinForms; public void PDFDocumentPageExample() { 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"; }