LEADTOOLS Leadtools.Documents(Leadtools.Documentsアセンブリ)

フレームを表示

Documentクラス






メンバ 
ラスターとSVGイメージ、ブックマーク、アノテーションとテキストデータのサポートで、複数ページのドキュメントをカプセル化します。
オブジェクトモデル
構文
[DataContractAttribute()]
public abstract class Document 
'Declaration
 
<DataContractAttribute()>
Public MustInherit Class Document 
'Usage
 
Dim instance As Document
public abstract class Document
             
[DataContractAttribute()]
public ref class Document abstract 
解説

Documentクラスは、いずれのタイプのドキュメントに対しても均一なサポートを提供します。実際のデータは、裏側の、LEADTOOLSによってサポートされる何百もの様々なラスター、ドキュメントまたはベクトルファイルフォーマットのPDF文書、Microsoft Wordドキュメント、TIFFイメージ、AutoCAD DWGスケッチまたは任意の他でありえます。ドキュメントは、同じプロパティ、メソッドとデータ構造で同じやり方でこのデータにアクセスするために必要な一般の機能性をカプセル化します。

ドキュメントビューワ

Leadtools.Documentsが、サムネイル、仮想化、テキストサーチとアノテーションサポートでドキュメントとそのページを表示するのに用いられることができるDocumentViewerへの入力として使われます。

ドキュメントコンバータ

Leadtools.Documentsが、OCR技術を使用することの有無にかかわらず他のどのファイルフォーマットにもドキュメントを変換するDocumentConverterへの入力として、使われることもできます。

Documentクラスを作成すること

Documentインスタンスが、:に続くことを使用して得られます

メソッド 説明
DocumentFactory.LoadFromFile

ディスクまたはネットワーク共有の上で既存の文書ファイルから新しいインスタンスを作成します。

DocumentFactory.LoadFromUri

リモートURLで保存されるドキュメントから、新しいインスタンスを作成します。

DocumentFactory.LoadFromUriAsync

リモートURLまたはディスクで保存されるドキュメントから、非同期で新しいインスタンスを作成します。

DocumentFactory.LoadFromUriAsync

リモートURLで保存されるドキュメントから、非同期で新しいインスタンスを作成します。

DocumentFactory.LoadFromStream

ストリーム内で保存される既存のドキュメントから、新しいインスタンスを作成します。

DocumentFactory.LoadFromCache

以前に保存されたドキュメントをキャッシュからロードします。

DocumentFactory.Create

新しい空のドキュメントを作成します。

文書の獲得後、InternalObjectはドキュメントで使用される内部のLEADTOOLSオブジェクトとなります。

暗号化

多くの場合、ドキュメントは獲得後ただちに使用できます。ただし、PDFなどの一部の文書は暗号化でき、解析して使用する前にはパスワードを求めるようにすることができます。ドキュメントが解読されなかった場合、ドキュメントのプロパティとメソッドのほとんどはエラーをスローします。IsEncryptedは、文書が暗号化されているかどうかを確認するために使用できます。暗号化されている場合、文書をロック解除するには、ユーザーから入手したパスワードでDecryptを呼び出さなければなりません。その場合、IsDecryptedの値はtrueになり、ドキュメントは使用できます。IsEncryptedは、ドキュメントのオリジナルの状態を示すためTrueのままであることにご注意ください。

Documentクラスの保存

SaveToFileSaveToUriメソッドは、ディスクファイルまたはリモートURLにドキュメントを保存するのに用いられることができます。これらのメソッドは、ドキュメントのドキュメントでなくラスター画像形式への保存をサポートします。多くの場合、文書の変換では多くのオプションを指定し、DocumentConverterクラスを使って制御しなければなりません。

ドキュメント識別子

各文書には、作成時にフレームワークによって設定される固有識別子があります。これは、DocumentIdプロパティで保存されます。

IDは、キャッシュシステムでドキュメントを使うとき重要で、キャッシュから完全にドキュメントを再建するために必要な唯一の値です。

キャッシュ

ドキュメントは、かなりの頁数と巨大なデータ量を格納することができます。実メモリーでこのようなデータを保存することは、大部分の状況で可能でありません。したがって、Documentクラスは、変更されたものを保存するために外部のキャッシュシステムを使うように設計されていました。詳細については、「DocumentFactory.Cache」を参照してください。

HasCacheは、この文書にキャッシュシステムが使われているかどうかを判断します。SaveToCacheは、文書をキャッシュに保存し、DocumentFactory.LoadFromCache。を使って再ロードするために使用できます。それが破棄されるドキュメントに関連づけられるAutoDeleteFromCacheとAutoSaveToCacheは、何がキャッシュデータに起こるか決定するのに用いられることができます。

構造体と目次

