Portable Document Format(PDF)は、印刷やエクスポートに適した形式です。レポートをこの形式でエクスポートするには、PDFRenderingExtensionを使用します。PDF描画拡張機能では、フォントリンク、デジタル署名、外字(EUDC)などの機能を使用することも可能です。
レポートをPDF形式でエクスポートするには、プロジェクトに以下のパーケッジを追加します。
レポートをPDF形式でエクスポートする方法の例を以下に示します。
Visual Basicコード(Form Loadイベント内に貼り付けます。) |
コードのコピー
|
---|---|
' 描画するページレポートを指定します。 Dim rptPath As New IO.FileInfo("..\..\PageReport1.rdlx") Dim pageReport As New GrapeCity.ActiveReports.PageReport(rptPath) ' 出力先のディレクトリを作成します。 Dim outputDirectory As New System.IO.DirectoryInfo("C:\MyPDF") outputDirectory.Create() ' エクスポートの各種設定を行います。 Dim pdfSetting As New GrapeCity.ActiveReports.Export.Pdf.Page.Settings() ' RenderingExtensionを使用し、レポートをエクスポートします。 Dim pdfRenderingExtension As New GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension() Dim outputProvider As New GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, "Sample") ' 出力ファイルがすでに存在する場合は上書きします。 outputProvider.OverwriteOutputFile = True pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting) |
C#コード(Form Loadイベント内に貼り付けます。) |
コードのコピー
|
---|---|
// 描画するページレポートを指定します。 System.IO.FileInfo rptPath = new System.IO.FileInfo(@"..\..\PageReport1.rdlx"); GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(rptPath); // 出力先のディレクトリを作成します。 System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyPDF"); outputDirectory.Create(); // エクスポートの各種設定を行います。 GrapeCity.ActiveReports.Export.Pdf.Page.Settings pdfSetting = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings(); // RenderingExtensionを設定して、レポートを描画します。 GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension(); GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, "Sample"); // 出力ファイルがすでに存在する場合は上書きします。 outputProvider.OverwriteOutputFile = true; pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting); |
ActiveReportsには、レポートをPDFにどのようにエクスポートするかを制御するオプションが用意されています。
プロパティ | 説明 |
---|---|
Application | PDFビューワアプリケーションの[文書のプロパティ]ダイアログで[アプリケーション]に表示する値を設定します。 |
Author | PDFビューワアプリケーションの[文書のプロパティ]ダイアログに表示される[作成者]の名前を入力します。 |
CenterWindow | 「True」に設定すると、ドキュメントは画面の中央に表示されます。既定値は「False」です。 |
DisplayMode | ドキュメントを開いたときにどのように表示するかを指定します。FullScreenモードは、メニューバー、ウィンドウコントロール、その他のウィンドウを表示せずにドキュメントを表示します。 |
DisplayTitle | 「True」に設定すると、ドキュメントのタイトルが設定されている場合に、ウィンドウのタイトルバーにそのタイトルが表示されます。「False」に設定すると、PDFファイルの名前が表示されます。既定値は「Fasle」です。 |
DpiX | 出力するPDFファイルの水平解像度を設定します。 |
DpiY | 出力するPDFファイルの垂直解像度を設定します。 |
DocumentToAddAfterReport | 出力の最後に挿入するPDFドキュメントへのパスを取得または設定します。 |
DocumentToAddBeforeReport | 出力の最初に挿入するPDFドキュメントへのパスを取得または設定します。 |
EmbedFonts |
レポートで使用しているフォントをPDFファイルに埋め込むかどうかを指定します。設定可能な値は以下の通りです。 All: すべてのフォントを埋め込みます Partial: アスキー文字以外の文字を表示するのに使用しているフォントを埋め込みます None: フォントを埋め込みません
注意: 日本語フォントの非埋め込みはProfessionalの機能です。Standardで使用する場合、日本語フォントはPDFに埋め込まれます。
|
Encrypt | ドキュメントが暗号化されるかどうかを決定します。 メモ: Encryptが「False」に設定されている場合、ユーザー許可とパスワードは無効になります。 |
EndPage | レポート内のレンダリングする最後のページ。既定値はStartPageの値(すなわち、「0」)です。 |
FallbackFonts | 元のフォントからグリフを検索するため、フォントファミリ名のカンマ区切りの文字列を取得、または設定します。 |
FitWindow | 「True」に設定すると、ドキュメントのウィンドウ(ビューワの内部ウィンドウ)は常に初期設定のサイズで表示されます。既定値は「False」です。 |
HideMenubar | 「True」に設定すると、ドキュメントを表示するビューワアプリケーションのメニューバーを非表示にします。既定値は「False」です。 |
HideToolbar | 「True」に設定すると、ドキュメントを表示するビューワアプリケーションのツールバーを非表示にします。既定値は「False」です。 |
HideWindowUI | 「True」に設定すると、ドキュメントウィンドウのユーザーインタフェース要素(スクロールバーやナビゲーションコントロールなど)を非表示にしてドキュメントの内容だけが表示されます。既定値は「False」です。 |
ImageInterpolation | 画像の補間値です。ファイルをPDFにエクスポートする際に画像補間を有効にするかどうかを指定します。 |
Keywords | ドキュメントに関連付けられたキーワードを設定します。 |
NeverEmbedFonts |
PDFドキュメントに埋め込めないフォントファミリをセミコロン区切りの文字列形式で設定します。
注意: 日本語フォントの非埋め込みはProfessionalの機能です。Standardで使用する場合、日本語フォントはPDFに埋め込まれます。
|
OwnerPassword | リーダーに入力するオーナーパスワードを設定します。これは指定されたユーザー許可にかかわらずドキュメントへのフルアクセスを許可します。オーナーパスワード設定しない場合、セキュリティ設定を変更することはできません。 |
PageHeight | レポートのページ高さの値(インチ単位)を取得、または設定します。整数、または小数値の後に"in"を付ける必要があります(例 1in)。レポートのオリジナルの設定は、この値によってオーバーライドされます。 |
PageWidth | レポートのページ幅の値(インチ単位)を取得、または設定します。整数、または小数値の後に"in"を付ける必要があります(例 1in)。レポートのオリジナルの設定は、この値によってオーバーライドされます。 |
Permissions | ドキュメントに対するユーザー許可を指定します。カンマを使用して複数のユーザー許可値を組み合わせることができます。AllowFillin、AllowAccessibleReaders、AllowAssemblyのユーザー許可を使用する場合は、Use128Bitプロパティを「True」に設定する必要があります。 |
PrintLayoutMode | PDFドキュメントに使用するレイアウトモードを指定します。 |
PrintOnOpen | ドキュメントが開いた後、印刷するかどうかを示す値を取得または設定します。 |
PrintPresets | PDF印刷プリセットのダイアログを取得または設定します。 |
SizeToFit | PDFのページを選択した用紙サイズに合わせるかどうかを指定します。 |
StartPage | 描画するレポートの最初のページです。値が「0」の場合は、すべてのページが描画されます。既定値は「1」です。 |
Subject | ドキュメントのサブタイトルを設定します。 |
Title | ドキュメントのタイトルを設定します。 |
Use128Bit | 「True」に設定すると、高水準の128ビットRC4暗号方式を使用します。「Flase」に設定すると、低水準の40ビットRC4暗号方式を使用します。 |
UserPassword | リーダーに入力するユーザーパスワードを設定します。このプロパティ値が空白の場合、ドキュメントを開いた時にパスワードを入力するダイアログは表示されません。ただし、指定されたユーザー許可によって操作は制限されます。 |
Version | どのバージョンのPDFで出力するかを設定します。利用可能なオプションは、PDF-1.2、PDF-1.3、PDF-1.4、PDF-1.5、PDF-1.6、PDF-1.7、PdfA1a、PdfA1b、PdfA2a、PdfA2b、PdfA2u、PdfA3a、PdfA3b、PdfA3u、PdfUA1、およびPDF-2.0です。 |
WatermarkAngle | PDFドキュメント上のウォーターマーク(透かし)の角度を指定します。有効な値の範囲は「0」~「359」で、「0」は水平(左から右)です。 |
WatermarkColor | PDFドキュメント上のウォーターマーク(透かし)のテキストの色を選択します。透かしの色の既定値はグレーですが、任意のWebカラー、システムカラー、カスタムカラーを選択できます。 |
WatermarkFontName | ウォーターマーク(透かし)に使用するフォントを設定します。 |
WatermarkFontSize | ウォーターマークのフォントサイズを設定します。 |
WatermarkFontStyle | ウォーターマークのフォントスタイルを設定します。 |
WatermarkPrintOnly | ウォーターマークがあるレポートをプリンタまたはMicrosoft Print to PDFを使用して印刷するかどうかを指定します。既定値は「False」です。 |
WatermarkTitle | PDFドキュメント上のウォーターマーク(透かし)のタイトルとして使用するテキスト(例: CONFIDENTIAL)を入力します。 |
ActiveReportsでは、レポートをPDFドキュメントにエクスポートするとき、PrintPresetsクラスを使用して、基本的な印刷設定をプリセットできます。プリセットした設定は、印刷ダイアログボックスを開いたときに自動で印刷設定に反映されます。詳細については、「PDF印刷プリセットの使用」を参照してください。
プロパティ | 解説 |
---|---|
PageScaling | 印刷可能領域の拡大/縮小を指定します。「Default」を選択した場合は、印刷可能領域に合わせて縮小されます。「None」を選択した場合は、縮小を行いません。 |
DuplexMode |
プリンタの「両面印刷モード」を指定します。両面オプションを選択する場合、選択したプリンターが両面印刷に対応している必要があります。以下のオプションのいずれかを選択します。
|
PaperSourceByPageSize | ページ設定オプションではなく、PDFページサイズに基づいて出力トレイを決定します。複数のページサイズのPDFを印刷するとき、このオプションを使用できます。デフォルトでは、「False」に設定されています。 |
PrintPageRange | ページ範囲を指定します。"1-3"のように範囲を指定するか、"1", "2", "3"のように特定のページを指定します。 |
NumberOfCopies | 印刷する部数を指定します。[Two]~[Five]のいずれかを選択するか、1部のみ印刷する場合は[Default]オプションを選択します。 |
PDFは印刷に最適な形式であると同時に、見出しマップ、ブックマーク、ハイパーリンクなどの対話的な機能もサポートしています。ただし、描画時に非表示になっていたデータ(ドリルダウンレポートのデータなど)は出力されません。したがって、描画前に折りたたまれた項目をすべて展開しておくことを推奨します。
SignatureFormatプロパティを使用して、ISO 32000-2(PDF2.0)のPAdES(PDF長期署名)仕様に準拠した署名を使用できます。以下に、サンプルコードを示します。
Visual Basicコード |
コードのコピー
|
---|---|
settings.SignatureFormat = GrapeCity.ActiveReports.Export.Pdf.Section.Signing.SignatureFormat.ETSI_CAdES_detached |
C#コード |
コードのコピー
|
---|---|
settings.SignatureFormat = GrapeCity.ActiveReports.Export.Pdf.Section.Signing.SignatureFormat.ETSI_CAdES_detached; |
ActiveReportsのプロジェクトでPDF電子署名を使用する方法については、「電子署名 サンプル(Professional)」を参照してください。
ページレポートおよびRDLレポートでは、InputFieldコントロールを使用できます。このコントロールを使用すると、エクスポートされたPDF内のフィールドが編集可能になり、InputFieldの値を変更できます。
InputFieldには、TextとCheckboxの2つのオプションがあり、InputTypeプロパティで設定できます。各オプションには、それぞれのプロパティが含まれます。TextはTextBoxコントロールのプロパティを取得し、CheckboxはCheckBoxコントロールのプロパティを継承します。
注意: InputFieldコントロールはProfessionalの機能です。Standardで使用する場合、エクスポートされたファイルにInputFieldコントロールが表示されません。
キーワード、説明などのメタデータは、検索エンジンによって検索を絞り込むために使用されます。AdditionalMetadataプロパティを使用して、タイトル、寄稿者、共同作成者、著作権、説明など、事前定義されたいくつかのアクセサを追加できます。許可される名前空間は次のとおりです。
VBコード(Form Loadイベント内に貼り付けます。) |
コードのコピー
|
---|---|
' 描画するページレポートを提供します。 Dim rptPath As System.IO.FileInfo = New System.IO.FileInfo("..\..\PageReport1.rdlx") Dim pageReport As GrapeCity.ActiveReports.PageReport = New GrapeCity.ActiveReports.PageReport(rptPath) ' 出力ディレクトリを作成します。 Dim outputDirectory As System.IO.DirectoryInfo = New System.IO.DirectoryInfo("C:\MyPDF") outputDirectory.Create() ' メタデータを追加します。 Dim pdfSetting = New GrapeCity.ActiveReports.Export.Pdf.Page.Settings() ' GrapeCity.ActiveReports.Export.Pdfをインポートします。 pdfSetting.AdditionalMetadata.Add(New AdditionalMetadataInfo With { .[Namespace] = AdditionalMetadataNamespace.PurlOrg, ' Dublin Core のプロパテ .Key = "title", .Value = "請求書" }) Dim pdfRenderingExtension As GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension = New GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension() Dim outputProvider As GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider = New GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name)) outputProvider.OverwriteOutputFile = True pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting) |
C#コード(Form Loadイベント内に貼り付けます。) |
コードのコピー
|
---|---|
// 描画するページレポートを提供します。 System.IO.FileInfo rptPath = new System.IO.FileInfo(@"..\..\PageReport1.rdlx"); GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(rptPath); // 出力ディレクトリを作成します。 System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyPDF"); outputDirectory.Create(); // メタデータを追加します。 var pdfSetting = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings(); // GrapeCity.ActiveReports.Export.Pdfをインポートします。 pdfSetting.AdditionalMetadata.Add(new AdditionalMetadataInfo { Namespace = AdditionalMetadataNamespace.PurlOrg, // Dublin Core のプロパティ Key = "title", Value = "請求書" }); GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension(); GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name)); outputProvider.OverwriteOutputFile = true; pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting); |
Attachmentsプロパティを使用して、エクスポートされたPDFに添付ファイルをメタデータ(例えば、請求書など)として追加することができます。このプロパティを使用すると、PDFにxmlやtxt形式のファイルを添付できます。以下は、ページレポートおよびRDLレポートをPDFにエクスポートして、エクスポートされたPDFにファイルを添付する例です。
VBコード(Form Loadイベント内に貼り付けます。) |
コードのコピー
|
---|---|
' 描画するページレポートを提供します。 Dim rptPath As System.IO.FileInfo = New System.IO.FileInfo("..\..\PageReport1.rdlx") Dim pageReport As GrapeCity.ActiveReports.PageReport = New GrapeCity.ActiveReports.PageReport(rptPath) ' 出力ディレクトリを作成します。 Dim outputDirectory As System.IO.DirectoryInfo = New System.IO.DirectoryInfo("C:\MyPDF") outputDirectory.Create() ' 添付ファイルを追加します。 Dim pdfSetting = New GrapeCity.ActiveReports.Export.Pdf.Page.Settings() pdfSetting.Attachments.Add(New AttachmentInfo With { .Name = "file.txt", .Content = System.IO.File.ReadAllBytes("D:\Reports\file.txt"), .Description = "添付ファイルの説明" ' オプション }) Dim pdfRenderingExtension As GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension = New GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension() Dim outputProvider As GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider = New GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name)) outputProvider.OverwriteOutputFile = True pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting) |
C#コード(Form Loadイベント内に貼り付けます。) |
コードのコピー
|
---|---|
// 描画するページレポートを提供します。 System.IO.FileInfo rptPath = new System.IO.FileInfo(@"..\..\PageReport1.rdlx"); GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(rptPath); // 出力ディレクトリを作成します。 System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyPDF"); outputDirectory.Create(); // 添付ファイルを追加します。 var pdfSetting = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings(); // using GrapeCity.ActiveReports.Export.Pdf; pdfSetting.Attachments.Add(new AttachmentInfo { Name = "file.txt", Content = System.IO.File.ReadAllBytes(@"D:\Reports\file.txt"), Description = "添付ファイルの説明" // オプション }); // または //{ // Name = "file.xml", // Content = File.ReadAllBytes(Application.StartupPath + "\\file.xml") //}; GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension(); GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name)); outputProvider.OverwriteOutputFile = true; pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting); |
エクスポートされたPDFを開くと、添付ファイルが表示されます。これは、Adobe Acrobat DCの左側のパネルで確認できます。