ComponentOne Information

ComponentOne Studio/Wijmo/Xuniの最新情報を公開中

UWPアプリでPDFドキュメントをプレビュー表示する

業務アプリにおいて、請求書などの書類をPDFドキュメントとして作成し、それをアプリケーション上でプレビュー表示したい、といった機能要件は少なくありません。その傾向は、開発プラットフォームがUWPの場合においても同様のようです。

UWPプラットフォームでは、Windows.Data.Pdf名前空間にあるPdfDocumentクラスを使用することで、PDFドキュメントを読み込み、各ページを画像として取得し、Imageオブジェクトを介してその内容をウィンドウ上に表示することができます。

PdfDocument Class (Windows.Data.Pdf) - UWP app developer | Microsoft Docs

しかしながら、一般的なビューワーにみられるようなページの切り替えや拡大・縮小などのズーム機能など、独自に実装しなければならない要素が多く、実現には多くの手間ががかかります。また、各ページを画像として処理するが故に、テキストの検索や選択といった高度な制御を行うのが困難なため、機能要件の実現には苦労されているのではないでしょうか。

ComponentOne Studio」には、そのような悩みを瞬時に解決する、とっておきの製品が用意されています。

ビューワー製品「FlexViewer for UWP」

ComponentOne Studioには、「FlexViewer for UWP」というビューワーコンポーネントが収録されております。そのC1FlexViewerコントロールを使用することで、UWPアプリケーションに対して高機能なドキュメントビューワー機能を容易に実装できます。
f:id:ComponentOne_JP:20170830112843p:plain

C1FlexViewerコントロールは、レポートコンポーネント「FlexReport for UWP」で作成した帳票ドキュメントのほか、C1Document(ComponentOne Studio独自のドキュメント形式)、SQL Server Reporting Service(SSRS)、PDFなどさまざまな形式のドキュメントをサポートしています。マウス・タッチの両操作に対応しており、ページの拡大・縮小やスクロール、サムネイル表示、テキストの検索および選択、印刷、画像形式でのエクスポートなど、数多くの機能が備わっています。

C1FlexViewerコントロールの使い方

C1FlexViewerコントロールを使用し、既存のPDFドキュメントをプレビュー表示するには、「PDFDocumentSource for UWP」のC1PdfDocumentSourceクラスを使用してPDFファイルを読み込み、それをドキュメントソースとしてC1FlexViewerコントロールに認識させるだけです。

_pdfDocSource = new C1PdfDocumentSource();
await _pdfDocSource.LoadFromFileAsync(storageFile);
flexViewer.DocumentSource = _pdfDocSource;

製品に収録されている「FlexPdfViewer」サンプルでは、より具体的なコードの記述例と実際の動作をご確認いただけます。このサンプルはトライアル版からもご利用いただけますので、この機会に是非お試しください。

≫ トライアル版のダウンロードはこちら

UWP版に限定した機能

FlexViewerおよびPDFDocumentSourceは、WinForms版、WPF版も提供されており、機能的にもほぼ同等となっています。さらにUWP版では、プレビューのレンダリング方法を選択できる独自の機能が提供されています。

前述の通り、UWPではPdfDocumentクラスを使用して、PDFドキュメントの各ページの内容を画像として描画することができます。そのため、UWP版のC1PdfDocumentSourceクラスにのみ、UseSystemRenderingプロパティが用意されています。このプロパティを使用して、ドキュメントのレンダリング方法を以下の2種類から選択できます。

C1PdfDocumentSource独自のレンダリング
C1FlexViewerのすべての機能を利用できます。埋め込みフォントを使用したPDFドキュメントのプレビューに適しています。PDFドキュメント内で非埋め込みの特定のフォントが使用されている場合、別のフォントに置き換えられるか、文字化けが発生する場合があります。
PdfDocumentによるレンダリング
埋め込みフォントの影響を受けず、より正確なレンダリングが行われます。ページイメージを画像として処理するため、ドキュメント内のテキストに対する操作(テキストの選択や検索、ハイパーリンクなど)は利用できません。

この機能により、アプリケーションの実装目的に合わせて、どちらのレンダリングを使用するかを自由に選択することができます。

UWPエキスパートも集結

グレープシティでは、2017年10月6日に「業務アプリ×XAML」をテーマにしたイベントを開催します。詳細はこちら。

ComponentOne