我不知道穆托尔可以将多页 PDF 的每一页拆分为单独的 PDF 文件。
这有效:
mutool draw -o p%d.png input.pdf
这不行(它只会创建一个更大的 PDF,其中每隔一页都是黑色):
mutool draw -o %d.pdf input.pdf
这也不起作用:
mutool draw -F pdf -o %d.pdf input.pdf
也许 mutool 做不到这一点?
谢谢。
答案1
Mutool 确实可以将 PDF 拆分为单独的 PDF 页面,但我不知道您是否可以通过运行一个 mutool 命令来实现这一点。当然,您可以使用 for 循环轻松解决问题。您甚至不需要像我在这里所做的那样编写脚本。一行代码就足够了。
#!/bin/sh
help() {
printf "%s\n" "Usage: split-pdf input [output]" \
"Leave the extension off of output" > /dev/stderr
exit 1
}
input="$1"
output="$2" # leave off extension
if [ ! "$input" ]; then
help
fi
if [ ! "$output" ]; then
output=$(basename "$input" .pdf)
fi
# Get the number of pages
pagecount=$(pdfinfo "$input" | grep Pages | awk '{print $2}')
# Determine length of number for purposes of zero-padding
pad=$(printf "$pagecount" | wc -c)
for i in $(seq 1 $pagecount); do
count=$(printf "%0${pad}d" $i)
mutool merge -o "$output-$count.pdf" "$input" $i
done
我在 972 页的 PDF 上进行了测试,在我的 Intel i5 Lenovo ThinkPad 上大约花了 5 秒钟。如果您需要更快的速度,那么您可能需要编写一些代码并使用 MuPDF 库。(或者知识更渊博的人可以提供更好的答案。)您可以在以下位置阅读有关该库的信息MuPDF 的网站。它建议您可以使用提供类似于工具的类的 Java 库mutool run
,但我不知道如何使用。
答案2
Mutool 建议将 pdf 输出为 pdf 的命令是“mutool 清洁” 在文档中指出。
...它可以用来修复损坏的文件,扩展压缩流,过滤掉一定范围的页面, ETC。
为整个文件设计需要适应输出单个页面。因此,您需要从多个页面构建一个循环,以在命令之前。我建议 Windows 用户可以在一行中完成此操作。请记住,在批处理文件中,您将在 3 个位置需要 %%i。其他 shell 命令可以执行类似操作,如建议的那样钆的回答。
mutool info in.pdf|find "Pages:">pages.txt&set /p pages=<pages.txt&for /L %i in (1,1,%pages:~7%) do @mutool clean -cgggg in.pdf page-%i.pdf %i
许多构造(例如表格)仍应起作用,但某些链接或大纲书签(现在毫无意义)可能自然需要进行调整。