過去ログをみましたがわかりません。
XRAYさんの印刷プレビューコンポーネントのような使い方はできないのでしょうか?
shellexecuteのprintでは直接印刷できましたが、
用紙サイズや、印刷対象のページを設定できませんでした。
shellexecuteでは出来ないのでしょうか?
ご教授くださいm()m
DDE を使用して、Acrobat Reader の印刷ダイアログを起動するというのは、どうでしょう?
var
Command: array[0..255] of Char;
begin
DdeClientConv1.ConnectMode := ddeManual;
if DdeClientConv1.SetLink('acroview', 'control') then
if DdeClientConv1.OpenLink then
begin
StrPCopy(Command,'[FilePrintEx("C:\andy.pdf")]');
DdeClientConv1.ExecuteMacro(Command, true) then
end;
end;
具体的にどのような動作仕様が必要なのかわかりませんが、Acrobatの印刷の
際の印刷のダイアログを表示したい、というのであれば以下の手順でもできます。
[コンポーネントのインストール][ActiveXの取り込み]
[Acrobat Control for ActiveX (Version1.X)]
で[ユニット作成][インストール]を実行します。
[ActiveX]タブに[Pdf(PdfLib_TLB]ができます。
これを新規作成プロジェクト(必ず新規です)のFormに配置します。
WidthとHeightプロパティを1にします(見えないように)。
TButtonを一つ配置します。
TOpenDialogを一つ配置します
以下のコードを実行します。
動作確認は WindowsXP + Delphi7 + Acrobat5.0 です。
procedure TForm1.Button1Click(Sender: TObject);
begin
with OpenDialog1 do begin
DefaultExt:='PDF';
Filter:='PDF|*.PDF';
Options:=[ofReadOnly];
if Execute then Pdf1.src:=FileName;
end;
if Pdf1.src<>'' then Pdf1.printWithDialog;
end;
言葉足らずで申し訳ありません。
えーとねさん、XRAYさん、アドバイス有難う御座います。
Delphi6を使用しておりまして、
PDFファイル中の1ページ分だけをまとめて印刷したいと考えています。
できれば印刷ダイアログを出さない形でまとめて印刷がしたいのですが、
shellexecuteでは出来ませんでした。。
ダイアログでその都度Userに判断させない代わりに、
プログラム上で直接指定をして印刷することはできますでしょうか?
#印刷ダイアログのソースを張っていただき有難うございましたm()m
> shellexecuteでは出来ないのでしょうか?
出来ないと思います。
EXE のオプションには、印刷するプリンタの選択しかありません。
用紙サイズ・・・プリンタの設定をAPI で変更。
印刷対象のページ・・・Pdf.ocx のPrintPages メソッド。
えーとねさんありがとうございます。
shellでは出来ないとのことで了解いたしました。
コンポーネントを用いればダイアログを出さない形で印刷可能なのでしょうか?
>コンポーネントを用いればダイアログを出さない形で印刷可能なのでしょうか?
とにかく、やってみることです。
やってみなければ先には進めません。
XRAYさんありがとうございます。
ツイート | ![]() |