社区
Delphi
帖子详情
请问大虾,怎样获得Windows打印机当前打印纸张名称PaperName
leemingsong
2001-09-22 06:22:13
请问大虾,怎样获得Windows打印机当前打印纸张名称PaperName
TPrinter只能获知PaperHeight,PaperWidth 但我需要的是PaperName
(因为有打印机把我通过PaperHeight,PaperWidth设置的打印纸张认成了Custom,以致于让打印机无法自动打印,而需要人工干预,用A4或其它规定的纸张代替)
帮忙的各位,谢了先
急急急急急急急急急急急急急急急急急急急急
...全文
356
24
打赏
收藏
请问大虾,怎样获得Windows打印机当前打印纸张名称PaperName
请问大虾,怎样获得Windows打印机当前打印纸张名称PaperName TPrinter只能获知PaperHeight,PaperWidth 但我需要的是PaperName (因为有打印机把我通过PaperHeight,PaperWidth设置的打印纸张认成了Custom,以致于让打印机无法自动打印,而需要人工干预,用A4或其它规定的纸张代替) 帮忙的各位,谢了先 急急急急急急急急急急急急急急急急急急急急
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leemingsong
2001-12-29
打赏
举报
回复
这问题我自己解决了,呵呵,能给自己加分就好了!!!
调用win API,取得当前设备(打印机)的信息
还是发分吧,这是信用
水之手
2001-10-10
打赏
举报
回复
当前长宽:TPrinter.PaperWidth/PaperHeight.
类型:TPrinter.Paper.
然后将TPrinter.Paper转换成字符串就行了,每种纸张对应的编号是固定的。
leemingsong
2001-10-08
打赏
举报
回复
谢谢楼上这位。
但我还是不明白,我想要的是一个自定义函数,返回当前设置的纸张类型或纸张长宽的函数。
line
2001-10-06
打赏
举报
回复
gz
水之手
2001-10-06
打赏
举报
回复
可以用DeviceCapabilities获取系统标准纸张名称,但是英文的,可以转换为以下常用中文名称:
PageSize1 = "信笺, 8 1/2 x 11 英寸"
PageSize2 = "+A611 小型信笺, 8 1/2 x 11 英寸"
PageSize3 = "小型报, 11 x 17 英寸"
PageSize4 = "分类帐, 17 x 11 英寸"
PageSize5 = "法律文件, 8 1/2 x 14 英寸"
PageSize6 = "声明书,5 1/2 x 8 1/2 英寸"
PageSize7 = "行政文件,7 1/2 x 10 1/2 英寸"
PageSize8 = "A3, 297 x 420 毫米"
PageSize9 = "A4, 210 x 297 毫米"
PageSize10 = "A4小号, 210 x 297 毫米"
PageSize11 = "A5, 148 x 210 毫米"
PageSize12 = "B4, 250 x 354 毫米"
PageSize13 = "B5, 182 x 257 毫米"
PageSize14 = "对开本, 8 1/2 x 13 英寸"
PageSize15 = "四开本, 215 x 275 毫米"
PageSize16 = "10 x 14 英寸"
PageSize17 = "11 x 17 英寸"
PageSize18 = "便条,8 1/2 x 11 英寸"
PageSize19 = "#9 信封, 3 7/8 x 8 7/8 英寸"
PageSize20 = "#10 信封, 4 1/8 x 9 1/2 英寸"
PageSize21 = "#11 信封, 4 1/2 x 10 3/8 英寸"
PageSize22 = "#12 信封, 4 1/2 x 11 英寸"
PageSize23 = "#14 信封, 5 x 11 1/2 英寸"
PageSize24 = "C 尺寸工作单"
PageSize25 = "D 尺寸工作单"
PageSize26 = "E 尺寸工作单"
PageSize27 = "DL 型信封, 110 x 220 毫米"
PageSize28 = "C5 型信封, 162 x 229 毫米"
PageSize29 = "C3 型信封, 324 x 458 毫米"
PageSize30 = "C4 型信封, 229 x 324 毫米"
PageSize31 = "C6 型信封, 114 x 162 毫米"
PageSize32 = "C65 型信封,114 x 229 毫米"
PageSize33 = "B4 型信封, 250 x 353 毫米"
PageSize34 = "B5 型信封,176 x 250 毫米"
PageSize35 = "B6 型信封, 176 x 125 毫米"
PageSize36 = "信封, 110 x 230 毫米"
PageSize37 = "信封大王, 3 7/8 x 7 1/2 英寸"
PageSize38 = "信封, 3 5/8 x 6 1/2 英寸"
PageSize39 = "U.S. 标准复写簿, 14 7/8 x 11 英寸"
PageSize40 = "德国标准复写簿, 8 1/2 x 12 英寸"
PageSize41 = "德国法律复写簿, 8 1/2 x 13 英寸"
leemingsong
2001-10-06
打赏
举报
回复
up
leemingsong
2001-10-06
打赏
举报
回复
up
Starrock
2001-09-24
打赏
举报
回复
关注...
leemingsong
2001-09-24
打赏
举报
回复
up^
//////////////////////////////////////////////////////////////////////////
//现在我写了个函数返回当前设置的纸张类型,长宽
//////////////////////////////////////////////////////////////////////////
procedure TForm1.GetPrinterPaper(APrinter:TPrinter;
var APageSize,AHeight,AWidth:integer);
var print:TPrinter;
dout :PDeviceMode;
tmp :TDeviceMode;
HPrint :THANDLE ;
size :integer;
device:PChar;
begin
print := APrinter;
device := PChar(print.printers[print.printerindex]);
OpenPrinter(device,HPrint, nil);
size := DocumentProperties(HWND(nil),HPrint,device,tmp,tmp,0);
GetMem(dout,size+1);
DocumentProperties(HWND(nil),HPrint,device,dout^,tmp,DM_OUT_BUFFER);
APageSize:= dout.dmPaperSize;
AHeight := dout.dmPaperLength div 10;
AWidth := dout.dmpaperWidth div 10;
FreeMem(dout);
ClosePrinter(HPrint);
end;
//////////////////////////////////////////////////////////////////////////
//疑问:APageSize,AHeight,AWidth返回的都是当前的默认值,而并非当前设置值?
//高人请指导一下,或者有写好的示范程序,mail一个,不甚感激
//E-mail: leemingsong@sina.com
//////////////////////////////////////////////////////////////////////////
telstar
2001-09-23
打赏
举报
回复
TPrinter.PageHeight,PageWidth是各个打印机的分辨率,和屏幕分辨率同
leemingsong
2001-09-23
打赏
举报
回复
up
4.TPrinter.PageHeight,PageWidth 的单位是什么(像素/mm/英寸)
5.为什么不同打印驱动的A4纸,PageHeight,PageWidth各不相同,难道A4不是固定规格吗?
leemingsong
2001-09-23
打赏
举报
回复
急急急急急急急急急急急急
leemingsong
2001-09-23
打赏
举报
回复
难道没人知道了?
Starrock
2001-09-23
打赏
举报
回复
?
leemingsong
2001-09-23
打赏
举报
回复
......
leemingsong
2001-09-23
打赏
举报
回复
wait......
leemingsong
2001-09-23
打赏
举报
回复
wait......
myy
2001-09-22
打赏
举报
回复
WinApi:与GetDeviceCaps差不多的函数GetDeviceC.....sorry记不清了
leemingsong
2001-09-22
打赏
举报
回复
谢谢以上三位快速回复,但我的问题还未解决,现在我把问题简化一下
如:程序通过PrinterSetupDialog1.Execute设置了打印机(HP4050)和纸张(A4),下一步我想获知纸张名称PaperName (结果应该是'A4'),怎么得到?
sundayboys
2001-09-22
打赏
举报
回复
按你的要求,将你要设置的纸张大小设置为最接近的标准大小就是了。
with DevMode^ do
begin//设置纸张尺寸
dmFields:=dmFields or DM_PAPERSIZE;
dmPaperSize:=DMPAPER_A4
end;
加载更多回复(3)
FastReport 自定义预览打印窗口
其实也没有什么,只是针对打印的窗口缩放写了一点代码,而且还有些问题,希望哪位
大虾
修改一下!
C# 打印与报表技术 源码
如何在报表中计算百分比
Windows
打印控件应用技巧 如何使用PrintDocument控件打印窗体数据 如何使用PrintPreviewContronl控件预览 使用PrintPreviewDialog对话框 如何使用PrintDialog...
WinForm的2种活动页截屏打印方法
这个是我自己做的关于截屏打印程序,其实也亏了各位CSDN的
大虾
的帮助,集成起来的一种成果。里面还有最新的IP
获得
方法,旧的已经在CSDN里面过时了!
艺术签名设计系统
所以偶又给大家找来了PDF虚拟
打印机
破解版,不好意思的说,这个软件就必须安装了,不信你自己找绿色版去,安装了之后在打印的时候选择PDF虚拟
打印机
,就可以预览了!! 把你的名字输入之后,按f5键,然后选择...
MFC利用
Windows
_API开发Win32程序实例.rar
MFC相关API, 只是基础的描述, 如果是
大虾
, 可以不用看了。
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章