首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CFPDF添加水印任何级别的透明度都是不透明的。

CFPDF添加水印任何级别的透明度都是不透明的。
EN

Stack Overflow用户
提问于 2014-05-02 23:16:22
回答 1查看 680关注 0票数 1

当我水印一个pdf到另一个pdf,任何半透明的水印PDF是完全不透明的。对此我能做些什么吗?还是这是CFPDF的限制?

服务器是具有最新修补程序的CF9。

有趣的比特,当铬呈现最终产品的透明度保持,但当Acrobat Pro呈现它是不透明的。我可以打印最后的产品到AdobePDF,它是准确透明的,但我没有一个一致的页面大小发送通过我们的印刷厂,这是一个展示停止的问题。

按请求添加的代码:

代码语言:javascript
复制
<cfpdf  action="addwatermark" 
    source="#BackgroundPDF#" 
    copyfrom="#ForegroundPDF#" 
    destination="#DestinationPDF#" 
    foreground="yes" 
    opacity="10" 
    overwrite="yes" 
    position="#XYPositioning#" 
    rotation="#RotationIfRequired#" 
    showonprint="yes"
  >

我在进行过程中还发现了更多的细节:如果我上了Acrobat,我可以开始打印产品,并输出预览,并将"show“选项更改为"Not DeviceCMYK”,然后恢复透明度,但这只是某种预览,如何从PDF中实际删除该颜色空间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 00:13:06

感谢@mkl Here提供的帮助,我们能够找到如何对pdf二进制文件进行修补。因此,我只需要能够在CF中做到这一点。由于将文件作为文本文件读取,由于字符编码会导致问题,所以我能够这样做。

  1. 标识要在二进制文件中更改的文本。这就是mkl帮了我的忙。问题文本是"/K真“,它告诉PDF使用淘汰赛组,我确信这对PDF专家来说是有意义的,但对我来说完全是希腊语。
  2. 将pdf读入coldfusion作为二进制<cffile action="readbinary" file="#inputPath#" variable="input">
  3. 将二进制字节数组编码为十六进制<cfset temp=BinaryEncode(input,"Hex")>
  4. 删除我想要删除的<cfset temp2 = ReplaceNoCase(temp,"2F4B2074727565","","All")><!--- 2F4B2074727565 is HEX for /K true --->字符串,现在是十六进制
  5. 将十六进制解码回字节数组<cfset output = BinaryDecode(temp2,"Hex")>
  6. 将输出文件写入文件系统<cffile action="write" file="#outputPath#" output="#output#" nameconflict="overwrite">

现在,您有了一个看起来像预期的PDF。问题是它有什么问题。如果我打开它,什么也不做,并关闭它的提示我保存。如果我救了它,我就不再有问题了。我认为CFPDF合并操作基本上可以做到这一点,而不需要用户做一些事情,所以我添加了最后一步。

  1. 使用merge命令<cfpdf action="merge" source="#outputPath#" destination="outputPath2" pages="1" overwrite="yes">重新保存pdf
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23438346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档