(需要安装acrobat reader)加入ComObj单元。(需要安装acrobat reader)procedure TForm1.PrintPDF(Document: String);
var
AcroApp : Variant;
PDDoc : Variant;
AVDoc : Variant;
PageNum : Integer;
begin
AcroApp := CreateOleObject('AcroExch.App');
PDDoc := CreateOleObject('AcroExch.PDDoc');
AcroApp.Hide;
if PDDoc.Open(Document)<>false then
begin
PageNum:=PDDoc.GetNumPages;
AVDoc := PDDoc.OpenAVDoc('');
AVDoc.PrintPagesSilent(0, PageNum-1, 1, TRUE, TRUE);
PDDoc.Close;
end
else
begin
Result:=false;
AvDoc.Close(True);
exit;
end;
AvDoc.Close(True);
end;另外把设置默认打印机的代码也贴出来,希望有点帮助。
加入Printers单元。
procedure SetDefaultPrinter(PrinterName: String) ;
var
j: Integer;
Device : PChar;
Driver : Pchar;
Port : Pchar;
HdeviceMode: Thandle;
aPrinter : TPrinter;
begin
Printer.PrinterIndex := -1;
getmem(Device, 255) ;
getmem(Driver, 255) ;
getmem(Port, 255) ;
aPrinter := TPrinter.create;
for j := 0 to Printer.printers.Count-1 do
begin
if Printer.printers[j] = PrinterName then
begin
aprinter.printerindex := j;
aPrinter.getprinter(device, driver, port, HdeviceMode) ;
StrCat(Device, ',') ;
StrCat(Device, Driver ) ;
StrCat(Device, Port ) ;
WriteProfileString('windows', 'device', Device) ;
StrCopy( Device, 'windows' ) ;
SendMessage(HWND_BROADCAST, WM_WININICHANGE,0, Longint(@Device)) ;
end;
end;
Freemem(Device, 255) ;
Freemem(Driver, 255) ;
Freemem(Port, 255) ;
aPrinter.Free;
end;这两个过程的运行都有点慢,如果有什么其他好方法,也请不吝赐教。
var
AcroApp : Variant;
PDDoc : Variant;
AVDoc : Variant;
PageNum : Integer;
begin
AcroApp := CreateOleObject('AcroExch.App');
PDDoc := CreateOleObject('AcroExch.PDDoc');
AcroApp.Hide;
if PDDoc.Open(Document)<>false then
begin
PageNum:=PDDoc.GetNumPages;
AVDoc := PDDoc.OpenAVDoc('');
AVDoc.PrintPagesSilent(0, PageNum-1, 1, TRUE, TRUE);
PDDoc.Close;
end
else
begin
Result:=false;
AvDoc.Close(True);
exit;
end;
AvDoc.Close(True);
end;另外把设置默认打印机的代码也贴出来,希望有点帮助。
加入Printers单元。
procedure SetDefaultPrinter(PrinterName: String) ;
var
j: Integer;
Device : PChar;
Driver : Pchar;
Port : Pchar;
HdeviceMode: Thandle;
aPrinter : TPrinter;
begin
Printer.PrinterIndex := -1;
getmem(Device, 255) ;
getmem(Driver, 255) ;
getmem(Port, 255) ;
aPrinter := TPrinter.create;
for j := 0 to Printer.printers.Count-1 do
begin
if Printer.printers[j] = PrinterName then
begin
aprinter.printerindex := j;
aPrinter.getprinter(device, driver, port, HdeviceMode) ;
StrCat(Device, ',') ;
StrCat(Device, Driver ) ;
StrCat(Device, Port ) ;
WriteProfileString('windows', 'device', Device) ;
StrCopy( Device, 'windows' ) ;
SendMessage(HWND_BROADCAST, WM_WININICHANGE,0, Longint(@Device)) ;
end;
end;
Freemem(Device, 255) ;
Freemem(Driver, 255) ;
Freemem(Port, 255) ;
aPrinter.Free;
end;这两个过程的运行都有点慢,如果有什么其他好方法,也请不吝赐教。
AcroApp := CreateOleObject('AcroExch.App');
PDDoc := CreateOleObject('AcroExch.PDDoc');
这2句用C#该怎么用 ,它是用来嵌入控件吗
请到http://community.csdn.net/Expert/topic/3631/3631270.xml?temp=.1337397
来接分
为什么我装了acrobat reader 还提示错误: 无效的类别字符串
-----------------------------------------------------------------加入ComObj单元
不知道与 acrobat reader的版本是否有关, 我装的是Acrobat reader 4.0