delphi – 如何获取所有纸张尺寸名称和相应的像素尺寸?

delphi – 如何获取所有纸张尺寸名称和相应的像素尺寸?,第1张

概述我正在编写一个WYSIWYG页面设计器应用程序,它允许用户将图像和文本放到设计器面板上,然后将面板打印到PDF. 在我的应用程序的页面设置选项中,用户需要选择页面大小,然后,根据所选的页面大小,它将在屏幕上显示根据尺寸调整大小的面板(例如A4选择= 8.5 x 11英寸,面板将按这些像素尺寸调整大小. 然后,当用户单击“打印”时,Panel的内容将被绘制为具有所选尺寸的PDF文件. 我正在使用wP 我正在编写一个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,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,@Forms[0],SizeOf(TFormInfo1) * Count,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;
总结

以上是内存溢出为你收集整理的delphi – 如何获取所有纸张尺寸名称和相应的像素尺寸?全部内容,希望文章能够帮你解决delphi – 如何获取所有纸张尺寸名称和相应的像素尺寸?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存