DocumentStructureは、ドキュメントの構造体を管理します。これは、目次を表すブックマークを含みます。それは、ドキュメント構造体プロパティを通してアクセスされることができます。

ページ

DocumentPagesは、ドキュメントのページを管理します。それは、ドキュメントページプロパティを通してアクセスされることができます。

DocumentPagesLeadCollection`1から派生し、Collection`1を実装できます。ページを追加して、削除して、挿入して、取得して、設定して、終わりまで反復処理するために、コレクションメソッドのどれでも使うことができます。

DocumentPagesは、ドキュメントにおける単一のページのためにデータを格納するDocumentPageのコレクションを格納します。ページ項目は、ビューワまたはコンバータアプリケーションでドキュメントを使うための主入口点です。ページ、テキストデータ、アノテーションとハイパーリンクのラスターまたはXVG imageを取り戻すか、更新することは、関数を格納します。詳細については、「DocumentPage」を参照してください。

メタデータ

メタデータには、文書がロードされ作成されるときにDocumentFactoryにより追加されるデフォルト値のほか、作成者、サブタイトル、およびそのほかのアプリケーションにより保存されるキーワードなど、文書ファイル自体から抽出されるそのほかのデータが含まれます。

プロパティ

プロパティが一部である以下は実証します、そして、有益な情報を格納します:

グローバルなドキュメント設定

Documentクラスは、ドキュメントを通して使われるグローバルな設定を管理するために、以下を格納します。

ドキュメント単位

ドキュメントは、すべての項目について独立した単位の1/720インチを使用します。この値は、UnitsPerInch定数(720)で保存されます。詳細については、「ドキュメントライブラリ座標システム」を参照してください。

破棄

ドキュメントIDisposableを実装し、使用後は破棄しなければなりません。詳細については、「.NETのIDisposable」を参照してください。

ドキュメントは廃棄後そのままで再構築できます。AutoSaveToCacheがtrueに設定されているかSaveToCacheが使用されている場合、キャッシュに保存されます。

サンプル

このサンプルはドキュメントをロードして、すべてのその情報を示します。

Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Forms.DocumentWriters
Imports Leadtools.Svg
Imports Leadtools.Documents
Imports Leadtools.Caching
Imports Leadtools.Annotations.Core
Imports Leadtools.Barcode
Imports Leadtools.Forms.Ocr

Public Shared Function CreateCache() As FileCache
   Dim cacheDir As String = Path.Combine(ImagesPath.Path, "cache")
   If Directory.Exists(cacheDir) Then
      Directory.Delete(cacheDir, True)
   End If
   Directory.CreateDirectory(cacheDir)

   Dim cache As New FileCache()
   cache.CacheDirectory = cacheDir

   Return cache
End Function

