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 文件做很多事情。
带有pdfpages
和bookmark
包的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
我发现将页码添加到 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 文件(如果它已经存在,则覆盖它!)。