こんにちは
Delphi 11のTEdgeBrowserに表示している内容をPDFとして保存したいと考えています
次の①~③のステップで手動保存は可能ですが、この処理を自動化できないでしょうか?
①印刷ダイアログを表示
②プリンター「PDFとして保存」を選択
③「保存」をクリック
Webview2について調べているとPDFとして保存できるメソッド"PrintToPdfAsync"が存在するとの情報を見かけたのですがVcl.EdgeやWinapi.WebView2を調べても存在しているように見えません。
何か情報などありましたらよろしくお願いします。
procedure TForm1.Button2Click(Sender: TObject);
var
PrintSettings: ICoreWebView2PrintSettings;
begin
EdgeBrowser1.PrintToPDF(ExtractFilePath(ParamStr(0)) + 'AAA.PDF',PrintSettings);
end;
本文には日本語 (ひらがな) を含めてください (スパム防止用)
AAAAAさんありがとうございます
すみません私が本当に使用したかったのは教えていただいたPrintToPDFです
コンパイルで未定義の識別子となることからDelphi 11では対応していないと思い他の方法を模索していました
Vcl.EdgeとWinapi.WebView2には印刷に関するメソッドが見当たらないのですが、そもそも参照しているユニットが違うなどありますか?
よろしくお願いします
横から失礼します。
PrintToPDFはDelphi 12で追加されたもののようです。
Delphi11でPrintToPDFを使おうとすると、多分少し大変だと思います。
PrintToPDFはWebView2のICoreWebView2_7から追加された機能ですが、
Delphi10.4~11.3まではかなり古いWebView2.tlbをベースにしたTWebView2.pasが使われていると思われるからです。
https://mam-mam.net/delphi/tedgebrowser_webview2.html
に記述させていただいているように
からmicrosoft.web.webview2.1.0.2592.51.nupkgをダウンロードして、解凍して
新しいWebView2.tlbからWebView2_TLB.pasを生成して、PrintToPDF関数を使えるようにしなければならないと思います。
そこで、DelphiXE4~Delphi11.3でPrintToPDF関数をなるべく簡単に使うにはWebView4Delphiをインストールして使用するのが良いかもと思います。
https://mam-mam.net/delphi/tedgebrowser_webview4delphi.html
WebView4Delphiだと、以下のようにPrintToPdf関数が使えます。
procedure TForm1.Button7Click(Sender: TObject);
begin
WVBrowser1.PrintToPdf(
ExtractFilePath(Application.ExeName)+'a.pdf'
);
end;
但し、TEdgeBrowserとは微妙に使い方が違いますので、人によっては簡単とは言えないかもですが。
ご回答いただいたみなさんありがとうございます
mamさんに教えていただいた方法でタイプライブラリを取り込んでPrintToPDFを実行することができました
理解できていない箇所も多々ありますが勉強していきたいと思います
ありがとうございました
ツイート | ![]() |