如何动态改变打印页面(纸张)大小?(100分)

  • 主题发起人 主题发起人 piguan
  • 开始时间 开始时间
P

piguan

Unregistered / Unconfirmed
GUEST, unregistred user!
我利用
printer.begin
doc;
......
printer.enddoc;
进行打印。
如何动态改变打印页面(纸张)大小?
设置自定义纸张宽度,用像素设置。
 
不是很明白楼主所说的用象素设置,是不是你考虑到不同分辨率下纸张有可能大小不一样用象素来控制
 
printer.begin
doc;
Printer.Canvas.TextOut(x,y,Text);
printer.enddoc;
一般打印机默认是A4纸,x的值最大就1400左右,我想改变x的值,增加到2000。
如何动态改变打印页面(纸张)大小?
 
这是我以前学得时候找到的资料,很管用
Procedure SetPrnPage(mLength, mWidth: Integer);
//打印机纸张设置 大小单位 0.1毫米
Var
Device: Array[0..128] Of Char;
Driver: Array[0..128] Of Char;
Port: Array[0..32] Of Char;
hDMode: THandle;
pDMode: PDevMode;
begin
Printer.GetPrinter(Device, Driver, Port, hDMode);
//获取打印机DevMode 结构的句柄值 存放在hDMode 中
If hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
//获取指向打印机DevMode 结构的// 指针
If pDMode <> Nil then
begin
pDMode^.dmPaperSize := 256;
// 如果要将当前打印机纸张变为自定义dmPaperSize 必须设置成256
pDMode^.dmPaperLength := mLength;
pDMode^.dmPaperWidth := mWidth;
pDMode^.dmFields := pDMode^.dmFields Or
DM_PAPERSIZE;
pDMode^.dmFields := pDMode^.dmFields Or DM_PAPERLENGTH;
pDMode^.dmFields := pDMode^.dmFields Or DM_PAPERWIDTH;
{以上三条语句是对相应的dmFields 成员进行置位。}
ResetDC(Printer.Handle, pDMode^);
//设置打印机设备环境句柄的值
GlobalUnlock(hDMode);
end;
end;
end;
 
后退
顶部