linux – 缩放pdf以添加边框以打印全尺寸页面
发布时间:2020-12-14 01:15:22 所属栏目:Linux 来源:网络整理
导读:打印没有边框(或边距)的pdf时,打印机会在纸张边缘切掉1mm左右的图像数据.因此,我正在寻找解决方案 在页面上稍微缩放/调整pdf页面的大小,以在边缘处添加白色边框,该边框将与打印机生成的边缘处的空白区域相对应. 我到目前为止尝试过使用gs.例如,假设我有一个A
打印没有边框(或边距)的pdf时,打印机会在纸张边缘切掉1mm左右的图像数据.因此,我正在寻找解决方案
在页面上稍微缩放/调整pdf页面的大小,以在边缘处添加白色边框,该边框将与打印机生成的边缘处的空白区域相对应. 我到目前为止尝试过使用gs.例如,假设我有一个A4尺寸pdf 1.pdf,那么我用过: gs -sDEVICE=pdfwrite -q -dBATCH -dNOPAUSE -dPDFFitPage -r300x300 -g2232x3157 -sOutputFile=1A.pdf 1.pdf 这里有一个完整的a4论文由-g2480x3508给出,我试图乘以0.9来缩放,但我没有看到这个有什么影响.. 解决方法
这是一个基于prev的bash脚本的要点.修复了颜色兼容性问题(可能特定于我的pdf),并进行了一些依赖性检查:
#!/bin/bash # pdfScale.sh # # Scale PDF to specified percentage of original size. # Ref: http://ma.juii.net/blog/scale-page-content-of-pdf-files. echo "This script doesn't handle files with spaces in them." SCALE=0.95 # scaling factor (0.95 = 95%,e.g.) # Validate args. [ $# -eq 1 ] || { echo "***ERROR: Usage pdfScale.sh <inFile>.pdf"; exit 99; } INFILEPDF="$1" [[ "$INFILEPDF" =~ ^..*.pdf$]] || { echo "***ERROR: Usage pdfScale.sh <inFile>.pdf"; exit 99; } OUTFILEPDF=$(echo "$INFILEPDF" | sed -e s/.pdf$// -).SCALED.pdf # Dependencies command -v identify >/dev/null 2>&1 || { echo >&2 "Please install 'imagemagick' (sudo apt-get install imagemagick). Aborting."; exit 1; } command -v gs >/dev/null 2>&1 || { echo >&2 "Please install 'ghostscript' (sudo apt-get install ghostscript ?). Aborting."; exit 1; } command -v bc >/dev/null 2>&1 || { echo >&2 "Please install 'bc' arbitrary precision calculator language. Aborting."; exit 1; } # Get width/height in postscript points (1/72-inch),via ImageMagick identify command. # (Alternatively,could use Poppler pdfinfo command; or grep/sed the PDF by hand.) IDENTIFY=($(identify $INFILEPDF 2>/dev/null)) # bash array [ $? -ne 0 ] &GEOMETRY=($(echo ${IDENTIFY[2]} | tr "x" " ")) # bash array — $IDENTIFY[2] is of the form PGWIDTHxPGHEIGHT PGWIDTH=${GEOMETRY[0]}; PGHEIGHT=${GEOMETRY[1]} # Compute translation factors (to center page. XTRANS=$(echo "scale=6; 0.5*(1.0-$SCALE)/$SCALE*$PGWIDTH" | bc) YTRANS=$(echo "scale=6; 0.5*(1.0-$SCALE)/$SCALE*$PGHEIGHT" | bc) echo $PGWIDTH,$PGHEIGHT,$OUTFILEPDF,$SCALE,$XTRANS,$YTRANS,$INFILEPDF,$OUTFILEPDF # Do it. gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER -dCompatibilityLevel="1.5" -dPDFSETTINGS="/printer" -dColorConversionStrategy=/LeaveColorUnchanged -dSubsetFonts=true -dEmbedAllFonts=true -dDEVICEWIDTH=$PGWIDTH -dDEVICEHEIGHT=$PGHEIGHT -sOutputFile="$OUTFILEPDF" -c "<</BeginPage{$SCALE $SCALE scale $XTRANS $YTRANS translate}>> setpagedevice" -f "$INFILEPDF" https://gist.github.com/MichaelJCole/86e4968dbfc13256228a 有关此方法的更多信息以及对此要点的讨论,请参阅此博客文章: > How to scale the page content of PDF files?(2008年8月;马特) 见tavinus/pdfScale,它是一个带有一些其他功能的分支. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |