如何在 .ppd 中添加自定义页面大小是最简单的方法?

15

我想将自定义页面大小添加到我的打印机的 .ppd (PostScript 打印机描述) 文件中。要使新页面大小正常工作,我需要添加什么内容?

4个回答

25

你需要在4个不同的位置为每个额外页面大小添加值:

  1. 对于 PageSize
  2. 对于 PageRegion
  3. 对于 ImageableArea
  4. 对于 PaperDimension

最好选择一个PPD并搜索包含这些关键字的部分:

*OpenUI *PaperSize: PickOne
⋮
*CloseUI *PaperSize
*OpenUI *PageSize: PickOne
⋮
*CloseUI *PageSize

而对于以...开头的部分

*DefaultImageableArea: ...
*DefaultPaperDimension: ...
使用找到的行作为新输入的模板。请注意,尺寸以PostScript点为单位给出(其中72pt ≡ 1英寸 ≡ 2.54厘米)。
注意事项:
  1. 在PPD的4个位置添加新行。
  2. 确保为新媒体大小使用唯一名称。
  3. 确保在PPD中没有任何语法错误。
  4. 完成后(或在编辑时),使用cupstestppd实用程序(在Linux和Mac OS X上可用)检查您的PPD。

更新

关于使用cupstestppd测试PPD:

默认情况下,即使发现一些“不太重要”的语法问题(PPD字符串翻译、过滤器、UIConstraints、配置文件、媒体大小),它也会将错误报告为**FAIL**。您可以放松这些严格的检查,并使用-W all仅将所有这些报告为警告,而不是错误:

cupstestppd -W all /path/to/PPDfile.ppd
如果这返回了一些列说 WARN size ... 的行,你应该密切关注并确保修复PPD。

7
了解,1英寸恰好等于2.54厘米。 - dreamlax
@kurt 谢谢,您的教程帮助我解决了大日本DN80驱动程序中的纸张大小错误。如果还有其他人在使用大日本DN80时遇到同样的问题,请问我。 - Kurt UXD
我想知道打印机从哪里获取纸张定义,我在哪里可以提交新的尺寸? - Ark74
1
@KurtPfeifle 是的,我明白了。我的意思是软件部分,我认为CUPS已经内置了标准纸张尺寸,所以任何版本我们都能找到它们。我的问题是,它们是由cups、postscript还是ghostscript预设的呢? 如果我想提交一个新的尺寸,比如墨西哥Oficio纸张(216mmx340mm),多年来一直没有支持。也许我可以请求将其包含在内。谢谢。 - Ark74
2
@Ark74:在***IANA的IPP注册数据库**中查找该纸张尺寸是否已经“已知”(可能是用不同的名称)。如果没有,请在CUPS开发者邮件列表*上询问您可以采取哪些措施来支持它。 - Kurt Pfeifle
显示剩余2条评论

2

我有一台惠普LaserJet 1200打印机。由于Foomatic/pxlmono驱动程序提供的PPD文件缺少一些标准纸张尺寸,因此我更新了它,加入了以下语句:

