(需要安装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;这两个过程的运行都有点慢,如果有什么其他好方法,也请不吝赐教。

解决方案 »

  1.   

    打印pdf是用默认打印机打印的,如果你有多台打印机的话,必须做出选择。当然如果你只有一台打印机可以用,或者你有多台打印机,但是已经设置了默认打印机,并且不会更改,那么是不需要在程序中设置的。
      

  2.   

    我是用c#做开发的,请问
    AcroApp     := CreateOleObject('AcroExch.App');
       PDDoc := CreateOleObject('AcroExch.PDDoc');
    这2句用C#该怎么用 ,它是用来嵌入控件吗
      

  3.   

    这个就是创建ole对象,C#中应该也有类似的函数适用,我不懂c#所以不知道怎么用。
      

  4.   

    好 我先去看看 谢谢你
    请到http://community.csdn.net/Expert/topic/3631/3631270.xml?temp=.1337397
    来接分
      

  5.   

    为什么我装了acrobat reader 还提示错误: 无效的类别字符串
      

  6.   

    回复人: network0022(network) ( ) 信誉:98  2004-12-12 22:58:00  得分: 0  
     
     
       为什么我装了acrobat reader 还提示错误: 无效的类别字符串
      
    -----------------------------------------------------------------加入ComObj单元
      

  7.   

    谢谢 我加了ComObj单元
    不知道与 acrobat reader的版本是否有关, 我装的是Acrobat reader 4.0