Firemonkey中的打印机纸张尺寸

时间:2015-10-24 18:12:46

标签: delphi firemonkey delphi-10-seattle

我试图让用户在我自己的打印设置对话框中为他们的打印机选择合适的纸张尺寸。有没有人知道一个可行的解决方案 - 最好是跨平台,否则OSX。

如果我使用TPageSetupDialog,那么在执行时它会在Invalidpmobject的PASever窗口中产生错误,尽管对话框显示但似乎不会影响当前打印机的纸张尺寸。看起来用户选择的内容似乎没有任何优势。

我需要设置纸张尺寸而不实际打印,因为用户需要首先使用新纸张尺寸进行调整。

1 个答案:

答案 0 :(得分:0)

我终于找到了问题,所以这里有解决问题的其他任何人:

使用TPageSetupDialog,但必须在调用之前为当前打印机设置有效的pagewidth和pageheight值 - 否则会在PAServer窗口中报告错误,并且打印机选择框将设置为“any printer”而不是当前的打印机名称

遗憾的是,您无法直接从打印机页面宽度和分辨率中获取纸张尺寸,因为它报告的是可打印区域而非纸张尺寸。因此,每当用户选择另一台打印机时,我都会设置默认值A4。我想如果你想照顾不支持A4的打印机,你可以将最接近的标准纸张尺寸设置为printer.pagewidth / printer.activeprinter.activedpi.x中的计算值。

要注意的另一点是TPageSetupDialog组件中的默认页面大小是错误的。对于大多数打印机应支持的A4尺寸,将单位设置为mm并使用宽度210000和高度297000(注意比默认值大10倍)。