*OpenUI *PageSize/Page Size: PickOne
*FoomaticRIPOption PageSize: enum CmdLine A
*OrderDependency: 100 AnySetup *PageSize
*DefaultPageSize: A4
*PageSize Letter/US Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter"
*FoomaticRIPOptionSetting PageSize=Letter: " -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792"
*End
*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive"
*FoomaticRIPOptionSetting PageSize=Executive: " -dDEVICEWIDTHPOINTS=522 -dDEVICEHEIGHTPOINTS=756"
*End
*PageSize Legal/US Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal"
*FoomaticRIPOptionSetting PageSize=Legal: " -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=1008"
*End
*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4"
*FoomaticRIPOptionSetting PageSize=A4: " -dDEVICEWIDTHPOINTS=595 -dDEVICEHEIGHTPOINTS=842"
*End
*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5"
*FoomaticRIPOptionSetting PageSize=A5: " -dDEVICEWIDTHPOINTS=420 -dDEVICEHEIGHTPOINTS=595"
*End
*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6"
*FoomaticRIPOptionSetting PageSize=A6: " -dDEVICEWIDTHPOINTS=298 -dDEVICEHEIGHTPOINTS=420"
*End
*PageSize A7/A7: "%% FoomaticRIPOptionSetting: PageSize=A7"
*FoomaticRIPOptionSetting PageSize=A7: " -dDEVICEWIDTHPOINTS=210 -dDEVICEHEIGHTPOINTS=298"
*End
*PageSize EnvISOB5/Envelope B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5"
*FoomaticRIPOptionSetting PageSize=EnvISOB5: " -dDEVICEWIDTHPOINTS=499 -dDEVICEHEIGHTPOINTS=709"
*End
*PageSize EnvISOB6/Envelope B6: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB6"
*FoomaticRIPOptionSetting PageSize=EnvISOB6: " -dDEVICEWIDTHPOINTS=354 -dDEVICEHEIGHTPOINTS=499"
*End
*PageSize EnvISOB7/Envelope B7: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB7"
*FoomaticRIPOptionSetting PageSize=EnvISOB7: " -dDEVICEWIDTHPOINTS=250 -dDEVICEHEIGHTPOINTS=354"
*End
*PageSize B5/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5"
*FoomaticRIPOptionSetting PageSize=B5: " -dDEVICEWIDTHPOINTS=516 -dDEVICEHEIGHTPOINTS=729"
*End
*PageSize B6/B6 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B6"
*FoomaticRIPOptionSetting PageSize=B6: " -dDEVICEWIDTHPOINTS=363 -dDEVICEHEIGHTPOINTS=516"
*End
*PageSize B7/B7 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B7"
*FoomaticRIPOptionSetting PageSize=B7: " -dDEVICEWIDTHPOINTS=258 -dDEVICEHEIGHTPOINTS=363"
*End
*PageSize Env10/Envelope #10: "%% FoomaticRIPOptionSetting: PageSize=Env10"
*FoomaticRIPOptionSetting PageSize=Env10: " -dDEVICEWIDTHPOINTS=297 -dDEVICEHEIGHTPOINTS=684"
*End
*PageSize EnvDL/Envelope DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL"
*FoomaticRIPOptionSetting PageSize=EnvDL: " -dDEVICEWIDTHPOINTS=312 -dDEVICEHEIGHTPOINTS=624"
*End
*PageSize EnvMonarch/Envelope Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch"
*FoomaticRIPOptionSetting PageSize=EnvMonarch: " -dDEVICEWIDTHPOINTS=279 -dDEVICEHEIGHTPOINTS=540"
*End
*PageSize EnvC5/Envelope C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5"
*FoomaticRIPOptionSetting PageSize=EnvC5: " -dDEVICEWIDTHPOINTS=459 -dDEVICEHEIGHTPOINTS=649"
*End
*PageSize EnvC6/Envelope C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6"
*FoomaticRIPOptionSetting PageSize=EnvC6: " -dDEVICEWIDTHPOINTS=323 -dDEVICEHEIGHTPOINTS=459"
*End
*PageSize EnvC7/Envelope C7: "%% FoomaticRIPOptionSetting: PageSize=EnvC7"
*FoomaticRIPOptionSetting PageSize=EnvC7: " -dDEVICEWIDTHPOINTS=230 -dDEVICEHEIGHTPOINTS=323"
*End
*CloseUI: *PageSize

*OpenUI *PageRegion: PickOne
*OrderDependency: 100 AnySetup *PageRegion
*DefaultPageRegion: A4
*PageRegion Letter/US Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter"
*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive"
*PageRegion Legal/US Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal"
*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4"
*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5"
*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6"
*PageRegion A7/A7: "%% FoomaticRIPOptionSetting: PageSize=A7"
*PageRegion EnvISOB5/Envelope B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5"
*PageRegion EnvISOB6/Envelope B6: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB6"
*PageRegion EnvISOB7/Envelope B7: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB7"
*PageRegion B5/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5"
*PageRegion B6/B6 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B6"
*PageRegion B7/B7 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B7"
*PageRegion Env10/Envelope #10: "%% FoomaticRIPOptionSetting: PageSize=Env10"
*PageRegion EnvDL/Envelope DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL"
*PageRegion EnvMonarch/Envelope Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch"
*PageRegion EnvC5/Envelope C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5"
*PageRegion EnvC6/Envelope C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6"
*PageRegion EnvC7/Envelope C7: "%% FoomaticRIPOptionSetting: PageSize=EnvC7"
*CloseUI: *PageRegion

