我正在编写一个WYSIWYG页面设计器应用程序,它允许用户将图像和文本放到设计器面板上,然后将面板打印到PDF. 在我的应用程序的页面设置选项中,用户需要选择页面大小,然后,根据所选的
在我的应用程序的页面设置选项中,用户需要选择页面大小,然后,根据所选的页面大小,它将在屏幕上显示根据尺寸调整大小的面板(例如A4选择= 8.5 x 11英寸,面板将按这些像素尺寸调整大小.
然后,当用户单击“打印”时,Panel的内容将被绘制为具有所选尺寸的PDF文件.
我正在使用wPDF组件集,特别是TWPPDFPrinter组件来创建PDF.
我的问题:
>如何获取所有纸张尺寸名称的列表,以及如何获取wPDFPrinter的相应尺寸?
提前致谢.
要获取系统中定义的所有打印机表单的列表:uses winspool, printers; ... procedure TForm1.Button1Click(Sender: TObject); var HPrinter: THandle; Forms: array of TFormInfo1; Count, Needed, Returned: DWORD; i: Integer; begin Memo1.Clear; if OpenPrinter(nil, HPrinter, nil) then begin try if not EnumForms(HPrinter, 1, nil, 0, Needed, Returned) then begin // we should fail here since we didn't pass a buffer if GetLastError <> ERROR_INSUFFICIENT_BUFFER then RaiseLastOSError; Count := (Needed div SizeOf(TFormInfo1)) + 1; SetLength(Forms, Count); if EnumForms(HPrinter, 1, @Forms[0], SizeOf(TFormInfo1) * Count, Needed, Returned) then begin if Returned < Count then SetLength(Forms, Returned); for i := 0 to Returned - 1 do begin Memo1.Lines.Add(Format('Paper name: %s, Paper size: %dmm x %dmm', [Forms[i].pName, Forms[i].Size.cx div 1000, Forms[i].Size.cy div 1000])) end; end else RaiseLastOSError; end; finally ClosePrinter(HPrinter); end; end else RaiseLastOSError; end;