Håk*_*and 5 linux pdf ghostscript
打印没有边框(或边距)的pdf时,打印机会在纸张边缘切掉1mm左右的图像数据.因此,我正在寻找一种解决方案,在页面上稍微缩放/调整pdf页面的大小,以在边缘处添加白色边框,该边框将与打印机生成的边缘处的空白区域相对应.
我到目前为止尝试使用gs..例如,假设我有一个A4尺寸的pdf 1.pdf,然后我使用:
gs -sDEVICE=pdfwrite \
-q -dBATCH -dNOPAUSE \
-dPDFFitPage \
-r300x300 \
-g2232x3157 \
-sOutputFile=1A.pdf \
1.pdf
Run Code Online (Sandbox Code Playgroud)
在这里,-g2480x3508我给出了完整的a4论文,并且我试图将其乘以0.9来进行缩放,但是我没有看到任何影响.
这是建立在上一个脚本基础上的 bash 脚本的要点。修复了颜色兼容性问题(可能特定于我的 pdf),并进行了一些依赖性检查:
\n\n#!/bin/bash\n\n# pdfScale.sh\n#\n# Scale PDF to specified percentage of original size.\n# Ref: http://ma.juii.net/blog/scale-page-content-of-pdf-files.\n\necho "This script doesn\'t handle files with spaces in them."\n\nSCALE=0.95 # scaling factor (0.95 = 95%, e.g.)\n\n# Validate args.\n[ $# -eq 1 ] || { echo "***ERROR: Usage pdfScale.sh <inFile>.pdf"; exit 99; }\nINFILEPDF="$1"\n[[ "$INFILEPDF" =~ ^..*\\.pdf$ ]] || { echo "***ERROR: Usage pdfScale.sh <inFile>.pdf"; exit 99; }\nOUTFILEPDF=$(echo "$INFILEPDF" | sed -e s/\\.pdf$// -).SCALED.pdf\n\n# Dependencies\ncommand -v identify >/dev/null 2>&1 || { echo >&2 "Please install \'imagemagick\' (sudo apt-get install imagemagick). Aborting."; exit 1; }\ncommand -v gs >/dev/null 2>&1 || { echo >&2 "Please install \'ghostscript\' (sudo apt-get install ghostscript ?). Aborting."; exit 1; }\ncommand -v bc >/dev/null 2>&1 || { echo >&2 "Please install \'bc\' arbitrary precision calculator language. Aborting."; exit 1; }\n\n# Get width/height in postscript points (1/72-inch), via ImageMagick identify command.\n# (Alternatively, could use Poppler pdfinfo command; or grep/sed the PDF by hand.)\nIDENTIFY=($(identify $INFILEPDF 2>/dev/null)) # bash array\n[ $? -ne 0 ] &GEOMETRY=($(echo ${IDENTIFY[2]} | tr "x" " ")) # bash array \xe2\x80\x94 $IDENTIFY[2] is of the form PGWIDTHxPGHEIGHT\nPGWIDTH=${GEOMETRY[0]}; PGHEIGHT=${GEOMETRY[1]}\n\n# Compute translation factors (to center page.\nXTRANS=$(echo "scale=6; 0.5*(1.0-$SCALE)/$SCALE*$PGWIDTH" | bc)\nYTRANS=$(echo "scale=6; 0.5*(1.0-$SCALE)/$SCALE*$PGHEIGHT" | bc)\n\necho $PGWIDTH , $PGHEIGHT , $OUTFILEPDF , $SCALE , $XTRANS , $YTRANS , $INFILEPDF , $OUTFILEPDF\n\n# Do it.\ngs \\\n-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER \\\n-dCompatibilityLevel="1.5" -dPDFSETTINGS="/printer" \\\n-dColorConversionStrategy=/LeaveColorUnchanged \\\n-dSubsetFonts=true -dEmbedAllFonts=true \\\n-dDEVICEWIDTH=$PGWIDTH -dDEVICEHEIGHT=$PGHEIGHT \\\n-sOutputFile="$OUTFILEPDF" \\\n-c "<</BeginPage{$SCALE $SCALE scale $XTRANS $YTRANS translate}>> setpagedevice" \\\n-f "$INFILEPDF"\nRun Code Online (Sandbox Code Playgroud)\n\nhttps://gist.github.com/MichaelJCole/86e4968dbfc13256228a
\n\n有关此方法的更多信息以及对此要点的讨论可在此博客文章中找到:
\n\n请参阅tavinus/pdfScale,它是一个添加了一些其他功能的分支。
\n