*DefaultPaperDimension: A4
*PaperDimension Letter/US Letter: "612 792"
*PaperDimension Executive/Executive: "522 756"
*PaperDimension Legal/US Legal: "612 1008"
*PaperDimension A4/A4: "595 842"
*PaperDimension A5/A5: "420 595"
*PaperDimension A6/A6: "298 420"
*PaperDimension A7/A7: "210 298"
*PaperDimension EnvISOB5/Envelope B5: "499 709"
*PaperDimension EnvISOB6/Envelope B6: "354 499"
*PaperDimension EnvISOB7/Envelope B7: "250 354"
*PaperDimension B5/B5 (JIS): "516 729"
*PaperDimension B6/B6 (JIS): "363 516"
*PaperDimension B7/B7 (JIS): "258 363"
*PaperDimension Env10/Envelope #10: "297 684"
*PaperDimension EnvDL/Envelope DL: "312 624"
*PaperDimension EnvMonarch/Envelope Monarch: "279 540"
*PaperDimension EnvC5/Envelope C5: "459 649"
*PaperDimension EnvC6/Envelope C6: "323 459"
*PaperDimension EnvC7/Envelope C7: "230 323"

*DefaultImageableArea: A4
*ImageableArea Letter/US Letter: "18 36 594 756"
*ImageableArea Executive/Executive: "18 36 504 720"
*ImageableArea Legal/US Legal: "18 36 594 972"
*ImageableArea A4/A4: "18 36 577 806"
*ImageableArea A5/A5: "18 36 402 559"
*ImageableArea A6/A6: "18 36 280 384"
*ImageableArea A7/A7: "18 36 192 262"
*ImageableArea EnvISOB5/Envelope B5: "18 36 481 673"
*ImageableArea EnvISOB6/Envelope B6: "18 36 336 463"
*ImageableArea EnvISOB7/Envelope B7: "18 36 232 318"
*ImageableArea B5/B5 (JIS): "18 36 498 693"
*ImageableArea B6/B6 (JIS): "18 36 345 480"
*ImageableArea B7/B7 (JIS): "18 36 240 327"
*ImageableArea Env10/Envelope #10: "18 36 279 648"
*ImageableArea EnvDL/Envelope DL: "18 36 294 588"
*ImageableArea EnvMonarch/Envelope Monarch: "18 36 261 504"
*ImageableArea EnvC5/Envelope C5: "18 36 441 613"
*ImageableArea EnvC6/Envelope C6: "18 36 305 423"
*ImageableArea EnvC7/Envelope C7: "18 36 212 287"

1
如果您正在尝试在标准文档长度之外打印,例如打印到卷上。
打开终端或命令行,或选择Windows Bash提示符 cd .. cd .. cd etc cd cups cd ppd 首先安装vim或使用nano(程序文件编辑器) (vim有一个教程,只需输入vimtutor) sudo vim Eastman_Kodak_Company_KODAK_ESP_3200_Series_AiO.ppd 滚动到最大高度宽度和自定义页面参数 i插入 ESC退出插入模式 :wq!保存并退出文件
请注意,宽度参数将以宽度、高度的顺序命名。最大宽度参数应该保持不变,否则会使打印机对齐出现问题,但是您可以将长度设置为任何值。然后,您的打印机将不会在页面设置中创建长度边界,并允许您在连续循环中打印而不带有边距。确保您的纸张长度按照页面布局进行裁剪,否则它将简单地吐出卷的其余部分。这是我第一次尝试,我不小心改变了宽度参数,我相信它们是712。

enter image description here


这似乎是你在 unix.se 上回答类似问题的一个完全重复。你不应该复制这样的内容(因为两个副本在编辑时会分离)。相反,将一个问题链接到另一个问题。 - Toby Speight

0

我有一台三星打印机,所以我下载了SpliX驱动程序的源代码。驱动程序源代码包括一个Makefile,用于从列出可用页面大小的源代码编译.ppd。现在,缺少的纸张尺寸显示在打印对话框的选项中。

(这并没有解决我的小纸张打印问题。我的真正问题可能与应用程序与cups通信的方式以及在Ubuntu 9.04中从.ps到.pdf作为首选页面输入切换有关...)


打印机驱动程序源代码相比直接编辑(生成的)ppd文件,更容易编辑可用页面大小。 - joeforker
但是仅当您首先拥有源代码时,它才有效。 - Conrado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接