我有一个ps文件是一个A4页面,我想绘制4条虚线,将页面分成9个等大小。
我需要通过命令行或bash脚本来实现。
答案 0 :(得分:2)
您可以使用/ BeginPage或/ EndPage过程绘制线条,您可以将其添加到PostScript程序中。
您可以使用Ghostscript的ps2write设备并添加每页内容。
无论如何,只需在调用setpagedevice之前添加一个PostScript片段,并让字典包含一个BeginPage过程,该过程绘制所需的四行。完成工作
x y moveto x y lineto stroke将在当前颜色中绘制一条线,其中x和y是PostScript单位中的位置(1/72英寸)要设置黑色,请在执行笔划之前执行“0 setgray”。要以编程方式计算页面大小,请使用“currentpagedevice / PageSize get”或“clippath pathbbox”。 PostScript语言参考手册可在线获取。
答案 1 :(得分:0)
按照KenS的答案,我已经做到了:
#!/bin/bash
if [[ $# -eq 0 ]] ; then
echo 'Tienes que pasar un fichero como argumento'
exit 0
fi
if [[ ! -f "$1" ]]; then
echo "$1 no es un fichero"
exit 0
fi
SOURCE=$(realpath -- "$1")
DIR="$PWD"
cd $(mktemp -d)
echo "Directorio de trabajo: $PWD"
filename=$(basename -- "$1")
extension="${filename##*.}"
filename="${filename%.*}"
WORKCOPY="in.pdf"
OUTPUT="$DIR/${filename}"
if [[ "$extension" != "pdf" ]]; then
unoconv -f pdf -o "$WORKCOPY" "$SOURCE"
if [ $? -ne 0 ]; then
exit $?
fi
else
cp "$SOURCE" "$WORKCOPY"
OUTPUT="${OUTPUT}_3x3"
fi
pages=$(pdfinfo "$WORKCOPY" | grep Pages | awk '{print $2}')
if [ $pages -ne 2 ]; then
echo "El número de páginas ha de ser 2"
exit 0
fi
function build_page {
pdftk "$WORKCOPY" cat $1 $1 $1 $1 $1 $1 $1 $1 $1 output "$1.pdf"
rot=$(pdfinfo "$1.pdf" | grep "Page rot" | awk '{print $3}')
if [ $rot -ne 0 ]; then
pdftk "$1.pdf" cat 1-endnorth output "$1_north.pdf"
mv "$1_north.pdf" "$1.pdf"
fi
size=$(pdfinfo "$1.pdf" | grep "Page size" | awk '{print $3, $5}')
width=$(echo $size | cut -d' ' -f1)
height=$(echo $size | cut -d' ' -f2)
pdf2ps "$1.pdf" "$1.ps"
psnup -W${width} -H${height} -pa4 -9 "$1.ps" "$1_oct.ps"
if [ $1 -eq 1 ]; then
# Guias para cortar
# Ancho: 842
# Alto: 595
cp "$1_oct.ps" "$1_oct.bak.ps"
cat > "$1_oct.ps" <<EOF
<< /BeginPage
{
0.7 setgray
0 280.66 moveto 595 280.66 lineto stroke
0 561.33 moveto 595 561.33 lineto stroke
198.33 0 moveto 198.33 842 lineto stroke
396.66 0 moveto 396.66 842 lineto stroke
}
>> setpagedevice
EOF
cat "$1_oct.bak.ps" >> "$1_oct.ps"
fi
rm "$1.pdf"
ps2pdf "$1_oct.ps" "$1.pdf"
}
build_page 1
build_page 2
pdftk 1.pdf 2.pdf cat output "${OUTPUT}.pdf"
主要部分是我cat > "$1_oct.ps" <<EOF
。
因此,正如KenS所建议的,解决方案是前置:
<< /BeginPage
{
0.7 setgray
0 280.66 moveto 595 280.66 lineto stroke
0 561.33 moveto 595 561.33 lineto stroke
198.33 0 moveto 198.33 842 lineto stroke
396.66 0 moveto 396.66 842 lineto stroke
}
>> setpagedevice
由于