是否有更好的方法来编辑PDF?

我最近不得不打印几张PDF发送给某人,但我想编辑几个小部分文本(黑掉)。

一个快速谷歌搜索没有为这个特定目的找到任何工具,所以我回到imagemagick&gimp:

  • convert document.pdf document.png
  • gimp document-0.png
  • (使用画笔将文字涂黑)
  • 从gimp打印编辑页面
  • 从xpdf打印剩余页面

这种策略的问题在于转换过程(从PDF到PNG或其他任何格式)都会失去质量。 我尝试在gimp中编辑PDF,但它没有立即起作用。

是否有一种特定的工具允许以这种方式进行编辑? (它甚至不需要是“真正的”编辑 – 我不发送软拷贝,因此“假”编辑将起作用,因为硬拷贝不能被黑客攻击以揭示底层文本。)

或者,是否有能够在gimp中编辑PDF的技巧?

(最初我推荐了Okular,但它没有像我预期的那样工作)

1.在矢量编辑器中编辑文档

我能够在Inkscape中打开一个PDF文件,在一段文本上绘制一个矩形并将其打印出来。 Inkscape是一个矢量编辑器,因此不涉及光栅化。 有些字体看起来不对 – 可能是因为文档是在Windows机器上创建的,字体在我的机器上不存在。

请注意 ,任何不涉及光栅化的方法只有在您打算在纸上打印已编辑的文档而不是以电子方式分发时才可以接受,因为文本仍然可以在停电时检索。

2.在位图编辑器中打开时增加光栅化分辨率

关于在Gimp中打开页面时的“质量损失”:您可以直接在Gimp中打开PDF文件。 它将在此过程中进行栅格化。 过程中质量损失的数量取决于您在导入时选择的分辨率 – 300 dpi应该为您提供非常好的质量(默认值为100)。

如果你告诉它增加分辨率,你也可以用ImageMagick的convert命令获得好的结果:

 convert -density 300x300 ... 

基本上你要做的是突出显示/注释PDF,但是对标记不透明度和颜色有一定的灵活性(你提到你不需要审查/删除某些东西,只需要编辑)。 您是否在此处查看了答案: 如何突出显示或注释PDF?

评价最高的答案之一推荐Xournal ,这里没有提及,并且将是我的首选武器。 它是一个工具,允许您制作手写笔记,但具有额外的function,允许您注释PDF。 默认情况下,它会将注释保存为单独的文件,但也允许您将带注释的PDF导出为新PDF。 这应该保持布局,字体等。

使用Xournal,您可以选择“Annotate PDF”,然后使用纯黑色标记来屏蔽要编辑的部分,以及“导出为PDF”。

互联网上有一些故事表明Xournal会对导出的PDF格式化文本(感谢你指出这一点,MHC)。 这似乎不是真的:使用简单的注释,文本仍然可选择和可搜索,文件大小不会增加太多(在下面的示例中它从205 kb增加到220 kb)。

要安装,请在终端中运行: sudo apt-get install xournal或只从软件中心选择它

Xournal界面导致导出的PDF

我每天都会编辑很多PDF文件,所以我花了很多时间思考如何以最好的方式来做。

对我来说,最好的方法是在1页PDF文件中拆分PDF,然后使用GIMP进行编辑,然后将其合并。 我没有在所有文件上使用imagemagick(我根本不使用),所以我不会在所有页面上丢失文本层,而只是在编辑时丢失。 不要一次加载整个PDF文件,因为它会导致内存耗尽。

在单页文件中拆分PDF

通过此bash函数轻松将PDF文件拆分为1页PDF(将其放在〜/ .bashrc中):

 function pdf_split(){ for file in "$@"; do if [ "${file##*.}" != "pdf" ]; then echo "Skip $file because it's not PDF file"; continue fi; pages=$(pdfinfo "$file" | grep "Pages" | awk '{print $2}') echo "Detect $pages in $file"; filename="${file%.*}"; unset Outfile; for i in $(seq 1 "$pages"); do pdftk "$file" cat "$i" output "$filename-$i.pdf"; Outfile[$i]="$filename-$i.pdf"; done; done; }; 

您现在可以输入split_pdf file.pdf来获取大量PDF文件。

编辑文件

但是,现在您需要编辑所有这些文件。 你可以用gimp original-filename-*.pdf来做。 我建议在GIMP(主窗口 – >编辑 – >快捷方式)中配置快捷方式来替换文件(我使用CTRL + R),模糊filter(例如CTRL + D),关闭文件(例如CTRL + W)并退出GIMP( eg.CTRL + Q)。 记住不要一次加载GIMP到很多文件,但GIMP就像你打开后加载一样,所以你可以使用gimp original-filename-*.pdf安全地保存千元文件。

合并文件

您可以使用以下pdftk originam-filename-*.pdf cat output "new-file-anon.pdf";轻松组合文件: pdftk originam-filename-*.pdf cat output "new-file-anon.pdf";

将它们连接在一起