Public Shared Sub PrintOutDocumentInfo(ByVal document As Document)
   Console.WriteLine("General")
   Console.WriteLine("  DocumentId:" & document.DocumentId)
   If document.Uri <> Nothing Then
      Console.WriteLine("  Uri:" & document.Uri.ToString())
   End If
   Console.WriteLine("  IsDownloaded:" & document.IsDownloaded)
   Console.WriteLine("  DocumentFileName:" & document.GetDocumentFileName())
   Console.WriteLine("  IsReadOnly:" & document.IsReadOnly)
   Console.WriteLine("  MimeType:" & document.MimeType)
   Console.WriteLine("  IsEncrypted:" & document.IsEncrypted)
   Console.WriteLine("  IsDecrypted:" & document.IsDecrypted)
   Console.WriteLine("Cache")
   Console.WriteLine("  HasCache:" & document.HasCache)
   Console.WriteLine("  AutoDeleteFromCache:" & document.AutoDeleteFromCache)
   If document.HasCache Then
      Dim policy As CacheItemPolicy = document.CreateCacheItemPolicy()
      Console.WriteLine("  CacheItemPolicy:{0} {1}", policy.AbsoluteExpiration, policy.SlidingExpiration)
   Else
      Console.WriteLine("  CacheItemPolicy: none")
   End If
   Console.WriteLine("Metadata")
   For Each item As KeyValuePair(Of String, String) In document.Metadata
      Console.WriteLine("  {0} {1}", item.Key, item.Value)
   Next item
   Console.WriteLine("Annotations")
   If document.Annotations.AnnotationsUri <> Nothing Then
      Console.WriteLine("  AnnotationsUri:" & document.Annotations.AnnotationsUri.ToString())
   End If

   Console.WriteLine("Images")
   Console.WriteLine("  DefaultBitsPerPixel:{0}", document.Images.DefaultBitsPerPixel)
   Console.WriteLine("  ThumbnailPixelSize:{0}", document.Images.ThumbnailPixelSize)

   Console.WriteLine("Pages")
   Console.WriteLine("  DefaultPageSize:{0}", document.Pages.DefaultPageSize)
   Console.WriteLine("  DefaultResolution:{0}", document.Pages.DefaultResolution)
   Console.WriteLine("  Count:" & document.Pages.Count)

   For Each page As Leadtools.Documents.DocumentPage In document.Pages
      Console.WriteLine("    PageNumber:" & page.PageNumber)
      Console.WriteLine("      OriginalPageNumber:" & page.OriginalPageNumber)
      Console.WriteLine("      Size:{0}", page.Size)
      Console.WriteLine("      Resolution:{0}", page.Resolution)
      Console.WriteLine("      IsDeleted:" & page.IsDeleted)
      Console.WriteLine("      IsImageModified:" & page.IsImageModified)

      Using rasterImage As RasterImage = page.GetImage()
         If Not rasterImage Is Nothing Then
            Console.WriteLine("Image {0} by {1} {2}bpp", rasterImage.Width, rasterImage.Height, rasterImage.BitsPerPixel)
         Else
            Console.WriteLine("null")
         End If
      End Using

      Using thumbnail As RasterImage = page.GetThumbnailImage()
         If Not thumbnail Is Nothing Then
            Console.WriteLine("Thumbnail {0} by {1} {2}bpp", thumbnail.Width, thumbnail.Height, thumbnail.BitsPerPixel)
         Else
            Console.WriteLine("null")
         End If
      End Using

      Console.WriteLine("     Annotations")
      Console.WriteLine("       IsAnnotationsModified:" & page.IsAnnotationsModified)
      Console.WriteLine("       HasEmbeddedAnnotations:" & page.HasEmbeddedAnnotations)
      Dim container As AnnContainer = page.GetAnnotations(False)
      If Not container Is Nothing Then
         Console.WriteLine("       Size:" & container.Size.ToString())
         Console.WriteLine("       Objects:" & container.Children.Count)
         For Each child As AnnObject In container.Children
            Console.WriteLine("        FriendlyName:" & child.FriendlyName)
            Console.WriteLine("        Bounds:" & child.Bounds.ToString())
         Next child
      Else
         Console.WriteLine("       NULL")
      End If
   Next page

   Console.WriteLine("--------")
End Sub

<TestMethod()> _
Public Sub DocumentExample()
   DocumentFactory.Cache = CreateCache()

   Dim policy As CacheItemPolicy = New CacheItemPolicy()
   policy.AbsoluteExpiration = DateTime.Now + New TimeSpan(0, 0, 1)
   policy.SlidingExpiration = New TimeSpan(0, 0, 1)

   Dim options As LoadDocumentOptions = New LoadDocumentOptions()
   options.CachePolicy = policy

   Dim documentId As String = Nothing

   Using document As Document = DocumentFactory.LoadFromFile(Path.Combine(ImagesPath.Path, "Leadtools.pdf"), options)
      document.AutoDeleteFromCache = False

      PrintOutDocumentInfo(document)

      documentId = document.DocumentId
      document.SaveToCache()
   End Using

   System.Threading.Thread.Sleep(2000)

   Using document As Document = DocumentFactory.LoadFromCache(documentId)
      If document Is Nothing Then
         Console.WriteLine("Cached document was expired and deleted!")
      End If
   End Using
End Sub
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Forms.DocumentWriters;
using Leadtools.Svg;
using Leadtools.Documents;
using Leadtools.Caching;
using Leadtools.Annotations.Core;
using Leadtools.Forms.Ocr;
using Leadtools.Barcode;

public static FileCache CreateCache()
{
   var cacheDir = Path.Combine(ImagesPath.Path, "cache");
   if (Directory.Exists(cacheDir))
      Directory.Delete(cacheDir, true);
   Directory.CreateDirectory(cacheDir);

   var cache = new FileCache();
   cache.CacheDirectory = cacheDir;

   return cache;
}

