6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DelphiAdvent Calendar 2020

Day 2

FastReport VCLでPDF出力

Last updated at Posted at 2020-12-01

FastReport VCLでPDF出力

FastReport VCLにはPDFファイルを出力する機能があります。
製品版だけでなく、Embarcadero Editionでも利用できます。

今回は、このPDF出力を試したいと思います。

デモプログラムを動かしてみよう

Fast Reports社のサイト
FastReport Embarcadero Edition - Fast Reports Inc.
から入手できる Embarcadero Edition には、デモプログラムが含まれているので、それにPDF出力を追加してみましょう。1

FastReportをインストールしたフォルダのDemosフォルダに、PrintStringListフォルダがあるので、それを適当な場所にコピーします。

コピーしたプロジェクトを、まずは、コンパイルします。

1_form.jpg

ボタンをクリックすると、プレビュー画面が表示します。

2_preview.jpg

プレビュー画面のボタンを変えてみよう

プレビュー画面のボタンは、TfrxReportのPreviewOptionsにあるButtonsプロパティで表示する項目を指定できます。
また、PreviewOptionsにあるShowCaptionsプロパティで、Caption表示の有無を指定できます。

OnFormCreateイベントに、次のコードを追加して、プレビュー画面のボタンの表示を変えてみます。
また、データには、数字しか格納していないので、文字に変えてみます。

Unit1.pas
procedure TForm1.FormCreate(Sender: TObject);
begin
  sl := TStringList.Create;
  // 格納する文字を変更
  sl.Add('リンゴ');
  sl.Add('みかん');
  sl.Add('イチゴ');
  sl.Add('パイナップル');
  sl.Add('グレープフルーツ');
  sl.Add('梨');
  sl.Add('葡萄');
  sl.Add('バナナ');
  sl.Add('スイカ');

  // 追加:ここから

  // 印刷プレビューのオプション設定
  with frxReport1.PreviewOptions do
  begin
		// ボタンで不要なものを非表示に
		Buttons := Buttons - [pbLoad, pbSave, pbExport, pbOutline, pbEdit];
		Buttons := Buttons + [pbNoFullScreen, pbNoEmail];
 		// キャプションを表示
		ShowCaptions := True;
  end;

  // 追加:ここまで
end;

3_preview.jpg

PDF出力機能を追加してみよう

10_form_2.jpg

フォームにTfrxPDFExportを追加し、先ほどのOnFormCreateイベントのコードにPDFボタンを表示する箇所を追加します。

Unit1.pas
procedure TForm1.FormCreate(Sender: TObject);
begin
  sl := TStringList.Create;
  sl.Add('リンゴ');
  sl.Add('みかん');
  sl.Add('イチゴ');
  sl.Add('パイナップル');
  sl.Add('グレープフルーツ');
  sl.Add('梨');
  sl.Add('葡萄');
  sl.Add('バナナ');
  sl.Add('スイカ');

  // 印刷プレビューのオプション設定
  with frxReport1.PreviewOptions do
  begin
		// ボタンで不要なものを非表示に
		Buttons := Buttons - [pbLoad, pbSave, pbExport, pbOutline, pbEdit];
		Buttons := Buttons + [pbNoFullScreen, pbNoEmail];
		// PDFボタンを表示						// 追加
		Buttons := Buttons + [pbExportQuick];	// 追加
		// キャプションを表示
		ShowCaptions := True;
  end;
end;

プレビュー画面を表示してみると、PDFボタンが追加されています。

4_preview.jpg

PDFファイルを出力し、Adobe Acrobat Readerで表示してみます。

8_ExportPDF.jpg

4_PDF.jpg

日本語の部分が□になってますね。

レポートを修正しよう

5_form.jpg

フォーム上にあるfrxReport1を右クリックして「Edit Report...」を選択すると、レポートデザイナーが開きます。2

6_EditReport.jpg

"[Elements]"のプロパティにて、Fontプロパティのフォント名を「MS ゴシック」に、「文字セット」を「日本語」に設定します。
また、データを日本語に書き換えて文字数も増えたので、すべて表示できるように幅を広げておきます。

コンパイル後、PDFファイルを出力して、Adobe Acrobat Readerで表示してみます。

7_PDF.jpg

今度は、日本語も正しく表示されています。

プレビュー画面以外からPDFを出力してみよう

フォームにTRadioGroupを追加し、オブジェクトインスペクタにて、Itemsプロパティに

  • 印刷
  • 印刷プレビュー
  • PDF出力

を設定し、ItemIndexプロパティを1に設定します。

9_DesignForm.jpg

そして、ボタンのOnClickイベントで、プレビュー画面を表示している箇所をRadioGroupのItemIndexプロパティの値によって、印刷・印刷プレビュー・PDF出力を実行できるように変更します。

Unit1.pas
procedure TForm1.Button1Click(Sender: TObject);
begin
  StringDS.RangeEnd := reCount;
  StringDS.RangeEndCount := sl.Count;

  // 変更:ここから
  case RadioGroup1.ItemIndex of
    0:	// 印刷
      begin
        frxReport1.PrepareReport(True);
        frxReport1.Print;
      end;
    1:	// 印刷プレビュー
      frxReport1.ShowReport;
    2:	// PDF出力
      begin
        frxReport1.PrepareReport(True);
        frxReport1.Export(frxPDFExport1);
      end;
  end;
  // 変更:ここまで
end;

コンパイル後、RadioGroupで「PDF出力」を選択し、ボタンをクリックすると「PDFファイルへのエクスポート」ダイアログが表示し、PDFファイルが出力できます。

PDF出力するとき、ダイアログやメッセージ ウィンドウを表示したくない場合

「PDFファイルへのエクスポート」ダイアログを表示せずに、PDF出力したい場合、TfrxPDFExportのShowDialogプロパティをFalseに設定します。
このとき、TfrxPDFExportのFileNameプロパティにて、出力するPDFのファイル名を指定しておく必要があります。

また、PDFファイル出力中に表示するメッセージ ウィンドウ
export_mess.jpg
を非表示にするには、TfrxPDFExportのShowProgressプロパティをFalseに設定します。

最後に

プログラム内でPDFファイルを生成する処理が必要なとき、ダイアログを出さすにPDF出力したい場合など、結構、あるかと思います。

FastReport以外でも、
Excelを帳票の代わりに使っている場合、
[ エクセル操作フォームEx ] [ PDF 形式の文書で保存 ] - Mr.XRAY
の方法で、PDF出力できますし、
Windows 10 に搭載されている「Microsoft Print to PDF」を利用し、プログラムから「印刷結果を名前を付けて保存」ダイアログを出さずにPDF出力する方法があるようです。

この「Microsoft Print to PDF」でPDF出力する方法に関しては、また別の機会にでも、記事を書きたいと思います。

  1. GetItからインストールできるFastRport VCLには、デモプログラムが含まれていないようです。

  2. frxReport1をダブルクリックして、開くこともできます。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?