有没有更好的方法来编辑PDF?


24

我最近不得不打印几个PDF才能发送给某人,但是我想编辑(涂黑)一些小的文本。

快速的Google搜索并没有为此目的打开任何工具,因此我退回了imagemagick&gimp:

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

这种策略的问题在于转换过程(从PDF到PNG或任何其他格式)的质量下降。我尝试在gimp中编辑PDF,但无法立即生效。

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

或者,是否有技巧可以在gimp中编辑PDF?


1
PDF是可缩放的,PNG是光栅图形,这可能是转换过程中质量下降的原因。改为转换为可伸缩格式,例如SVG。
匿名

@匿名:好主意,但不可用。生成的SVG文件很大。30分钟后,我必须-KILL查看器,并且要消耗大约GiB的内存。
bstpierre 2011年

Answers:


15

(最初,我推荐Okular,但效果不理想)

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

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

请注意,任何不涉及光栅化的方法仅在您要在纸张上打印经过编辑的文档并且不进行电子分发的情况下才可以接受,因为仍然可以从停电情况下检索文本。

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

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

convert如果您告诉它提高分辨率,也可以通过ImageMagick的命令获得良好的结果:

convert -density 300x300 ...

1
+1并被接受!感谢您提出inkscape的建议,它做了合理的工作(不完美-丢失了两个(对我来说不重要)图形对象)-但非常合理。而且提示convert也很好:我使用的咒语是,convert -density 300x300并且没有质量损失。
bstpierre 2011年

+1提及GIMP可以很好地处理pdf文件
don.joey 2012年

8
对普通民众的警告:此处涉及保留此处建议的文本(例如,所有避免栅格化的文本)的编校方法并不安全。文本仍然可以从中断下选择,或从文件的源中读取。参见例如freerepublic.com/focus/f-news/2706743/postshackaday.com/2008/08/01/exposed-poorly-redacted-pdfs
naught101

尽管最初的问题只询问发送硬拷贝,但可以采用非光栅化方法,但投票否决,因为在以电子方式分发结果时,此答案显然不足以警告安全风险。
Jesse Glick 2014年

4
@JesseGlick:您可以编辑答案,而不是因为没有解决甚至没有在原始问题中提到的用例而“惩罚”我。这将对未来的访问者更加有益。
谢尔盖

10

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

收视率最高的答案之一是推荐Xournal,这里没有提到它,它将成为我的选择武器。它是一个允许您手写笔记的工具,但具有允许您注释PDF的其他功能。默认情况下,它将注释保存为单独的文件,但也允许您将带注释的PDF导出为新的PDF。这应该保持布局,字体等。

使用Xournal,您可以选择“注释PDF”,然后使用黑色实心标记遮盖要编辑的部分,然后使用“导出为PDF”。

互联网上有一些故事表明Xournal光栅化了导出的PDF中的文本(感谢您指出,MHC)。似乎并非如此:使用简单的批注,文本仍然可以选择和搜索,并且文件大小不会增加太多(在下面的示例中,它从205 kb增加到220 kb)。

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

Xournal界面 结果导出的PDF


Xournal很好,但是您必须知道它只能导出栅格PDF,这意味着在此过程中所有文本和矢量信息都会丢失。如果您可以解决这个问题,那么Xournal是您选择的应用程序。
Glutanimate

1
感谢您的反馈,@ MHC。Xournal之类也没有 rasterise,看到修改后的答案以获取更多信息。
Tomas

3
我只是为自己尝试过,您是绝对正确的。对困惑感到抱歉。自从我使用Xournal以来已经有一段时间了,以某种方式给我留下的印象是,导出的文档不是真正的PDF。感谢您设置的正确!
Glutanimate

1
这很好用,但是我找不到一种干净的方法来编辑信息。我不得不使用绘图工具来涂鸦,看起来很乱而且缺乏我想要的专业精神。否则,请对导出内容进行栅格化,以确保无法选择和发现内容。
flickerfly

对于真正的编辑,用图像替换文本数据,请将此答案与使用ImageMajick convert命令的@balu结合使用。
colan

6

您可以使用Okular。

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

4
也许提到如何使高光变黑。
equaeghe

1
Okular可以使用以下任何颜色(黑色)进行编辑:文本突出显示,自由手绘线和带有内部填充的多边形链接。您可以将设置另存为自己的自定义注释工具。轻松地反复使用它。然后,当您将文件打印为pdf时,您应该“强制光栅化”以确保编辑是不可逆的。Okular版本1.1.3
shadowbq

默认情况下为黑色,可与最新的Okular版本一起使用。谢谢!
TheFrack '18

5

我每天都会编辑大量PDF文件,因此我花了很多时间思考如何以最佳方式做到这一点。

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

将PDF拆分为1页的文件

您可以通过此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),模糊过滤器(例如CTRL + D),关闭文件(例如CTRL + W)并退出GIMP(例如CTRL + Q)。请记住,不要一次将GIMP加载到多个文件中,而是要在打开后立即加载GIMP,这样就可以gimp original-filename-*.pdf安全地使用上千个文件。

