今回紹介するコンポーネント
本記事では以下の3つのコンポーネントを紹介します。
C1Word(Word Library for WPF)
グレープシティ社の提供する、Word形式での出力に対応したコンポーネントで、ComponentOne Studio for WPFを導入することで利用可能になります。
C1Wordではテキスト装飾だけでなく、画像やハイパーリンクなども利用することができます。
Word形式だけでなく、リッチテキスト形式で出力し、Windows標準のワードパットアプリで編集することも可能です。
注意
本記事執筆時点ではC1Wordはベータ版です。
C1Pdf(PDF for WPF)
同じくグレープシティ社の提供する、Adobe PDFドキュメントを作成できるコンポーネントです。C1Word同様にComponentOne Studio for WPFを導入することで利用可能になります。
テキストや画像の表示、しおり機能や、ファイルの添付など、PDFの高度な機能も利用可能です。
C1PdfViewer(PdfViewer for WPF)
同じくグレープシティ社の提供する、Adobe PDFドキュメントを表示できるコンポーネントです。C1Word同様にComponentOne Studio for WPFを導入することで利用可能になります。
対象読者
Visual Studioを利用してアプリケーションを作成した経験がある、またはC#、VisualBasicなどの.NET系言語での開発経験がある方。
必要な環境
ComponentOne Studio for WPFを利用するには以下の環境が必要となります。詳しくは、公式サイトのページを参照ください。
- Visual Studio 2010/2012/2013/2015 日本語版
- .NET Framework 4.5.2/4.6/4.6.1/4.6.2
本記事はVisual Studio 2015(Communityエディション)、.NET Framework 4.6環境で画像キャプチャーの取得、動作検証を行っております。
Microsoft WordなどのOffice製品や、PDF作成ソフト(Adobe Acrobatなど)が無くても開発可能です(作成したPDFを閲覧する場合にビューワーが必要になりますが、アプリケーションの開発に必要ではありません)。
ComponentOne Studio for WPFのインストール
ComponentOne Studio for WPFの導入については過去の記事「モダンな環境に対応する便利で多様なコンポーネント ~ バーコード/Excel/PDF/高解像度対応/タッチ操作/タイル」を参照ください。前述の記事ではWinFormsを選択してインストールしていますが、本記事ではWPFに読み替えてください。
ComponentOne Studio for WPFのバージョンは執筆時点で最新の「2016J v2」を利用します。
Word形式でファイルを保存する
C1Wordを用いて、Word形式(.docx)とリッチテキスト形式(.rtf)のファイルを出力する方法を紹介します。
Word形式での保存方法
まずは、テキストを一行書き込んで保存する方法を紹介します。
参照の追加
ソリューションエクスプローラーの「参照」を右クリック→「参照の追加」をクリックします。
![参照の追加](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_001.gif)
左ナビの「アセンブリ」→「拡張」から「C1.WPF.Word JPN」にチェックを入れ、右下の「OK」をクリックします。
![C1.WPF.Word JPNの追加](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_002_s.gif)
「C1.WPF.Word JPN」が表示されていない場合はComponentOne Studio for WPFのバージョンが古い可能性があります。
サイトからComponentOne Studioの最新版をダウンロードするかC1LiveツールでComponentOne Studio for WPFを最新にしてください。C1Liveツールはデフォルトインストールでは、以下の場所にあります。
C:\Program Files (x86)\ComponentOne\C1Live\C1LiveUI.2.exe
usingの追加
MainWindow.xaml.csに以下のusingを追加します。
using C1.WPF.Word;
処理の記述
Wordのファイルをドキュメントフォルダに保存するシンプルな処理を紹介します。
// ドキュメントクラスを作成 C1WordDocument word = new C1WordDocument(); word.Clear(); // ドキュメント情報を設定します word.Info.Author = "CodeZine"; word.Info.Subject = "C1Wordサンプル"; word.Info.Title = "サンプル"; // テキストとフォントの設定 string text = "C1WordでWord形式のファイルを保存するサンプル"; Font font = new Font("Segoe UI Light", 20, RtfFontStyle.Bold); // パラグラフを追加 word.AddParagraph(text, font, Colors.Blue, RtfHorizontalAlignment.Justify); // 保存するファイルのパス // ドキュメントフォルダーに保存する string document_path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // ファイル名 string file_name = "sample.docx"; // 保存処理 word.Save(document_path + System.IO.Path.DirectorySeparatorChar + file_name);
アプリケーションでは、上記に保存フォルダをダイアログでユーザーに選択させる処理などが必要になりますが、ここでは簡略化のため省略してあります。ダイアログでファイル保存先を選択させるサンプルは公式のクイックスタートを参照ください。
C1Wordの機能紹介
C1Wordの基本的な機能を紹介します。
画像の表示
Wordドキュメントに画像を含めることができます。
以下は画像を表示する簡単なサンプルです。ドキュメントフォルダーにsample.pngというファイルがあることを前提としています。
// ドキュメントフォルダーのパス string document_path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // 書き込み可能なビットマップに画像をロードします BitmapImage bitmap = new BitmapImage(); FileStream stream = File.OpenRead(document_path + System.IO.Path.DirectorySeparatorChar + "sample.png"); bitmap.BeginInit(); bitmap.StreamSource = stream; bitmap.EndInit(); var wb = new WriteableBitmap(bitmap); Rect rect = new Rect(30, 30, 120, 120); // アスペクト比を維持して画像をページの中央に配置します word.DrawImage(wb, rect);
![画像を表示する](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_003_s.gif)
グラフィックの描画
円形、四角形、ベジェ曲線。折れ線グラフなどを描くこともできます。
以下は円を描画するサンプルです。
Rect rect = new Rect(30, 180, 120, 120); word.FillPie(Colors.Red, rect, 0, 360); word.DrawImage(wb, rect);
![円を描画](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_004_s.gif)
その他、C1Wordの機能は以下の公式ドキュメントを参照ください。
PDF形式でファイルを保存する
C1Pdfを用いてPDFを保存する方法を解説します。
PDF形式での保存方法
まずは、テキストを一行書き込んだデータをPDFとして保存します。
参照の追加
ソリューションエクスプローラーの「参照」を右クリック→「参照の追加」をクリックします。
![参照の追加](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_001.gif)
左ナビの「アセンブリ」→「拡張」から「C1.WPF JPN 」と「C1.WPF.Pdf JPN」にチェックを入れ、右下の「OK」をクリックします。
![C1.WPF.Pdf JPNの追加](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_006_s.gif)
usingの追加
MainWindow.xaml.csに以下のusingを追加します。
using C1.WPF.Pdf;
処理の記述
PDFのファイルをドキュメントフォルダに保存するシンプルな処理を紹介します。
C1PdfDocument pdf = new C1PdfDocument(); Rect rect = new Rect(30, 30, 120, 120); Font font = new Font("Segoe UI", 12); pdf.DrawString("PDF Sample", font, Colors.Black, rect); // ドキュメントフォルダーのパス string document_path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // ファイル名 string file_name = "sample.pdf"; // 保存処理 pdf.Save(document_path + System.IO.Path.DirectorySeparatorChar + file_name);
C1Pdfの機能紹介
C1Pdfの基本的な機能を紹介します。
画像、図形の描画
PDFに画像や図形を描画することができます。
// 図形を描く範囲を指定 Rect rect = new Rect(30, 180, 120, 120); // 円を描く pdf.FillPie(Colors.Red, rect, 0, 360);
添付ファイルの保存
PDFにファイルを添付することができます。
// 図形を描く範囲を指定 Rect rect = new Rect(30, 330, 40, 40); // ドキュメントフォルダーのパス string document_path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string file_path = document_path + System.IO.Path.DirectorySeparatorChar + "sample.png"; // ファイルを添付します pdf.AddAttachment(file_path, rect);
![ファイルを添付](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_007_s.gif)
しおりを追加
PDFにしおりを追加することが可能です。
// ブックマークを追加する pdf.AddBookmark(text, 0, 30);
![しおりを追加](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_008_s.gif)
その他、C1Pdfの機能は以下の公式ドキュメントを参照ください。
PDF形式でファイルを表示する
C1PdfViewer for WPFを用いてPDFをアプリケーションに表示する方法を紹介します。
PDF形式の表示方法
PDFを表示する方法を解説します。
参照の追加
ソリューションエクスプローラーの「参照」を右クリック→「参照の追加」をクリックします。
![参照の追加](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_001.gif)
左ナビの「アセンブリ」→「拡張」から「C1.WPF JPN 」と「C1.WPF.PdfViewer JPN」にチェックを入れ、右下の「OK」をクリックします。
![C1.WPF.PDF PdfViewrの追加](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_010_s.gif)
画面へのC1PdfViewerの追加
ツールボックスからMainWindows.xamlにC1PdfViewerを追加します。
![画面へのC1PdfViewerの追加](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_011.gif)
追加したC1PdfViewerには以下のようにNameプロパティを設定します。
<Grid> <c1:C1PdfViewer x:Name="PdfViewer" HorizontalAlignment="Left" Margin="6,29,0,0" VerticalAlignment="Top"/> </Grid>
usingの追加
MainWindow.xaml.csに以下のusingを追加します。
using C1.WPF.Pdf;
処理の記述
MainWindow.xaml.csに処理を記述します。
コードはドキュメントフォルダにsample.pdfというファイルがある前提で記述されています。
// ドキュメントフォルダーのパス string document_path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // ファイル名 string file_name = "sample.pdf"; // PDFファイルのロード this.PdfViewer.LoadDocument(document_path + System.IO.Path.DirectorySeparatorChar + file_name);
実行すると以下のようにPDFを読み込んで表示できます。
![PDFの読み込み](http://cz-cdn.shoeisha.jp/static/images/article/9907/9907_012_s.gif)
C1Pdfで作成したPDFの表示方法
C1PdfのC1PdfDocumentクラスを用いて作成したPDFを読み込むこともできます。
// C1PdfDocumentを作成する C1PdfDocument pdf = new C1PdfDocument(); Rect rect = new Rect(30, 30, 120, 120); Font font = new Font("Segoe UI", 12); String text = "PDF Sample"; // テキストをPDFに書き込む pdf.DrawString(text, font, Colors.Black, rect); //内容をStreamに保存 MemoryStream stream = new MemoryStream(); pdf.Save(stream); // 忘れずにSteamをシークする stream.Seek(0, SeekOrigin.Begin); // ロードする this.PdfViewer.LoadDocument(stream);
まとめ
業務系アプリケーションにおいて、アプリケーションのデータをWordやPDFで出力できるという付加価値は新たな提案につながるでしょう。
ComponentOne Studio for WPFを利用すれば、WordやPDFへの出力が少ない工数で実装できます。また、本記事では紹介しませんでしたが、ComponentOne Studio for WPFではExcelファイルを扱う機能も提供しています。次回は、ComponentOne Studio for WPFを用いてExcelファイルを取り扱う方法をご紹介します。
これら、本記事で紹介した機能の概要だけでも記憶にとどめて置き、提案に活かしていただければ幸いです。