这些操作非常重复且无聊,所以我将它连接在一个脚本中:

 function pdf_redact(){ for file in "$@"; do if [ "${file##*.}" != "pdf" ]; then echo "Skip $file because it's not PDF file"; continue fi; pages=$(pdfinfo "$file" | grep "Pages" | awk '{print $2}') echo "Detect $pages in $file"; filename="${file%.*}"; unset Outfile; for i in $(seq 1 "$pages"); do pdftk "$file" cat "$i" output "$filename-$i.pdf"; Outfile[$i]="$filename-$i.pdf"; done; gimp "${Outfile[@]}"; pdftk "${Outfile[@]}" cat output "$filename-anon.pdf"; rm "${Outfile[@]}"; read -p "Do you want open output file? " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]] then evince "$filename-anon.pdf"; fi read -p "Do you want upload output file to Scribd.com? " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]] then scribd_up "$filename-anon.pdf"; fi done; }; 

该脚本的最新版本始终可从以下位置访问: http : //dostep.jawne.info.pl/it/bashrc

记住在所有编辑后关闭GIMP(CTRL + Q)以继续脚本。

在上瘾中,我打开编辑文件(我喜欢阅读以检查是否全部)以及使用我的其他脚本上传到Scribd – scribd_up ,所以现在我可以非常有效地编辑大量PDF文件。

你可以使用Okular。

 sudo apt-get install okular 
  1. 用Okular打开pdf。
  2. F6
  3. 8
  4. 突出显示要编辑的文本。
  5. 右键单击文本,选择属性,选择“类型”作为“突出显示”,然后按确定
  6. 将文件打印为pdf。

使用免费工具PDF-Xchange PDF Viewer打开PDF 。 使用黑色矩形将要删除的文本涂黑。 打印。 这将使您轻松,高质量的“假”编辑。

您也可以尝试这个工具: https : //launchpad.net/updf

这是(但无论如何,文本是可选的):

在此处输入图像描述

我记得有一次我和一位同事必须找到一种方法来编辑几个pdf,我们最终使用了Gimp。 我会评论你的详细信息…我们直接用gimp打开pdf(在终端中)

 gimp the_file.pdf 

完成编辑后,我们没有保存更改,而不是我们打印到pdf文件…这似乎工作正常。

PDF Studio是一个非开源软件,是需要购买的软件。

就这个问题而言,从版本8开始,它具有手动编辑function。 用户可以选择文本对象并进行编辑。 内容将从PDF中删除,并替换为黑色矩形。

在2013年第三季度的第9版中,还可以为图像和形状提供编辑注释和刻录。

使用LibreOffice Draw进行您正在寻找的快速编辑。 完成后,您可以将其保存为LibreOffice Draw格式或再次Export as PDF格式( File > Export as PDF

在此处输入图像描述

为了能够将PDF文件导入LibreOffice Draw,您必须首先安装包libreoffice-pdfimport

通过Ubuntu软件中心安装它( libreoffice-pdfimport 安装libreoffice-pdfimport )或通过带有sudo apt-get install libreoffice-pdfimport

我发现这样做的最好方法是使用http://www.pdfescape.com 。 您可以注释,添加文本和图像,在要编辑的内容周围绘制“whiteout”矩形,然后您可以快速下载并保存它。 它也适用于多页文档,这是许多其他解决方案无法很好地工作的东西。 例如,如果您在Gimp或Inkscape中打开多页文档,则一次只能打开一个页面。 PDFescape中的过程要快得多。 我编写2页文档的整个过程不到一分钟。

如果您不想记住convert的正确咒语,可以使用pdf-redact-tools ,这是一个shell脚本,可自动完成将PDF扩展为PNG图像并在编辑后将它们合并回来的过程(使用您选择的工具,例如GIMP)。 它非常便于安装 。

由于这里有很多解决方案建议通过注释(将原始内容保留在pdf中)进行编辑/黑化,我建议之后光栅化pdf以真正删除原始内容。

这是一种方法,同时保持质量和文件大小(至少在我的情况下是一堆黑/白页):

 $ convert -quality 100 -density 180 -compress zip notreallyredacted.pdf trulyredacted.pdf 

注意: convert需要ImageMagick。

注意2: convert不保留您可能填写的表单的内容。 为了让它不会丢失,您可能希望首先将文档“打印到文件”(或者在填写表单的任何应用程序中), 然后对其进行栅格化。

有多个编辑器可以直接编辑PDF文档,例如pdfedit ,或者将其转换为可能更好支持的其他矢量格式,例如pstoedit 。 但是我不建议使用它们中任何一个作为愚蠢行为的风险,比如用黑色绘制文本,同时将矢量放在适当的位置是很容易的,因此使编辑变得微不足道。

将矢量转换为位图路线是最安全的方式,最好是1位位图路径,以避免任何潜在的alpha通道问题或可能使文本可读的色差。

如果可能的话,你应该总是编辑原始文档,然后展开去除信息,而不是删除PDF上的油漆,因为即使是编辑文本周围的字距和文本间距也可以将其删除。

我添加到列表中: Krita 。 没有质量损失,因为在导入PDF时你可以定义dpi(将其设置为300,如@Sergey所说)。 编辑后点击“导出为PDF”。 最后,在成为Photoshop的长期用户之后,我发现Krita比Gimp更直观。

如果使用LibreOffice创建PDF文件,请在LibreOffice中打开文档,突出显示要编辑的文本,右键单击并选择字符,选择背景并单击黑色。 导出为PDF。