同一PDF文档的打印方式是否与屏幕上显示的不同?

同一PDF文档的打印方式是否与屏幕上显示的不同?,pdf,printing,view,Pdf,Printing,View,例如,您将包含发票的PDF文档发送给客户,您希望他们在屏幕上以彩色查看您的徽标,但在打印时,您希望您的徽标以可打印的黑白版本打印,这可能吗?谢谢。您可以使用图层设置某些内容在打印时显示,其他内容在查看时显示。是的,PDF规范允许创建此类PDF文件。但您还必须使用一种工具,使您能够在PDF规范中利用此功能。有几种方法可以做到这一点 表单字段可以设置为“仅打印”或“仅屏幕”。“仅图标”按钮字段可以具有任意外观。Acrobat的UI允许您导入任何PDF页面,而允许您生成字段的API通常允许您绘制自己

例如,您将包含发票的PDF文档发送给客户,您希望他们在屏幕上以彩色查看您的徽标,但在打印时,您希望您的徽标以可打印的黑白版本打印,这可能吗?谢谢。

您可以使用图层设置某些内容在打印时显示,其他内容在查看时显示。

是的,PDF规范允许创建此类PDF文件。但您还必须使用一种工具,使您能够在PDF规范中利用此功能。

有几种方法可以做到这一点

  • 表单字段可以设置为“仅打印”或“仅屏幕”。“仅图标”按钮字段可以具有任意外观。Acrobat的UI允许您导入任何PDF页面,而允许您生成字段的API通常允许您绘制自己的外观

  • 可选内容组(也称为层)。OCG的屏幕和打印可以有单独的打开和关闭状态。OCG是一个相对高级的特性,只有更成熟的API支持

我是iText的粉丝(也是贡献者),这是一个Java库,可以同时使用这两种方法。只创建图标按钮会更容易

PushbuttonField iconButton = new PushbuttonField(myPdfWriter, rectangle, fieldName);
iconButton.setLayout(PushbuttonField.LAYOUT_ICON_ONLY);
iconButton.setScaleIcon(PushbuttonField.SCALE_ICON_ALWAYS);
iconButton.setVisibility(BaseField.HIDDEN_BUT_PRINTABLE);

PdfImportedPage iconAppearance = myPdfWriter.getImportedPage(pdfReader, pageNum);
iconButton.setTemplate(iconAppearance);

myPdfWriter.addAnnotation(iconButton.getField());
这假定您知道生成PDF时要使用的矩形,并且有一个包含黑白徽标的PDF页面


注意:iText是根据AGPL授权的,AGPL要求任何可以访问程序输出的人也可以访问源代码。AKA:商业上的敌意。或者你可以购买商业许可证。以前的版本在MPL或LGPL下可用,但不再受支持,除了在这样的地方,即使答案是越来越多的“获取新版本”。

我不知道是否有可能用图像代替打印-可能没有。在打印对话框中要求/告诉客户手动切换到s/w不是一个选项吗?如果我没有错,您可以将内容标记为“仅屏幕”或“屏幕+打印”。至少这是我们要做的,手动切换不是我们想要的。Scribus NG支持PDF输出中的“屏幕和/或打印”还是仅支持其他格式?谢谢你们的评论。这可以通过水印注释来完成。您可以有一个用于屏幕的水印和另一个用于打印的水印。两者必须位于同一位置。您可以设置它们的标志,以便在屏幕上打印或查看时仅显示其中一个。我根据这个要求为我们的PDFOne产品写了一篇文章-。有什么建议吗?谢谢。@Mario Awad-您是通过编程还是使用Acrobat之类的工具创建PDF文件?@Sorin Nistor,我目前正在使用Acrobat,但我正在寻找这两个问题的答案,因为我正在使用基于PHP的系统打印发票。谢谢&祝您愉快:)我没有使用PHP的经验,我不知道支持层(又称可选内容)的可用PHP库。使用Acrobat不能创建简单的图层,只能创建一个背景、一个水印和一个页眉/页脚。出于演示目的,我创建了此文件:。它使用背景层进行打印,使用水印层进行显示。从技术上讲,水印和背景层没有区别。我明白了。现在我知道了“层”的存在,我可以在需要时搜索该功能。非常感谢。(但是,我无法让您的演示文件以与显示不同的方式打印!)。再次感谢。我使用Adobe Reader打印文件,我不确定其他阅读器是否正确处理图层功能。VSU给出了一个建议使用注释的答案。这是另一种可以使用的方法,我确信在PDF库中可以找到注释功能,而不是图层功能。然而,这种方法存在一个问题,Adobe Reader可以选择只打印页面内容而不打印注释,在这种情况下,您的徽标将根本不会打印。