如何使用GhostScript避免tiff上的标头截断。将ps转换为tiff
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用GhostScript避免tiff上的标头截断。将ps转换为tiff相关的知识,希望对你有一定的参考价值。
在本节中,我将头文件添加到tiff文件的顶部。
echo "/CourierLatin1 findfont 8 scalefont setfont" >>${PS}
echo "40 2 moveto (${DATE}) show" >>${PS}
echo "200 2 moveto (${NAME}) show" >>${PS}
echo "400 2 moveto (${FROM}) show" >>${PS}
echo "510 2 moveto (${PAGEINFO}) show showpage" >>${PS}
${BIN}/gs -dQUIET -dNOPAUSE -dBATCH -dSAFER -sDEVICE=tiffg4 -sOutputFile=${HDR_FILE}
-dDEVICEWITHPOINTS=612 -dDEVICEHEIGHTPOINTS=11 ${PS} >>${LOG_FILE}
if [ $? -ne 0 ] ; then
cleanup
echo "${BIN}/gs failed" >>${LOG_FILE}
exit 1
fi
# Overlay the header onto the tiff page
SIZE=`${BIN}/tiffinfo ${f} | grep "Image Width:" | sed -e "s/Image Width//" | sed -e "s/Image Length//" | sed -e "s/ //g"`
WIDTH=`echo ${SIZE} | cut -d: -f2`
LENGTH=`echo ${SIZE} | cut -d: -f3`
OFFSET=`expr ${LENGTH} - 2156`
# no shifting of header line up or down is needed
OFFSET=0
if [ ${OFFSET} -lt 0 ] ; then
OFFSET=0
fi
echo "Adding ${HDR_FILE} to ${f} ${WIDTH}x${LENGTH} at 0,${OFFSET}" >>${LOG_FILE}
${CONVERT} tiff:${f} -draw "image over 0,${OFFSET} 0,0 'tiff:${HDR_FILE}'" -compress Group4 -flatten +matte tiff:${f} >>${LOG_FILE}
if [ $? -ne 0 ] ; then
cleanup
echo "${CONVERT} failed" >>${LOG_FILE}
exit 1
fi
可以在任何尺寸的页面来找我。所以我首先将tiff post脚本翻译成大小。
我再次转换tiff。可以看到如下代码:
# Nasty compromise - Have to convert the tiff file to ps file so that I can turn around
# and create a 'faxable' tiff file (one that Radisys will accept)
${BIN}/tiff2ps -a -h11.0 -w8.5 ${LOCAL_FILE} >${PS_FILE}
if [ $? -ne 0 ] ; then
cleanup
echo "${BIN}/tiff2ps failed" >>${LOG_FILE}
exit 1
fi
# Part 2 of compromise
${BIN}/gs -dQUIET -dNOPAUSE -dBATCH -dSAFER -sDEVICE=tiffg4 -sPAPERSIZE=letter -r204x196 -sOutputFile=${LOCAL_FILE} ${PS_FILE} >>${LOG_FILE} 2>&1
if [ $? -ne 0 ] ; then
cp ${BKUP_FILE} ${ORIG_FILE}
cleanup
echo "${BIN}/gs ps2tiff failed" >>${LOG_FILE}
exit 1
fi
输出tiff给出Radisys。我不明白为什么标题为此输出剪切.pdf。
您可以看到输出传真图像如下。为什么Header削减了?
在我看来,你首先打印'标题',然后将TIFF文件中的图像(在这种情况下,文本'传真')放在它上面。
TIFF文件不是蒙版,因此空白区域不透明。将TIFF文件转换为PostScript时,它会将TIFF位图图像封装为PostScript图像。如果图像中的空白区域位于“标题”的顶部,则会在其上方打印,遮挡“标题”的一部分。
它有点难以确定发生了什么,我不是shell脚本专家,但看起来你首先使用Ghostscript将一段PostScript呈现给TIFF。那是你的'标题'。
然后你调用$(CONVERT)我猜是ImageMagick的转换实用程序来组合标题和一些原始的TIFF文件。
我怀疑在这一点上你的问题出现了,我猜你需要以相反的顺序放置两个tiff文件,以便将标题放在原始文件的“顶部”,而不是“在它之下”(在Z-order术语。在你的$(CONVERT)调用中,尝试交换$(f)和$(HDR_FILE)。
你当然可以检查那个点上的TIFF文件,看看是否一切都很好。
然后,您获取该TIFF文件,使用tiff2ps(我认为是libtiff的一部分)将图像包装为PostScript,然后使用Ghostscript以不同(传真)分辨率重新渲染图像。
无论如何,我会说你正在使用错误的工具进行最后一步。你已经有了一个位图,你最好使用图像处理应用程序将其下采样到所需的分辨率。虽然你的解决方案无疑是有效的,但我怀疑像ImageMagick这样的东西会做得更好。
至少,在通过tiff2ps发送之前检查TIFF文件应该告诉您此时结果是否正确。
以上是关于如何使用GhostScript避免tiff上的标头截断。将ps转换为tiff的主要内容,如果未能解决你的问题,请参考以下文章
使用 ghostscript 将 PDF 转换为 TIFF 但不将文件写入磁盘
如何告诉 Ghostscript 在从 eps 到 tiff 的转换中不要使用剪切路径?