重新编号 PDF 的页面

Mar*_*Ch1 26 pdf software-recommendation

我想编辑扫描的 PDF的元数据以将自定义页码分配给不同的页面。例如,现在第 1-3 页我可能想称之为 i、ii 和 iii,而第 4-10 页我想称之为 1-7。我希望改变页面的实际顺序。

是否有 A)一种使用免费工具来做到这一点的方法;和 B) 一种“批量”执行此操作的方法(因此,无需手动重新编号每个页面)。

Mar*_*rer 22

这是一个基于 LaTeX 的解决方案。它使用pdfpages包来包含扫描的 PDF(此处称为scan.pdf)。可以使用启用hyperrefpdfpagelabels选项的包来设置您想要的 PDF 页面标签。它使用普通\thepage宏作为可以定义为小写罗马数字的标签。然后页面计数器被重置并变回正常数字。

\documentclass[a4paper]{article}% or use 'letterpaper'
\usepackage{pdfpages}
\usepackage[pdfpagelabels]{hyperref}
\begin{document}
% Set lower case roman numbers (\Roman would be upper case):
\renewcommand{\thepage}{\roman{page}}
\includepdf[pages=1-3]{scan.pdf}
% Back to normal (arabic) numbers:
\renewcommand{\thepage}{\arabic{page}}
% Reset page counter to 1:
\setcounter{page}{1}
\includepdf[pages=4-]{scan.pdf}
\end{document}
Run Code Online (Sandbox Code Playgroud)

将上面的代码放入一个文件(例如scan_mod.tex)中并使用以下命令编译它pdflatex

# pdflatex scan_mod
Run Code Online (Sandbox Code Playgroud)

这将产生scan_mod.pdf. 但是,任何特殊注释包括。超链接将消失。这对于扫描的 PDF 应该没有任何问题。

如果您更频繁地需要这个,您可以编写一个脚本,该脚本接受罗马编号的页数和文件名作为参数,并使用上述代码创建一个临时文件,其中名称和数字是变量,然后编译。

  • @Tim:合并 PDF 时,您可以使用 LaTeX 创建 PDF 书签。请参阅我对 [如何使用 LaTeX 为要合并为单个大 pdf 的一组 pdf 文件创建目录(章节标题、小节等)?](http://tex.stackexchange.com/ Questions/12739/how-do-i-use-latex-to-create-table-of-contents-chapter-headings-subsections-etc) 在 TeX.SX 上。 (2认同)

Aki*_*RAI 10

你可以用文本编辑器来做到这一点。

正如答案所说,用文本编辑器打开一个 PDF 文件,搜索/Catalog条目,然后附加一个如下命名的条目/PageLabels

/PageLabels << /Nums [
0 << /P (cover) >> % labels 1st page with the string "cover"
1 << /S /r >> % numbers pages 2-6 in small roman numerals
6 << /S /D >> % numbers pages 7-x in decimal arabic numerals
]
>>
Run Code Online (Sandbox Code Playgroud)

请注意,页面索引(物理页码)以0.

当然,您可以使用脚本语言自动执行此操作。

PDF 标准 - 页面标签有详细的规范。


Che*_*rry 8

jPDF Tweak是一个开源图形实用程序,它提供页码(正确的术语是“页面标签”)和许多其他初学者到高级 PDF 编辑功能。它在 Ubuntu 和其他操作系统上运行。

文档页面提供一步一步的指示。


小智 6

有一个小的 python 脚本可以完成这项工作:https://github.com/lovasoa/pagelabels-py

对于您的情况,请致电:

./addpagelabels.py --delete file.pdf
./addpagelabels.py --startpage 1 --type 'roman lowercase' file.pdf
./addpagelabels.py --startpage 4 --type arabic file.pdf
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的解决方案! (2认同)
  • 这就像一个魅力,也节省了大量的时间! (2认同)