如何 给打印机指定 该打印机已有的、非默认的纸张类型? ( 积分: 50 )

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

delhpi

Unregistered / Unconfirmed
GUEST, unregistred user!
我的打印机,它的驱动程序(打印首选项)中,有如下纸张类型,应该都是它本身支持的纸张类型(其中还有自定义纸张3种,打印机允许设置3种自定义纸张大小),当前默认的是普通的A4。
在打印时,如何用代码指定打印机,用打印机支持的其他的纸张类型呢,就是不手工改变默认纸张类型?
pdmode^.dmPaperSize:=后面也有很多纸张类型可以选择。
对于 打印机首选项中有的纸张类型,DMPAPER_常量列表中没有的纸张类型,
这个设置纸张的代码该如何写?
谢谢。
=====DMPAPER_常量列表===
{ paper selections }
{$EXTERNALSYM DMPAPER_LETTER}
DMPAPER_LETTER = 1;
{ Letter 8 12 x 11 in }
{$EXTERNALSYM DMPAPER_FIRST}
DMPAPER_FIRST = DMPAPER_LETTER;
{$EXTERNALSYM DMPAPER_LETTERSMALL}
DMPAPER_LETTERSMALL = 2;
{ Letter Small 8 12 x 11 in }
{$EXTERNALSYM DMPAPER_TABLOID}
DMPAPER_TABLOID = 3;
{ Tabloid 11 x 17 in }
{$EXTERNALSYM DMPAPER_LEDGER}
DMPAPER_LEDGER = 4;
{ Ledger 17 x 11 in }
{$EXTERNALSYM DMPAPER_LEGAL}
DMPAPER_LEGAL = 5;
{ Legal 8 12 x 14 in }
{$EXTERNALSYM DMPAPER_STATEMENT}
DMPAPER_STATEMENT = 6;
{ Statement 5 12 x 8 12 in }
{$EXTERNALSYM DMPAPER_EXECUTIVE}
DMPAPER_EXECUTIVE = 7;
{ Executive 7 14 x 10 12 in }
{$EXTERNALSYM DMPAPER_A3}
DMPAPER_A3 = 8;
{ A3 297 x 420 mm }
{$EXTERNALSYM DMPAPER_A4}
DMPAPER_A4 = 9;
{ A4 210 x 297 mm }
{$EXTERNALSYM DMPAPER_A4SMALL}
DMPAPER_A4SMALL = 10;
{ A4 Small 210 x 297 mm }
{$EXTERNALSYM DMPAPER_A5}
DMPAPER_A5 = 11;
{ A5 148 x 210 mm }
{$EXTERNALSYM DMPAPER_B4}
DMPAPER_B4 = 12;
{ B4 (JIS) 250 x 354 }
{$EXTERNALSYM DMPAPER_B5}
DMPAPER_B5 = 13;
{ B5 (JIS) 182 x 257 mm }
。。。。。
===打印机的纸张类型=========
Letter,8.5x11 英寸
Legal,8.5x14 英寸
Executive,7.25x10.5 英寸
A4,210x297 毫米
A5,148x210 毫米
B5,182x257 毫米
带裁剪边的照片 4x6 英寸
带裁剪边的照片 10x15 厘米
带裁剪边的无边界照片 10x15 厘米
A6 卡,105x148 毫米
索引卡,3x5 英寸
索引卡,4x6 英寸
索引卡,5x8 英寸
10 号信封,9.5x4.13 英寸
A2 信封,111x146 毫米
C6 信封,162x114 毫米
DL 信封,220x110 毫米
带裁剪边的无边界照片 4x6 英寸
Hagaki 卡,100x148 毫米
自定义 1
自定义 2
自定义 3
 
选择打印纸:pdmode^.dmPaperSize:=Printer.PaperSizes[Printer.PaperNames.IndexOf('Letter')];
 
Printer.PaperSizes[Printer.PaperNames.IndexOf('Letter')];
==========
我用的是D7,printer对象好像没有papersizes,papernames这2个属性啊?

In TPrinter
Aborted
Canvas
Capabilities
Copies
Fonts
Handle
Orientation
PageHeight
PageNumber
PageWidth
PrinterIndex
Printers
Printing
Title
 
自己琢磨了一个,有兴趣的试试。
procedure SelectPaper;
var
Device, Driver, Port: array[0..255] of char;
ADevMode: THandle;
pDMode: PDevMode;
begin
Printer.PrinterIndex := printer.PrinterIndex;
with Printerdo
GetPrinter(Device, Driver, Port, ADevMode);
if ADevMode <> 0 then
pDMode := GlobalLock(ADevMode);
pDMode.dmFormName:= 'A3';//这里设置纸张名称 即使是自定义的也可以
pDMode.dmFields:=pDMode^.dmFields or DM_FORMNAME;
ResetDC(Printer.Handle,pDMode^);
GlobalUnlock(ADevMode);
end;
 
后退
顶部