修改PDF文件

Mac*_*tka 19 command-line editors software-rec gui pdf

我想对现有的 PDF 文件进行一些基本的编辑。进一步来说:

  • 添加章节/书签
  • 更改页码

但是,我找不到可以提供此功能的任何工具、GUI 或命令行。有没有免费开放的替代工具?

fra*_*ous 21

我主要使用pdftk。但这里还有一些其他的需要考虑:

pdfsam(PDF 拆分和合并):“pdfsam 是一个开源工具(GPL 许可),旨在处理 pdf 文件”

PDFJam “shell脚本要多的优秀pdfpages PDF文件包(由Andreas马蒂亚斯)为功能提供了一个简单的界面的小集合pdfLaTeX。” (您也可以直接使用 pdfLaTeX。)

jPDFTweak:“jPDF Tweak 是一个 Java Swing 应用程序,可以组合、拆分、旋转、重新排序、水印、加密、签名和以其他方式调整 PDF 文件。”

Inkscape:是一个矢量图形编辑器,既可以将 PDF 页面导入其原生 SVG 格式,也可以导出为 PDF。

Calibre:开源电子书管理软件,可以将 PDF 转换为其他格式,并以其他方式处理它们。附带命令行工具,例如pdfmanipulate,这很有用。

Ghostscript当然也可以对 PDF 文件做很多事情。

  • 我误解了这个问题。编辑问题以明确您所说的“章节”是什么意思。我假设您只是想将 PDF 的一部分插入到另一部分中。但也许您的意思是 pdf 书签(即,出现在某些查看者的侧窗格中)?PDFJam 可能不会,但 PDFLaTeX 的 pdfpages 包以及 LaTeX hyperref 包可以处理这些。pdfedit 应该能够更改页码。使用 pdfLaTeX/pdfpages,您可以剪切页面底部并添加新页面。BRISS 也可以剪掉页眉/页脚,但你必须用别的东西把它们加回来。 (2认同)
  • 另一个:`jPDFBookmarks`:http://flavianopetrocchi.blogspot.com/2009/03/patch-for-linux-launcher.html (2认同)

fsc*_*itt 12

我知道两个在 Linux 下操作 PDF 的程序:

PDEedit “PDFedit 是一个免费的开源 pdf 编辑器和一个用于操作 PDF 文档的库,根据 GNU GPL 版本 2 发布。它包括基于 xpdf、GUI、一组命令行工具和一个 pdf 编辑器的 PDF 操作库。”

pdftk “如果 PDF 是电子纸,那么 pdftk 就是电子订书钉器、打孔器、活页夹、秘密解码器环和 X 射线眼镜。pdftk 是一个简单的工具,用于处理 PDF 文档的日常事务。 ”


Mic*_*erz 5

带有pdfpagesbookmark包的LaTeX可以做大部分这些事情。

这是通过创建一个新tex文档并通过\includepdf(参见pdfpages 手册)包含原始 PDF 文档(或其中的一部分)来实现的。

您还可以更改页码,例如

\pagenumbering{roman}
\setcounter{page}{1}
% include pdf pages that should have roman numbering (the front matter)
\pagenumbering{arabic} % switch to arabic numbering
\setcounter{page}{1} % reset page counter
% include pdf pages that should have arabic numbering (the main matter)
Run Code Online (Sandbox Code Playgroud)

这些“逻辑”页码只是大多数 PDF 阅读器可以用来导航到特定页面的标签。还有底层的“物理”页码从 1 开始连续运行,用于较低级别的交互(见下文)。

在您使用正确的逻辑页码包含现有的 pdf 页面后,您可以使用该\bookmark命令设置 PDF 书签(“大纲”)。基本语法是

\bookmark[page=<pagenumber>,level=<level>]{<title>}
Run Code Online (Sandbox Code Playgroud)

其中<pagenumber>是目标页面的页码。请注意,这些不是之前定义的“逻辑”页码,而是从 pdf 开头从 1 开始连续运行的内部页码。嵌套书签是通过指定<level>, 哪里0是顶级来完成的。该<title>是在PDF阅读器的轮廓要显示的文字。有关详细信息,请参阅书签手册

编译tex文件将生成一个带有所需页码和书签的新 PDF。

有关所有这些如何结合在一起的完整示例,请参阅https://michaelgoerz.net/notes/pdf-bookmarks-with-latex.html


Dar*_*idl 5

我发现将页码添加到 PDF 的唯一方法是使用 LaTeX:

创建一个文件 /usr/local/bin/add-page-numbers.tex

\documentclass[8pt]{article}
\usepackage[final]{pdfpages}
\usepackage{fancyhdr}

\topmargin 70pt
\oddsidemargin 150pt

\pagestyle{fancy}
\rfoot{\Large\thepage}
\cfoot{}
\renewcommand {\headrulewidth}{0pt}
\renewcommand {\footrulewidth}{0pt}

\begin{document}
\includepdfset{pagecommand=\thispagestyle{fancy}}
\includepdf[pages=-]{input.pdf}
\end{document}
Run Code Online (Sandbox Code Playgroud)

和一个文件 /usr/local/bin/pdf-numbers

#!/bin/bash
name="${1%\.pdf}-numbers"
wd="$(pwd)"
dir=/tmp/pdf-numbers
mkdir -p "$dir"
cp "$1" "$dir/input.pdf"
cd "$dir"
pdflatex --jobname "$name" /usr/local/bin/add-page-numbers.tex > /dev/null
mv "$name.pdf" "$wd"
rm -r "$dir"
Run Code Online (Sandbox Code Playgroud)

使后一个文件可执行,并运行它

    pdf-numbers example.pdf
Run Code Online (Sandbox Code Playgroud)

它将创建一个名为 example-numbers.pdf 的 pdf 文件(如果它已经存在,则覆盖它!)。