public static void PrintOutDocumentInfo(Document document)
{
   Console.WriteLine("General");
   Console.WriteLine("  DocumentId:" + document.DocumentId);
   Console.WriteLine("  Uri:" + document.Uri);
   Console.WriteLine("  IsDownloaded:" + document.IsDownloaded);
   Console.WriteLine("  DocumentFileName:" + document.GetDocumentFileName());
   Console.WriteLine("  IsReadOnly:" + document.IsReadOnly);
   Console.WriteLine("  MimeType:" + document.MimeType);
   Console.WriteLine("  IsEncrypted:" + document.IsEncrypted);
   Console.WriteLine("  IsDecrypted:" + document.IsDecrypted);
   Console.WriteLine("  UserData:" + document.UserData);
   Console.WriteLine("Cache");
   Console.WriteLine("  HasCache:" + document.HasCache);
   Console.WriteLine("  AutoDeleteFromCache:" + document.AutoDeleteFromCache);
   if (document.HasCache)
   {
      var policy = document.CreateCacheItemPolicy();
      Console.WriteLine("  CacheItemPolicy:{0} {1}", policy.AbsoluteExpiration, policy.SlidingExpiration);
   }
   else
   {
      Console.WriteLine("  CacheItemPolicy: none");
   }
   Console.WriteLine("Metadata");
   foreach (var item in document.Metadata)
      Console.WriteLine("  {0} {1}", item.Key, item.Value);
   Console.WriteLine("Annotations");
   Console.WriteLine("  AnnotationsUri:" + document.Annotations.AnnotationsUri);

   Console.WriteLine("Images");
   Console.WriteLine("  DefaultBitsPerPixel:{0}", document.Images.DefaultBitsPerPixel);
   Console.WriteLine("  ThumbnailPixelSize:{0}", document.Images.ThumbnailPixelSize);

   Console.WriteLine("Pages");
   Console.WriteLine("  DefaultPageSize:{0}", document.Pages.DefaultPageSize);
   Console.WriteLine("  DefaultResolution:{0}", document.Pages.DefaultResolution);
   Console.WriteLine("  Count:" + document.Pages.Count);

   foreach (var page in document.Pages)
   {
      Console.WriteLine("    PageNumber:" + page.PageNumber);
      Console.WriteLine("      OriginalPageNumber:" + page.OriginalPageNumber);
      Console.WriteLine("      Size:{0}", page.Size);
      Console.WriteLine("      Resolution:{0}", page.Resolution);
      Console.WriteLine("      UserData:" + page.UserData);
      Console.WriteLine("      IsDeleted:" + page.IsDeleted);
      Console.WriteLine("      IsImageModified:" + page.IsImageModified);

      using (var rasterImage = page.GetImage())
      {
         if (rasterImage != null)
            Console.WriteLine("Image {0} by {1} {2}bpp", rasterImage.Width, rasterImage.Height, rasterImage.BitsPerPixel);
         else
            Console.WriteLine("null");
      }

      using (var thumbnail = page.GetThumbnailImage())
      {
         if (thumbnail != null)
            Console.WriteLine("Thumbnail {0} by {1} {2}bpp", thumbnail.Width, thumbnail.Height, thumbnail.BitsPerPixel);
         else
            Console.WriteLine("null");
      }

      Console.WriteLine("     Annotations");
      Console.WriteLine("       IsAnnotationsModified:" + page.IsAnnotationsModified);
      Console.WriteLine("       HasEmbeddedAnnotations:" + page.HasEmbeddedAnnotations);
      var container = page.GetAnnotations(false);
      if (container != null)
      {
         Console.WriteLine("       Size:" + container.Size);
         Console.WriteLine("       Objects:" + container.Children.Count);
         foreach (var child in container.Children)
         {
            Console.WriteLine("        FriendlyName:" + child.FriendlyName);
            Console.WriteLine("        Bounds:" + child.Bounds);
         }
      }
      else
      {
         Console.WriteLine("       NULL");
      }
   }

   Console.WriteLine("--------");
}
[TestMethod]
public void DocumentExample()
{
   DocumentFactory.Cache = CreateCache();

   var policy = new CacheItemPolicy();
   policy.AbsoluteExpiration = DateTime.Now + new TimeSpan(0, 0, 1);
   policy.SlidingExpiration = new TimeSpan(0, 0, 1);

   var options = new LoadDocumentOptions();
   options.CachePolicy = policy;

   string documentId = null;

   using (var document = DocumentFactory.LoadFromFile(Path.Combine(ImagesPath.Path, "Leadtools.pdf"), options))
   {
      document.AutoDeleteFromCache = false;

      PrintOutDocumentInfo(document);

      documentId = document.DocumentId;
      document.SaveToCache();
   }

   System.Threading.Thread.Sleep(2000);

   using (var document = DocumentFactory.LoadFromCache(documentId))
   {
      if (null == document)
      {
         Console.WriteLine("Cached document was expired and deleted!");
      }
   }
}
必要条件

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

参照

参照

ドキュメントメンバ
Leadtools.Documents名前空間
ドキュメントライブラリ機能
LEADTOOLSドキュメントライブラリを使用したロード
ドキュメントライブラリ座標システム
ドキュメントライブラリを使用した暗号化ファイルのロード
ドキュメントライブラリによるテキストの解析
ドキュメントライブラリによるバーコード処理
LEADTOOLSドキュメントビューワの使用
LEADTOOLSドキュメントコンバーターの使用

   Leadtools.Documentsは、DocumentまたはMedicalツールキットのライセンスと、解除キーが必要です。詳細は、以下を参照してください。LEADTOOLSツールキット機能