mutool 可以将一个大的 PDF 文件分割成单独的 PDF 页面吗?

mutool 可以将一个大的 PDF 文件分割成单独的 PDF 页面吗?

我不知道穆托尔可以将多页 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

许多构造(例如表格)仍应起作用,但某些链接或大纲书签(现在毫无意义)可能自然需要进行调整。

在此处输入图片描述

相关内容