【MacOS】Instale GhostScript para fusionar archivos pdf por lotes

Instalación de GhostScript en MacOS

brew install ghostscript
# 安装完成后,确认是否安装成功
gs --version
# 成功则输出版本号,比如我的是10.01.2
10.01.2

Fusionar varios archivos pdf en 1 archivo pdf

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf -dPDFSETTINGS=/prepress 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf

Después de ejecutar el comando anterior, los archivos pdf numerados del 1 al 5 se fusionarán en merged.pdf
-q: el proceso de ejecución suprime la impresión del registro
-dNOPAUSE: la opción le indica a Ghostscript que no haga una pausa al final de cada página y de cada archivo, sino que procese todos. páginas y el archivo sale inmediatamente. Esta opción acelera el procesamiento porque Ghostscript no tiene que hacer una pausa al final de cada página y archivo.
-dBATCH: La opción le dice a Ghostscript que salga después de procesar todos los archivos en lugar de esperar la entrada del usuario. Esta opción le indica a Ghostscript que no entre en modo interactivo, sino que salga tan pronto como se complete el procesamiento.
-sDEVICE=pdfwrite: Indica que el formato del archivo de salida es pdf
-sOutputFile=merged.pdf: Indica el nombre del archivo de salida
-dPDFSETTINGS=/prepress: La opción puede mejorar la calidad del archivo de salida y mantener constante el tamaño de cada página, pero aumentará el tamaño del archivo.

Script de Shell para fusionar por lotes varios archivos pdf

Cuando tiene una gran cantidad de archivos pdf que deben fusionarse y los nombres de los archivos están en el siguiente formato:
a-1.pdf a-2.pdf a-3.pdf

z-1.pdf z-2. pdf z-3.pdf
debe fusionarse en -merge.pdf… z-merge.pdf

#!/bin/bash
# 合并pdf,打印执行耗时
function merge_pdf() {
    
    
  start=$(date +%s)
  eval "$3"
  end=$(date +%s)
  echo "$1: $2 cost:" `expr $end - $start` "s"
}
# 扫描pdf原始数据获取前缀名数组
arr=`ls -al pdf-dir/ |grep ".pdf"|awk -F ' ' '{print $9}'|awk -F '_' '{print $1}'|uniq`
# 计数
i=0;
# 遍历
for name in ${arr[*]}; do
	let "i++"
	# 生产合并pdf的命令行
	command="gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=./res/${name}-merged.pdf -dPDFSETTINGS=/prepress ./pdf-dir/${name}*.pdf"
	# 异步执行合并pdf函数,日志信息输出到logs/merger_pdf.log
	merge_pdf $i $name "$command" >> logs/merger_pdf.log 2>&1 &
done

Supongo que te gusta

Origin blog.csdn.net/u011308433/article/details/131444448
Recomendado
Clasificación