Linux Mint下Bash中qpdf批量报错及与exiftool管道结合方案
解决qpdf批量PDF处理的文件名识别问题
qpdf不支持直接通过*.pdf批量传入多个文件,它一次仅能处理单个文件。要批量处理目录下所有PDF,用bash循环遍历每个文件即可:
for pdf_file in *.pdf; do qpdf "$pdf_file" --object-streams=disable --linearize --replace-input done
用"$pdf_file"包裹文件名可以避免空格或特殊字符导致的识别错误,--replace-input参数会直接覆盖原文件。
结合exiftool与qpdf的批量处理命令
要一次性处理所有目标格式文件(PDF/PNG/CSV/JPG/XLSX),对PDF文件先清除元数据再用qpdf移除隐藏内容,其他文件仅执行元数据清除,可使用以下bash循环命令:
for file in *.pdf *.png *.csv *.jpg *.xlsx; do # 跳过不存在的文件(比如目录中无XLSX时) [[ -f "$file" ]] || continue # 对所有文件清除元数据 exiftool -overwrite_original_in_place -all:all= "$file" # 仅对PDF文件执行qpdf处理 if [[ "$file" == *.pdf ]]; then qpdf "$file" --object-streams=disable --linearize --replace-input fi done
该命令会先统一清除所有文件的元数据,再针对PDF文件额外移除隐藏的JavaScript、宏,并优化文件结构。
内容的提问来源于stack exchange,提问作者Ginko-Mitten
相关产品推荐
相关产品推荐

