如何从命令行编辑pdf元数据?


82

我需要一个命令行工具来编辑pdf文件的元数据。

我正在使用Aiptek MyNote Premium平板电脑在此设备上书写笔记和会议记录,以后再导入它们,并使用inkscape和ghostscript用简单的脚本将它们自动转换为pdf。

是否有任何命令行工具可将一些类别添加到pdf的元数据中,所以我以后可以按类别查找pdf(例如,使用gnome-do)?

更新:我使用pdftk尝试了该解决方案,并且可以使用,但是gnome-do似乎并没有处理pdf-元数据。有没有办法让gnome做到这一点?

Answers:


100

尝试一下exiftool,它可以从存储库中的libimage-exiftool-perl包中获得。

例如,如果您有一个名为drawing.pdf的pdf文件,并且想要更新其元数据,请以这种方式使用实用程序exiftool:

exiftool -Title="This is the Title" -Author="Happy Man" -Subject="PDF Metadata" drawing.pdf

出于某种原因,输入的主题最终出现在pdf文件中的元数据的关键字字段中。在某些情况下甚至不是期望的问题,但是,这可能是有问题的,并且Nautilus元数据预览器不会显示此问题,而Adobe Acrobat查看器和PDF-XChange查看器会显示出来。

如果您不使用,程序将创建原始文件的备份。-overwrite_original开关,这意味着副本将存在于更新的pdf所在的文件夹中。从上面的例子;一个名为的文件; 将创建drawing.pdf_original。

使用覆盖开关需要您自担风险,我的建议是不要使用它并编写脚本以将文件移动到更好的位置,以防万一。


16
请注意:所有元数据编辑都是可逆的。虽然通常认为这是一个优点,但由于从未真正从文件中删除旧信息,因此这是一个潜在的安全问题。”
关于natty的坚果,2014年

5
@nuttyaboutnatty如果您要清除所有剩余和未使用的元数据条目,则可以在使用exiftool处理后立即线性化PDF文件。这在Github要点中有更详细的描述。
谷氨酰胺

9
@nuttyaboutnatty好吧,当然这不是权威的资料,但这仅仅是因为没有人花时间写一个。但是,我可以保证作者描述的方法有效。自己尝试一下:1.)制作一个包含一些标签的PDF,并使用exiftool -overwrite_original -all:all="" file.pdf;“删除”所有元数据;2.)exiftool -PDF-update:all= file.pdf用于确认仍然存在旧的元数据;3.)使用线性化文件 qpdf --linearize file.pdf;4.)再次检查,就像在2.)中所做的一样;所有元数据都应该消失;
谷氨酰胺

4
5.)通过查看PDF词典(pdfinfo -meta file.pdf
Glutanimate 2014年

1
完美运作。我通常希望将元数据从一个PDF复制到另一个PDF,在这种情况下,这exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>是我所需要的(该选项会-overwrite_original覆盖原始<destfile>)。
AstroFloyd

15

您可以使用来编辑元数据pdftk。检出update_info参数。至于数据文件,下面是一个例子:

InfoKey: Title
InfoValue: Mt-Djing: multitouch DJ table
InfoKey: Subject
InfoValue: Dissertation for Master degree
InfoKey: Keywords
InfoValue: DJing, NUI, multitouch, user-centered design
InfoKey: Author
InfoValue: Pedro Lopes

来源


1
好的,这意味着我必须将元数据导出到文本文件,对其进行编辑,然后重新导入该文本文件。有没有办法从命令行直接设置单个元数据?
bdr529 2011年

可能有,但我找不到。
Olli

pdftk似乎是元数据中的Unicode字符。
机械蜗牛

1
pdftk在新的pdf上使用时遇到了一些问题(新版本通过AESV2加密)。好像已经停产了。exiftool工作得更好。
s1lv3r 2013年

2
要使用pdftk,您需要做的是:1)pdftk book.pdf dump_data output report.txt2)编辑report.txt 3)pdftk book.pdf update_info report.txt output bookcopy.pdf
craq 17-10-24

6

使用Ghostview

创建具有以下内容的名为“ pdfmarks”的文件:

[ /Title (Document title)
  /Author (Author name)
  /Subject (Subject description)
  /Keywords (comma, separated, keywords)
  /ModDate (D:20061204092842)
  /CreationDate (D:20061204092842)
  /Creator (application name or creator note)
  /Producer (PDF producer name or note)
  /DOCINFO pdfmark

然后将此pdfmarks文件与PDF,PS或EPS输入文件合并:

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf no_marks.pdf pdfmarks

资料来源:http : //milan.kupcevic.net/ghostscript-ps-pdf/


0

要详细说明该pdftk方法,这很好,因为它可以向您显示所设置的所有内容,同时允许您更改所需的任何内容,这是一个脚本(用于您的.bashrc别名文件或其他别名文件),可以使用一个命令来执行此操作。这将创建您要编辑的文件的新版本,使用元数据文件打开您喜欢的编辑器,然后实施您的更改,并将修改后的PDF文件的文件创建/修改时间设置为与原始文件相同。要使用它,在重新分配.bashrc文件后,只需键入

editPDFmetadata myfile.pdf

这是别名:

editPDFmetadata() {
OUTPUT="${1}-new.pdf"
METADATA="tmp${1}-report.txt"
pdftk ${1} dump_data output $METADATA
$EDITOR $METADATA
pdftk ${1} update_info $METADATA  output $OUTPUT
touch -r ${1} ${OUTPUT}
}

只需将上面的定义放入.bashrc您的主文件夹中的文件中,然后打开一个新的终端即可使用。

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.