Ubuntu14.04下用ImageMagick生成带页眉页脚的A4两图多页PDF
适配A4打印的ImageMagick批量处理方案
刚好我之前处理过类似的需求,结合你提到的ImageMagick工具,给你一套完整的命令行方案,完美适配Ubuntu 14.04系统和A4打印格式,满足每页2张图、带文件名页眉和页码页脚的要求:
步骤1:给单张图片添加文件名页眉
首先我们要给每张原始图片顶部添加文件名,同时将图片缩放到适合A4页面的尺寸(预留边距和页眉空间):
# 批量处理所有Capture开头的jpg图片 for img in Capture*.jpg; do convert "$img" \ # 等比例缩放,确保图片不超过A4可用宽度(左右各留10mm边距)和单张图的高度(为上下两张图预留空间) -resize 190x136mm\> \ # 设置对齐方式为顶部 -gravity north \ # 背景设为白色,避免透明区域影响打印 -background white \ # 在顶部留出10mm的空白区域用于放置文件名 -splice 0x10mm \ # 在顶部空白区域的中间位置(向下偏移5mm)添加文件名 -annotate +0+5mm "$img" \ # 生成带页眉的中间图片,命名为annotated_原文件名 "annotated_$img" done
步骤2:将带页眉的图片两两拼接成A4页面
接下来用montage命令把两张带页眉的图片上下拼接成完整的A4页面,同时预留底部页码空间:
montage annotated_Capture*.jpg \ # 设置布局为1列2行(上下排列两张图),如果想左右排列可改为2x1 -tile 1x2 \ # 两张图片之间保留5mm的间距 -geometry +0+5mm \ # 指定输出页面为标准A4尺寸(210mm宽 × 297mm高) -page 210x297mm \ # 背景设为白色 -background white \ # 对齐方式设为底部,方便后续添加页码 -gravity south \ # 在页面底部留出10mm空白区域用于放置页码 -splice 0x10mm \ # 生成单页的图片文件,命名为page_01.jpg、page_02.jpg等 "page_%02d.jpg"
步骤3:给每页添加页码页脚
现在需要给每个生成的A4页面添加类似Page 1 of 41的页码:
# 先计算总页数 total_pages=$(ls page_*.jpg | wc -l) # 批量处理每个页面 for page in page_*.jpg; do # 从文件名中提取页码数字 page_num=$(echo "$page" | sed 's/page_\([0-9]*\).jpg/\1/') convert "$page" \ # 对齐方式设为底部 -gravity south \ # 在底部空白区域的中间位置(向上偏移5mm)添加页码文本 -annotate +0+5mm "Page $page_num of $total_pages" \ # 生成带页码的最终页面图片 "final_$page" done
步骤4:合并所有页面为PDF文件
最后把所有带页眉页脚的A4页面合并成适合打印的PDF:
convert final_page_*.jpg -quality 90 output.pdf
额外注意事项
- 如果你的Ubuntu 14.04上没有安装ImageMagick,先执行
sudo apt-get install imagemagick安装 - 若想调整页眉/页脚的字体、大小,可以在
-annotate参数前添加-font和-pointsize,比如-font Arial -pointsize 12 - 如果需要左右排列两张图,只需把步骤2中的
-tile 1x2改为-tile 2x1,同时调整-resize的参数为92x277mm\>(左右各留10mm边距,两张图之间留5mm间距)
内容的提问来源于stack exchange,提问作者719016
相关产品推荐
相关产品推荐

