如何在程序里控制打印纸张大小(A3,A4)和打印方向?不想打开设置窗口
---------------------------------------------------------------
Uses Printer;
.........
procedure TForm1.Button1Click(Sender: TObject);
var
ADevice, ADriver, APort: array[0..255] of Char;
DeviceHandle: THandle;
DevMode: PDeviceMode;
begin
//初始化打印机
Printer.GetPrinter(ADevice, ADriver, APort, DeviceHandle);
if DeviceHandle = 0 then
begin
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(ADevice, ADriver, APort, DeviceHandle);
end;
if DeviceHandle = 0 then
Raise Exception.Create('不能初始化打印机!')
else
DevMode := GlobalLock(DeviceHandle);
if DeviceHandle <> 0 then
begin
with DevMode^ do
begin
dmFields := dmFields or DM_ORIENTATION;
//在下面这里设置打印方向
dmOrientation := DMORIENT_LANDSCAPE; //DMORIENT_PORTRAIT
dmPaperSize := DMPAPER_A3;
Printer.SetPrinter(ADevice, ADriver, APort, DeviceHandle);
GlobalUnLock(DeviceHandle);
end;
end;
PrinterSetupDialog1.Execute; //验证一下设置是否成功了
end;
*************
printer.pagewidth是只读属性
---------------------------------------------------------------
参考这个
var
hDMode: THandle;
PDMode: PDEVMODE;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
pDMode^.dmFields := DM_PAPERSIZE or DM_PAPERWIDTH or DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := APaperWidth;
pDMode^.dmPaperLength := APaperHeight;
pDMode^.dmFields:=pDMode^.dmFields or DM_ORIENTATION;
pDMode^.DMORIENTATION:= Direct;
end;
end;
//打印机设置的纸张大小
---------------------------------------------------------------
在执行打印前调用以下函数:
procedure SetPaperSize(X, Y: Integer);
// 单位是0.1mm
// A4时 Printer.Pagewidth:=1440; A5时 Printer.Pagewidth:=1049;
// B5时 Printer.Pagewidth:=1290; 16K时 Printer.Pagewidth:=1035;
// lq1600宽行打印机这个值宽度最大为42cm左右, 长度大约2m。
//改变devicemode结构
var
Device: array[0..255] of char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
hDMode: THandle;
PDMode: PDEVMODE;
begin
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
if (x = 0) or (y = 0) then
begin
{Set to legal}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
{pDMode^.dmPaperSize := DMPAPER_LEGAL; changed by wulianmin}
pDMode^.dmPaperSize := DMPAPER_FANFOLD_US;
end
else
begin
{Set to custom size}
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := x {SomeValueInTenthsOfAMillimeter};
pDMode^.dmPaperLength := y {SomeValueInTenthsOfAMillimeter};
end;
{设定纸张来源}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;
GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;
//以下开始打印
Printer.BeginDoc;
Printer.Canvas.TextOut(100,100, 'Test 1');
Printer.EndDoc;
end;
分享到:
相关推荐
除了基本的打印操作外,还可以通过API函数或Delphi的Printers组件来选择和配置打印机,例如设置默认打印机、改变纸张大小、调整分辨率等。 5. **调试与测试**: 在实际开发中,测试打印源码是一个重要的环节。...
`TPrinter`提供了一系列方法和属性来控制打印机的设置,如纸张大小、方向以及页边距。 要获取打印页边距,我们通常需要访问`TPrinter`对象的`Margins`属性。这个属性是一个`TPoint`类型,包含两个整数值,分别代表...
预览界面通常与设计界面类似,但会展示出更接近真实打印机输出的效果,包括纸张大小、方向、页边距等设置。用户可以在预览阶段调整这些参数,确保打印结果符合预期。 实际的打印操作则依赖于后台的打印引擎,它负责...
这个"Delphi设置打印纸大小的程序示例"很可能是提供了一个DEMO或源代码,帮助开发者理解如何在Delphi中控制打印机输出的页面尺寸。下面我们将深入探讨Delphi中的打印功能及其相关知识点。 首先,Delphi提供了...
TPrinter组件提供了方法来设置页面大小、方向、边距等打印参数,并提供了一个Canvas对象,可以在这个Canvas上绘制各种图形和文字,包括我们的图片。 步骤1:引入必要的组件 在DELPHI的Form设计界面中,我们需要导入...
用户可以设置打印参数,如页边距、方向、副本数量等。TPrinter的BeginDoc和EndDoc方法用来标记打印作业的开始和结束,而DrawBitmap或DrawImage方法则用于将图像输出到纸张上。为了确保图片在打印时不被裁剪,可能还...
在金融、税务以及邮政等行业中,经常需要在已印制好的单据(如汇款单、储蓄凭证、税票等)的固定位置上打印相关的信息。这种操作对于业务流程至关重要,因为它们确保了信息的准确性与一致性。通常来说,开发人员会...
TPrinter组件提供了各种方法和属性,用于设置打印机的参数,如纸张大小、打印方向等。要打印图片,我们通常会先加载图片到内存,然后利用TPrinter的DrawImage方法将图片绘制到打印页面上。 1. **连接打印机**:在...
3. **打印对话框**:Delphi提供了标准的打印对话框,用户可以通过该对话框选择打印机、纸张大小、方向等打印选项。 #### 三、打印设置步骤 1. **打开打印对话框**:在Delphi中,通常使用`PrintDialog1`组件来显示...
开发者可以通过这个组件直接控制打印机,设置纸张大小、方向、边距,以及打印内容的位置和样式。 2. TReport:用于创建报告的组件,它可以设计多页、多段的复杂报表,支持数据绑定,可以方便地从数据库中获取并展示...
// 其他页边距、纸张大小、方向等设置 ``` 5. **执行打印**:最后,调用`PrintOut`方法进行打印: ```delphi ExcelApp.ActiveWorkbook.PrintOut; ``` 6. **释放资源**:完成打印后,别忘了关闭工作簿和Excel...
在示例代码中,开发者通常会看到如何创建和配置这些组件,以及如何在事件处理程序中控制打印流程。这些示例可以帮助初学者快速理解和掌握Delphi的打印功能,并能根据实际需求进行定制。 总的来说,这个"Delphi超强...
2. **TPrinter**:TPrinter组件是Delphi内置的打印控制类,它提供了与打印机交互的方法,如开始打印、结束打印、设置纸张大小等。通过TPrinter,开发者可以控制打印输出的质量和格式。 3. **Print Preview**:预览...
此外,为了处理打印任务,可能还需要配置打印机设置,如纸张大小、打印方向等。这通常可以通过Codesoft的API接口或Delphi自身的Printers组件来实现。 在压缩包中的"codefans.net"文件可能是示例代码或者教程链接,...
3. **设置打印参数**:可以通过`Printer`对象来设置打印参数,如纸张大小、方向等。 4. **实现打印逻辑**:在事件处理函数中实现具体的打印逻辑,如文本输出、图像输出等。 5. **控制打印次数**:通过循环结构可以...
在打印过程中,可能还需要处理页边距、纸张大小、方向等设置,确保标签在纸张上的位置准确无误。 总结起来,“delphi空间打印例程”涵盖了数据库连接、自定义标签设计、数据选择以及批量打印的核心技术。通过熟练...
3. **TPageSetup**:TPageSetup组件用于设置打印机参数,如纸张大小、方向、页边距等。在打印报表前,用户可能需要调整这些设置以适应不同的打印需求。 4. **TPrinter**:这是Delphi中的核心打印组件,用于控制实际...
首先,需要创建一个TPrinter对象,并设置相关的打印设置,如纸张大小、方向等。然后,在打印过程中,我们可以调用TImage的`Canvas.Draw`方法,将二维码图像绘制到打印机的画布上。为了确保二维码在打印时的清晰度,...
2. **初始化打印机设置**:在代码中,你可以使用Printer对象的属性来设置打印的初始条件,如纸张大小(Printer.PageWidth和Printer.PageHeight)、边距(Printer.Margin)以及打印方向(Printer.Orientation,如...