首页 > 解决方案 > PDF 水印:透明度、下划线、粗体和斜体文本 Ghostscript 和 Php

问题描述

我正在尝试使用 ghostscript 为 pdf 添加水印(带有文本)。早些时候,我通过 ghostscript 添加了页码,甚至在 pdf 中添加了基于文本的水印,但内容上方和下方的透明度和水印似乎是一个问题,因此我尝试使用 Postscript 的 PDFMARK 扩展失败。下面是 ps 代码(在EndPage的正文中),为了允许粗体、斜体和下划线,我故意尝试编写文本而不是 Stroke。如果它提供免费的替代方案,我正在考虑从 php 更改为任何其他语言。

 /Helvetica 44 selectfont 
  (Shadab Hussain Watermark on Test)
  dup       
  stringwidth pop
  currentpagedevice /PageSize get 0 get 
  exch sub 2 div 
  currentpagedevice /PageSize get 1 get 2 div moveto 
  show

标签: phpfpdfghostscript

解决方案


您不能在 PostScript 中进行透明度,因为图形模型不支持它。这是 PostScript 和 PDF 之间的主要区别之一。

Ghostscript 确实对 PostScript 成像模型进行了一些扩展,这将允许使用PostScript 中的 PDF 透明度,但这并不重要。您应该(使用 Ghostscript Git 存储库中的最新 HEAD)查看 ghostpdl/examples/transparency_example.ps 以获取使用 PostScript 透明度的示例。请注意,这些扩展完全是Ghopstscript 特定的,不能与任何其他 PostScript 解释器一起使用。

至于“上面”和“下面”的内容。您要么在 BeginPage 上执行 PostScript 程序,在这种情况下,它位于 PDF 内容之前,并且可能被它覆盖(提示:许多 PDF 文件以绘制覆盖页面的白色矩形开始),或者执行 PostScript 程序在 EndPage 上(两者都可能),在这种情况下,它会覆盖已绘制的内容。

php的使用在这里无关紧要,但事实是您没有提供完整的程序,只是一个片段(是的,您在EndPage上说它,但您没有显示),也没有对问题的完整描述( “似乎是一个问题”对于问题的性质并没有提供太多信息)并且您没有提供示例 PDF 文件进行测试。最后,您还没有给我们一个 Ghostscript 命令行,而且您使用的 Ghostscript 版本也是有用的信息。

从提出问题到发表令人沮丧的评论之间的 15 分钟相当短。您可能需要等待数小时甚至数天才能得到答复。


推荐阅读