合并档案

您可以轻松地将文件合并在一起: pdftk originam-filename-*.pdf cat output "new-file-anon.pdf";

将它们连接在一起

这些操作非常重复且无聊,因此我将所有这些都通过1个脚本进行连接:

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_up上传到Scribd ,因此现在我可以非常高效地编辑许多PDF文件。


2

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


那似乎是一个win32工具。让我知道是否错过了linux端口的链接...
bstpierre 2011年

3
免费的便携式PDF-Xchange查看器将与wine一起使用。
Sabacon 2011年

谢谢,这对我配酒很完美。inkscape和gimp解决方案仅对单页编辑非常有用。
Gearoid Murphy

2

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

在此处输入图片说明

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

通过Ubuntu软件中心( libreoffice-pdfimport 安装libreoffice-pdfimport)或带有的终端进行安装sudo apt-get install libreoffice-pdfimport


2

您也可以尝试使用此工具:https : //launchpad.net/updf

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

在此处输入图片说明


1
uPDF非常棒,因为它可以保留原始PDF及其文本和svg内容。但是,它似乎在压缩级别方面存在一些问题。编辑的PDF的大小是原始PDF的3-4倍。不过,感谢您发布此信息。我不知道uPDF。
Glutanimate

是的,我知道它存在一些问题,有点粗糙。希望较新的版本可以解决这些问题... :)
franzlorenzon

如前所述,uPDF确实有很多错误(甚至没有撤消/重做),但就我而言,一切仍然进行得很顺利,谢谢!
balu

2

我记得有一次我和一位同事不得不找到一种方法来编辑几个pdf,我们最终使用了Gimp。我将为您详细说明...我们直接使用gimp打开pdf(在终端中)

gimp the_file.pdf

完成编辑后,我们没有保存更改,而是将其打印到pdf文件中。


无论出于何种原因,gimp拒绝允许我对该文件进行任何编辑。我必须先使用imagemagick进行转换convert,然后再编辑转换后的文件。(请参阅已接受的答案。)
bstpierre 2011年

好的,inkscape的解决方案是有效的。但我重复一遍,The Gimp可以直接编辑pdf文件。= D
maniat1k,2011年

Gimp似乎可以处理大多数PDF文件,但是我昨晚使用的文件无法正常工作。Inkscape正确处理了该文件。
bstpierre 2011年

2

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

对于此问题,从版本8开始,它具有手动编辑功能。用户可以选择一个文本对象并对其进行编辑。内容已从PDF中删除,并替换为黑色矩形。

在即将于2013年第三季度发布的第9版中,图片和形状的编辑注释和刻录也将可用。


4
根据常见问题,您应披露与所促销产品的隶属关系。
bstpierre

尽管这很可能是促销广告,而不是答案,但我不得不说PDFstudio确实是很棒的软件。它可能有点高估了价格,但它无疑是目前针对Linux的最佳PDF编辑套件。确保至少尝试使用其试用版
Glutanimate

2

由于这里的许多解决方案都建议通过注释进行编辑/涂黑(将原始内容保留在pdf中),因此我建议事后光栅化pdf以真正删除原始内容。(别是这个人。)

这是一种方法,可同时提高质量和减小文件大小(至少在我是一堆黑白页面的情况下):

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

注意:convert需要ImageMagick。

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


刚刚添加了权限修复程序。此答案应与Xournal答案结合使用。
colan

1

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


1
不会真正擦除您绘制的数据。(我仍然可以搜索它,它将在下面“突出显示”)。
Frank Nocke

1

如果您不想记住正确的咒语,convert可以使用pdf-redact-tools,这是一个Shell脚本,可自动将PDF分解为PNG图像,并在编校后将它们重新合并在一起(使用您选择的工具,例如gimp) )。方便地易于安装


0

有多种编辑器可直接编辑PDF文档,例如pdfedit,或将其转换为可能更好地支持的其他矢量格式,例如pstoedit。但是,我不建议您使用它们中的任何一个,因为这样做可能会造成愚蠢的风险,例如仅用黑色在文本上绘画而将向量保留在原处就容易了,因此使撤消变得微不足道。

将向量转到位图路线是最安全的方法,最好是1bit的位图路线,以避免alpha通道或色差可能导致文本可读的任何潜在问题。

如果可能的话,您应该始终编辑原始文档,然后平整地除去信息,而不要清除PDF上的油漆,因为即使在修订文本周围的文本字距和间距也可以将其删除。


我了解正确编辑的问题,但感谢您谨慎为以后遇到的任何人指出这些问题。就我而言,PDF本身是可抛弃的-我要寻找的只是一份硬拷贝。(一旦获得印刷本,PDF将被删除。)FWIW,pdfedit它不起作用:当我在有问题的文本上绘制一个黑色矩形时,它使页面的其余部分变小,剩下的文档包括单个黑色矩形。
bstpierre 2011年

0

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


-1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.