如何使用GhostScript避免tiff上的标头截断。将ps转换为tiff

问题描述 投票:0回答:1

在本节中,我将头文件添加到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削减了?

enter image description here

linux shell header tiff postscript
1个回答
0
投票

在我看来,你首先打印'标题',然后将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文件应该告诉您此时结果是否正确。

© www.soinside.com 2019 - 2024. All rights reserved.