gpt4 book ai didi

c - GhostScript(后记): Printer cut- off borders when scaling down from A* to A4

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:18 24 4
gpt4 key购买 nike

我正在开发供外部应用程序使用的“GS Wrapper”(使用 9.20 SDK)。例如,我将 A0 图纸缩小到 A1、A2 和 A3,并且效果很好。 (PDF 转 PS,然后打印)

问题:当我将任何输入格式缩小到 A4 时,打印机会切掉内容的边框(这些是技术图纸,每一个黑色边框距离纸张边缘 5 毫米)。

  • 是否有机会再次将 A4 缩小约 95% 并使图像居中? (这应该会导致基本图像变小,比如黑色边框之后距工作表边框约 10 毫米)

我使用以下参数进行缩放:

GhostArg[0] = "-dNOPAUSE";
GhostArg[1] = "-dBATCH";
GhostArg[2] = "-dSAFER";
GhostArg[3] = "-dNOPAUSE";
GhostArg[4] = "-g2480x3508";
GhostArg[5] = "-dPDFFitPage";
GhostArg[6] = "-r300x300";
GhostArg[7] = "-sDEVICE=ps2write";
GhostArg[8] = Output;
GhostArg[9] = Input;

解决方案更新:

我设法通过在 Arg[8] 和 Arg[9] 之间插入这三行来解决这个问题:

GhostArg[9] = "-c";
GhostArg[10] = "<< /BeginPage { 0.99 0.99 scale 10 10 translate } >> setpagedevice";
GhostArg[11] = "-f";

感谢 KenS 提供/BeginPage 提示。

最佳答案

听起来您的打印机有不可打印区域。这并不少见,纸张处理需要在打印时握住纸张,这可能会导致介质的某些区域无法打印。

如果您的内容到达介质的边缘,可能打印机无法打印到那里,导致内容被裁剪。

完全可以让 ps2write 将媒体内容缩小到更小的尺寸,但您不能让它(自动)缩小并移动内容位置,因为内容适合媒体尺寸。

但是,FitPage 机制不查看内容,只查看媒体大小请求。因此,如果输入请求 A3 并且所选媒体为 A4(并且是固定的),则应用比例因子将内容缩放到所需的媒体大小(并且忽略 A3 的媒体请求)。

所以你可以做的是保留现有的代码,但添加一个 BeginPage 或 Install 过程,它使用缩放运算符进一步减小页面上标记的大小,并使用翻译运算符移动稍微原点,以便最终内容居中。

类似于(仅示例,未经测试):

<<
/BeginPage {
0.95 0.95 scale
16 20 translate
}
>> setpagedevice

顺便说一句,您知道 Ghostscript 是根据 AGPL 获得许可的吗?

另外,我强烈建议您不要使用 -g 和 -r 开关,而是简单地使用 -dDEVICEWIDTHPOINTS 和 -dDEVICEHEIGHTPOINTS 来改变媒体大小。

-g 开关以像素为单位工作,但高级输出设备(例如 pdfwrite 和 ps2write)不发射像素,它们写入高级 vector 对象。但是,由于 PostScript 和 PDF 图形模型的差异,某些元素确实需要呈现为图像并以这种方式包含在 PostScript 输出中。通过将分辨率设置为 300,您可以固定呈现这些元素(例如包含透明度的页面)的分辨率。我建议您不要这样做,除非您在一个非常严格控制的工作流程中工作并且知道最终输出的分辨率。

通过使用 DEVICEHEIGHTPOINTS 和 DEVICEWIDTHPOINTS 开关,您可以在不引用分辨率的情况下控制媒体大小。请注意,在 PostScript(和 PDF)中,1 磅 = 1/72 英寸。

关于c - GhostScript(后记): Printer cut- off borders when scaling down from A* to A4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41671584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com