如何在ColdFusion中将TIF图像转换为PDF

3
我能做到的最接近的是使用这段代码。
<cfset Background = ImageNew("",1725,2625)>
<cfimage source="#APPLICATION.config.serverpath#/ad1.tif" name="ad1">
<cfset height1   = ImageGetHeight(ad1)> 
<cfset width1    = ImageGetWidth(ad1)>
<cfset resImage1 = ImageCopy(ad1,0,0, width1, height1)> 
<cfset ImagePaste(Background,resImage1,150,150)>

<cfdocument format="pdf" pagetype="custom" pagewidth="5.75" pageheight="8.75" fontembed="no" name="temp" margintop="0" marginbottom="0" marginleft="0" marginright="0">
<div style="position:absolute; top:0; left:0; right:0; bottom:0; z-index:0;width:100%;height:100%;">
<cfimage action="writeToBrowser" source="#Background#" style="width:1740px; height: 2650px;">
</cfdocument> 

这让我更接近于TIF图像的完全副本,但出现了问题:宽度缩小了5个像素,但我无法找到原因。
更多细节: ad1.tif图像为1425 x 1125,生成的最终pdf文档为1725 x 2625。 如您所见,我在cfdocument中使用5.75 x 8.75英寸。 这在PDF文档中转化为300DPI。当我在Photoshop中加载PDF文档时,它确实显示文档为300DPI。
您可能会注意到ImageNew使用了1725 x 2625而cfimage使用了1740 x 2625。 如果我将cfimage尺寸与imagenew匹配(这是非常合理的),则会在顶部、右侧和底部出现白色边框。 图像的宽度仍然偏差约5个像素。 因此,我不得不将其稍微放大以消除那个白色边框。 如果我能找出图像偏差5像素的原因就好了。

如果您在cfdocument标签属性内部编写图像转换,而不是在标记内部,是否会有任何区别?就像这样: <cfdocument format="pdf" src="ad1.tif" mimetype="image/tif" />,如此文件中所述 - Miguel-F
好的,我已经做出了更改:<cfdocument format="pdf" src="temp.tif" pagetype="custom" pagewidth="5.75" pageheight="8.75" fontembed="no" name="temp" margintop="0" marginbottom="0" marginleft="0" marginright="0" mimetype="image/tif" /> 它可以完美地将页面组合在一起,没有奇怪的像素偏差... 但是...整个PDF都是低分辨率的。 - user1322114
原始图像的 DPI 是多少? - Miguel-F
TIF文件是300 DPI,非常清晰。 - user1322114
1
如果您在Linux上运行CF,并安装了Imagemagick,则只需执行“convert foo.tif foo.pdf”即可。让您的Web服务器保持空闲以处理Web请求,并将图像处理留给后台工作程序。 - Mike Causer
显示剩余3条评论
1个回答

0

显然,你的原始问题已经得到了回答,但是对于图像分辨率问题,你可以尝试在cfdocument标签中添加scale="100"。这可能会防止它缩小图像(这与降低分辨率相同)。我不确定它是否有效,因为我没有尝试过。

顺便说一句,我不明白为什么人们总是在评论中回答问题而不是在答案中回答。


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