ActiveReports for .NET 18.0J
PDFへの描画
ActiveReportsユーザーガイド > エクスポート > 描画拡張機能 > PDFへの描画

Portable Document Format(PDF)は、印刷やエクスポートに適した形式です。レポートをこの形式でエクスポートするには、PDFRenderingExtensionを使用します。PDF描画拡張機能では、フォントリンク、デジタル署名、外字(EUDC)などの機能を使用することも可能です。

レポートをPDFでエクスポートするには、プロジェクトに以下のパーケッジへの参照を追加します。

レポートをPDF形式でエクスポートする方法の例を以下に示します。

  1. 新規プロジェクトとして「ページレポート(またはRDLレポート)アプリケーション」を作成します。詳細な手順については、「ActiveReportsアプリケーションを追加する」を参照してください。
  2. プロジェクトにGrapeCity.ActiveReports.Export.Pdf.dllアセンブリへの参照を追加します。
  3. Form.cs(またはForm.vb)を開き、タイトルバーをダブルクリックしてForm_Loadイベントを作成します。
  4. 以下のコードをForm_Loadイベント内に追加します。アプリケーションを実行すると、デフォルトで一意な名前のファイルが新規作成されます。
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); 

PDFエクスポート(描画拡張機能)のプロパティ

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 ドキュメントに関連付けられたキーワードを設定します。
MarginBottom レポートの下余白の値(インチ単位)を取得、または設定します。整数、または小数値の後に"in"を付ける必要があります(例 1in)。レポートのオリジナルの設定は、この値によってオーバーライドされます。
MarginLeft レポートの左余白の値(インチ単位)を取得、または設定します。整数、または小数値の後に"in"を付ける必要があります(例 1in)。レポートのオリジナルの設定は、この値によってオーバーライドされます。
MarginRight レポートの右余白の値(インチ単位)を取得、または設定します。整数、または小数値の後に"in"を付ける必要があります(例 1in)。レポートのオリジナルの設定は、この値によってオーバーライドされます。
MarginTop レポートの上余白の値(インチ単位)を取得、または設定します。整数、または小数値の後に"in"を付ける必要があります(例 1in)。レポートのオリジナルの設定は、この値によってオーバーライドされます。
NeverEmbedFonts PDFドキュメントに埋め込めないフォントファミリをセミコロン区切りの文字列形式で設定します。
注意: 日本語フォントの非埋め込みはProfessionalの機能です。Standardで使用する場合、日本語フォントはPDFに埋め込まれます。
OwnerPassword リーダーに入力するオーナーパスワードを設定します。これは指定されたユーザー許可にかかわらずドキュメントへのフルアクセスを許可します。オーナーパスワード設定しない場合、セキュリティ設定を変更することはできません。
PageHeight レポートのページ高さの値(インチ単位)を取得、または設定します。整数、または小数値の後に"in"を付ける必要があります(例 1in)。レポートのオリジナルの設定は、この値によってオーバーライドされます。
PageWidth レポートのページ幅の値(インチ単位)を取得、または設定します。整数、または小数値の後に"in"を付ける必要があります(例 1in)。レポートのオリジナルの設定は、この値によってオーバーライドされます。
Permissions ドキュメントに対するユーザー許可を指定します。カンマを使用して複数のユーザー許可値を組み合わせることができます。AllowFillinAllowAccessibleReadersAllowAssemblyのユーザー許可を使用する場合は、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)を入力します。

PDF印刷プリセット(Professional)のプロパティ

ActiveReportsでは、レポートをPDFドキュメントにエクスポートするとき、PrintPresetsクラスを使用して、基本的な印刷設定をプリセットできます。プリセットした設定は、印刷ダイアログボックスを開いたときに自動で印刷設定に反映されます。詳細については、「PDF印刷プリセットの使用」を参照してください。

注意:
プロパティ 解説
PageScaling 印刷可能領域の拡大/縮小を指定します。「Default」を選択した場合は、印刷可能領域に合わせて縮小されます。「None」を選択した場合は、縮小を行いません。
DuplexMode プリンタの「両面印刷モード」を指定します。両面オプションを選択する場合、選択したプリンターが両面印刷に対応している必要があります。以下のオプションのいずれかを選択します。
  • Simplex: 用紙の片面に印刷します。これはデフォルトの値です。
  • Duplex(長辺とじ): 用紙の両面(長辺とじ)に印刷します。
  • Duplex(短辺とじ): 用紙の両面(短辺とじ)に印刷します。
PaperSourceByPageSize ページ設定オプションではなく、PDFページサイズに基づいて出力トレイを決定します。複数のページサイズのPDFを印刷するとき、このオプションを使用できます。デフォルトでは、「False」に設定されています。
PrintPageRange ページ範囲を指定します。"1-3"のように範囲を指定するか、"1", "2", "3"のように特定のページを指定します。
NumberOfCopies 印刷する部数を指定します。[Two][Five]のいずれかを選択するか、1部のみ印刷する場合は[Default]オプションを選択します。

対話的な機能

PDFは印刷に最適な形式であると同時に、見出しマップ、ブックマーク、ハイパーリンクなどの対話的な機能もサポートしています。ただし、描画時に非表示になっていたデータ(ドリルダウンレポートのデータなど)は出力されません。したがって、描画前に折りたたまれた項目をすべて展開しておくことを推奨します。

PAdES署名の対応

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)」を参照してください。

入力可能なPDF:InputFieldコントロール

ページレポートおよびRDLレポートでは、InputFieldコントロールを使用できます。このコントロールを使用すると、エクスポートされたPDF内のフィールドが編集可能になり、InputFieldの値を変更できます。

InputFieldには、TextとCheckboxの2つのオプションがあり、InputTypeプロパティで設定できます。各オプションには、それぞれのプロパティが含まれます。TextはTextBoxコントロールのプロパティを取得し、CheckboxはCheckBoxコントロールのプロパティを継承します。 

注意: InputFieldコントロールはProfessionalの機能です。Standardで使用する場合、エクスポートされたファイルにInputFieldコントロールが表示されません。

PDFでのメタデータ

メタデータの追加

An examplle of adding metadescriptions

キーワード、説明などのメタデータは、検索エンジンによって検索を絞り込むために使用されます。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);

 

添付ファイルの追加

An example of adding an attachment

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の左側のパネルで確認できます。

メモ:PDFでのメタデータ(メタデータの追加、および、添付ファイルの追加)は、Professionalエディションでのみ使用できます。

PDF/Aの制限事項

関連トピック