PDFを吐き出す機能もね
(......まあサイトはもう結構詳しく書いたんですけど、わかりやすく、よく使う機能をメモしようと思いまーす
ユニットファイル
uses
FMX.Printer ;
プリンターのプロパティ設定
まず、デザインのところパレット【 TPrinterSetupDialog 】を追加する
次は、【 TButton 】を追加する
(ここはアプリの設計によって違いますけど、とりあえず一番わかりやすいの方法で
procedure TFmPrint.PrintSetClick(Sender: TObject); //ButtonのOnClickイベント
begin
PrinterSetupDialog1.Execute;
end;
印刷
もう一個【 TButton 】を追加する
procedure TFmPrint.PrintClick(Sender: TObject); //ButtonのOnClickイベント
begin
with Printer do
begin
ActivePrinter.SelectDPI(300, 300); //解像度の設定
BeginDoc;
//印刷したいイメージ
Canvas.DrawBitmap(
Print_Image.Bitmap,
TRectF.Create(0, 0, Print_Image.Bitmap.Width, Print_Image.Bitmap.Height),
TRectF.Create(0, 0, PageWidth, PageHeight),
1.0);
EndDoc;
end;
end;
--------------------------------
with do を使いたくない場合
procedure TFmPrint.PrintClick(Sender: TObject); //ButtonのOnClickイベント
begin
Printer.ActivePrinter.SelectDPI(300, 300); //解像度の設定
Printer.BeginDoc;
//印刷したいイメージ
Printer.Canvas.DrawBitmap(
Print_Image.Bitmap,
TRectF.Create(0, 0, Print_Image.Bitmap.Width, Print_Image.Bitmap.Height),
TRectF.Create(0, 0, Printer.PageWidth, Printer.PageHeight),
1.0);
Printer.EndDoc;
end;
DPIについて
らしいです
いろいろ参考資料を貼ります~
解像度(DPI)とは?画質や画素数(ピクセル)高さの違いを簡単に解説 | BOXIL Magazine
【解像度とdpi】印刷のために画像解像度を設定しよう | バンフーオンラインショップ
画面解像度?印刷解像度?ポスター印刷に関する解像度について | ソクプリブログ
FMX.Printer.TPrinterのプロパティについて
PDFを吐き出すとかを入る前に、先にいろいろPrinterのプロパティを紹介しようと思います
(私の偏見でよく使うやつを紹介します~)
- FMX.Printer.TPrinter.ActivePrinter
現在アクティブのプリンタを示します。
- FMX.Printer.TPrinter.Aborted
ユーザーが印刷ジョブを中止したかどうかを判別します。
Aborted が True の場合、印刷ジョブは中止されます。 False の場合には、ユーザーは印刷ジョブを中止していません。
- FMX.Printer.TPrinter.Printing
Printing を使用すると、ジョブが印刷中かどうかを判別します。
Printing は、アプリケーションが BeginDoc メソッドを呼び出しており、かつ、まだ EndDoc メソッド(または Abort メソッド)を呼び出していないときに、True となります。
- FMX.Printer.TPrinter.PageHeight
現在の印刷中のページの高さを、ピクセルで示します。
PageHeight を使用すると、現在の印刷中のページの高さを、ピクセルで知ることができます。
- FMX.Printer.TPrinter.PageWidth
現在の印刷中のページの高さを、ピクセルで示します。
PageHeight を使用すると、現在の印刷中のページの高さを、ピクセルで知ることができます。
- FMX.Printer.TPrinter.PageNumber
現在印刷中のページ番号を示します。
- FMX.Printer.TPrinter.Printers
利用可能なすべてのプリンターをリストします。
- FMX.Printer.TPrinter.Count
システムで利用可能なプリンター数を示します。
- FMX.Printer.TPrinter.Title
オペレーティング システムによって提供されている印刷マネージャ内に一覧され、またネットワーク ヘッダー ページ上にあるテキストを判別します。
Title は、オペレーティング システムによって提供されている印刷マネージャ(たとえば、Windows の場合には Print Manager と呼ばれる)、またはプリンターソフトウェアによって、ネットワーク タイトル ページのために使用されます。
FMX.Printer.TPrinter Properties - RAD Studio API Documentation
システムで利用可能なプリンターを表示
【 TButton 】と【 TMemo】追加するぞ
procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to Printer.Count - 1 do
begin
Memo1.Lines.Add(Printer.Printers[i].Title);
end;
end;
はい、こういう感じですね
PDFの生成
大体ここまで来たらPDF生成のやり方はもう分かると思いますね
印刷する前にプリンターを指定すればいいってことです
Printer.ActivePrinter := Printer.Printers[5];
//ここの5はただの例、リストの順番はパソコンによって変わります
Printer.ActivePrinter.SelectDPI(1200, 1200);
Printer.BeginDoc;
//印刷処理
Printer.EndDoc;
こういう感じです
for i := 0 to Printer.Count - 1 do
begin
if Printer.Printers[i].Title ='Microsoft Print to PDF' then 処理;
end;
これと一緒に組み合わせるとPDFの生成はできます
(やり方人それぞれなので省略しまーす((ただ疲れただろうかお前
*注意点*
Printer.ActivePrinter := Printer.Printers[5];
これやるとこれからのプリンターはリスト5のプリンターになります
TempPrinter, PDFPrinter : TPrinterDevice;
こんな感じでサブを作って代入した方が無難かなと思います
最初は先に今のデフォルトプリンターをTempPrinterに保存
TempPrinter := Printer.ActivePrinter;
'Microsoft Print to PDF'プリンターをPDFPrinter に保存
PDFPrinter := Printer.Printers[5];
使う時は直接代入
Printer.ActivePrinter := PDFPrinter ;