怎样通过程序自动选择打印机打印PDF文件(300)

  • 主题发起人 delphi_zys
  • 开始时间
D

delphi_zys

Unregistered / Unconfirmed
GUEST, unregistred user!
我通过多线程控制PDF文件打印,每个线程都针对不同的打印机,当让这些打印机都会连在计算机上。线程是始终执行的,当线程接收到某一标志信息时,则会打印本地指定的PDF文件,现在的问题是,如果这几个线程同时执行时,怎样把打印文件发送到不同的打印机上? 每个线程打印不同的文件,不要告诉我通过改变默认打印机的形式,这招不行,不能同时执行打印? 各位大虾,帮帮忙吧????如有价值,自当高分相送!!![:(][?]
 
Z

zhengrong117

Unregistered / Unconfirmed
GUEST, unregistred user!
首先:每个线程打印的时候要用的打印机的名称你要知道然后通过Printers单元里面的Printervar sDeviceName, sOutput: string;hCardDC: HDC;
di:do
CINFO;
begin
for i:=0 to Printer.Printers.count-1do
begin
sDeviceName := Printer.Printers;
if sDeviceName ='你想用的打印机名称' then
break;
end;
hCardDC := CreateDC('', Pchar(sDeviceName), Pchar(sOutput), nil);//选择打印机 if hCardDC <> 0 then
begin
//操作打印机 di.cbSize := sizeof(di);
di.lpszDocName := 'DocName';
di.lpszOutput := nil;
di.lpszDatatype := nil;
di.fwType := 0;
if (StartDoc(hCardDC, di) <> SP_ERROR) then
begin
// /* Start page */ if (StartPage(hCardDC) > 0) then
begin
...... EndDoc(hCardDC);
end;
 
D

delphi_zys

Unregistered / Unconfirmed
GUEST, unregistred user!
那么怎么才能把PDF文件里面的内容发送到打印机上?上面这种方法好像还得自己判断出PDF文件里面共有几页吧?StartDoc是当前页开始,EndDoc好像是当前页结束吧,这样的话就更麻烦了!
 
顶部