OS X 10.11 上的PDFtk Server

170

我已经在OSX pre 10.11上使用PDFTK服务器一年多了,没有任何问题在命令行上运行命令。

安装了OSX 10.11 beta后,我无法再在命令行上运行任何PDFTK服务器命令。它不会抛出任何错误,我尝试执行的所有命令都会无限期地挂起。

像往常一样从PDFTK服务器网站下载的pkg进行安装:

https://www.pdflabs.com/tools/pdftk-server/

我还尝试使用Homebrew进行源码安装。 安装成功,但结果相同,命令在终端中卡住:

Homebrew tap

我已通过他们的反馈助手应用程序向苹果投诉两个月了,但没有得到回复。

关于苹果反馈助手,有人告诉我:

您可能永远不会收到回复。 苹果仅通过反馈助手回复操作系统的重大错误,以获取额外信息。 这不是获得支持的方法,甚至对于第三方应用程序也不是如此。

我还联系过PDF Labs,但没有回复。

MacPorts上,他们在OS X 10.11上构建时遇到问题,这是否意味着PDFtk和10.11之间存在软件兼容性问题?

我在网上搜索了线索,想知道问题的原因以及如何解决它,但是没有找到实质性的东西。
在OS X上,我不知道如何确定升级后是否存在权限或路径甚至Java问题。
如果能够帮助排除根本原因或提供解决方案,将不胜感激。

更新 1:

我收到了来自PDF Labs的Sid Steward的回复:

我们一直在解决这个问题,几乎和beta版本一样长时间。我们仍在努力中。pdftk使用的一个(非苹果)库似乎与OS X 10.11不兼容。目前,我正在安装另一个更新的Apple开发工具,希望它能解决问题。我会及时向您更新我们的进展。


更新 2:

PDF Labs的Sid Steward再次提到:

看起来在pdftk下有两个线程在运行,并且它们死锁了。这意味着每个线程都在等待另一个线程完成。我在这方面不是专家,但这是我的印象。这里是Mac活动监视器的截图,以说明:

enter image description here

上面的快照是在尝试在OS X 10.11上运行我们网站上当前的pdftk二进制文件时生成的。上述提到的libgcj库随pdftk一起提供,而其他库则是OS X库。 正如我所说,我刚刚安装了昨天发布在App Store上的Xcode 7.0.1,现在将尝试使用这些工具构建pdftk。

更新3:

MacPorts正在解决PDFtk的构建问题,这是该主题的更新(注意:这与PDFtk Labs无关):

这是由于在10.11中使用Apple Clang 7重新编译libunwind,产生了新的有效优化(根据Apple的说法),这触发了FSF boehm-gc中一个未知的bug。

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66848

不要期望苹果会修复这个问题,因为他们无法触及GPLv3代码以查看FSF boehm-gc问题(除非他们使用的是仍然是GPLv2的gcc43软件包)。事实证明,重新编译libunwind导致了这个问题,因为用10.10中的libunwind.dylib替换可以消除boehm-gc和gcj的故障。请注意,此问题被记录为radr://21372179,“在10.11上构建的FSF boehm-gc库未能通过其测试”,但被关闭为FSF boehm-gc错误。

更新4:

MacPorts 发现了解决构建问题的方法,这是该主题的更新

使用附加的 Portfile.diff(与#49227上建议的 gcc5 更新一起使用,该更新修复了 gcj),可以解决 pdftk 的构建问题。


更新5:

Sid Steward在PDF实验室成功构建了pdftk,他的反馈如下:

MacPorts gcc5的修复使我能够在El Capitan上合并PDFs。该修复已添加到您发布给的票证中:

MacPorts

在将其打包到安装程序之前,我将进行全面测试。这个过程可能需要几天时间。



2
Homebrew已经完成了25%的构建。我会告诉你结果如何。 - hrbrmstr
1
抱歉耽搁了。在OS X El Capitan(GM和10.11.1 beta)上进行的两次尝试都失败了(在编译的一个步骤上卡住了)。 - hrbrmstr
1
我成功地在恢复模式下重新启动了计算机,通过在终端中运行csrutil disable来禁用系统完整性,并将libunwind替换为yosemite版本。 - ruby_object
2
很棒的问题@AlexWood。据我所知,PDF labs正在解决这个问题,但没有公共的bug跟踪器。如果你有其他发现,我会相应更新主文本。 - Aaron
1
Sid来自PDF Labs,刚刚给我发送了这个更新的安装程序:https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg。他说它应该可以在El Capitan上运行 - 我正在测试它。 - Alex Wood
显示剩余12条评论
11个回答

264

感谢您的耐心等待。我已经在OS X 10.11,El Capitan上成功地测试了这个pdftk安装程序和二进制文件:

https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg

我会很快更新我们的PDF Labs网站以反映这个更新。

如果你已经从旧的安装程序中安装了pdftk,那么这应该可以直接安装在旧版本上而不会有任何问题--没有必要在安装新版本之前删除旧版pdftk。

请注意,这个安装程序/二进制文件尚未在旧版的OS X上进行过测试。

请告诉我这对您是否有效。

我要感谢Aaron开启这个主题,并引起对我们构建工具出现的问题的关注。我也要感谢MacPorts团队的专业和及时的工作!


14
有没有自制软件库可以用来获取这个? - Dan2552
1
感谢您提供这个工具,它解决了我在使用pdftk时遇到的问题。顺便说一下,关于您的安装程序有两个问题,第一个(较小)是它没有签名。第二个问题是它将链接安装到了/usr/share/man/man1中。我实际上对El Capitan的系统完整性保护允许这样做感到有些惊讶,因为我认为这是一个系统目录。放置手册页链接的正确位置(以反映可执行文件的/usr/local/bin链接)是/usr/local/share/man/man1 - Charphacy
11
需要注意的是,pdftk 的官网尚未更新,因此即使您已经从该网页安装了 2.02 版本,也需要使用本答案中的文件重新安装它。 - nip3o
11
这是一个很棒的更新!你能否更新你的网站以包含它? - Blairg23
12
感谢修复并回复此帖。我今天从您的网站上下载了适用于OSX El Capitan的PDFtk,但正如本帖中所描述的那样,它卡住了。通过下载得到的pdftk --version版本为2.02。我刚刚下载了此响应中链接的文件,也报告了2.02版本,但它没有卡住。您可能需要检查一下您在https://www.pdflabs.com/tools/pdftk-server/提供的OSX版本。 - Alexander Rolek
显示剩余20条评论

48
感谢github.com/quantiverge,现在可以通过brew来安装pdftk。此方法已在OSX Sierra上测试过。
请在终端中运行以下命令。
brew install https://raw.githubusercontent.com/turforlag/homebrew-cervezas/master/pdftk.rb

已更新并修复了来自github.com/zph的问题 - 感谢!


如果选择Homebrew路线,上述方法可能不完全适用。删除 depends_on :macos => :lion 并将 @tarball_path 替换为下载路径。脚本崩溃后,下载文件应该在 $HOME/Library/Caches/Homebrew/downloads/ 中。调整后,在High Sierra 10.13.6上应该可以正常工作。 - Robert Brisita
4
在catalina 10.15.7中无法工作:请使用'brew extract'或'brew create'和'brew tap-new'在GitHub上的tap中创建一个公式文件。无效用法:不支持从任意URL下载未经校验的pdftk公式文件! - ecjb

23

2020年更新

成功安装:

请注意,如果要在macOS High Sierra (10.13.5)Mac OS Catalina (10.15)上安装(如评论中的Ivan Kurmanov所述),我需要从以下网址下载软件包:

https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg

当然,由于它不是从“应用商店”下载的,因此无法正常安装。请使用以下说明进行操作:

  1. 在Finder中找到要打开的应用程序。

  2. 不要使用Launchpad进行此操作。Launchpad不允许您访问快捷菜单。

  3. 控制单击应用程序图标,然后从快捷菜单中选择“打开”。

  4. 点击“打开”。

  5. 该应用程序已保存为您的安全设置的例外项,您可以像注册的任何应用程序一样双击它将来打开它。

之后只需按照安装过程进行操作,基本上是“下一步”和享受 :)

无法使用:

以下brew命令对我无效

brew install https://raw.githubusercontent.com/turforlag/homebrew-cervezas/master/pdftk.rb

出现以下错误:

执行失败;/usr/bin/xar -xf /xxxx/Library/Caches/Homebrew/downloads/\#\{url_sha256\}--\* 以状态码1退出。

祝你好运!


3
上面的链接,https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg 似乎可以在Mac OS Catalina (10.15)上使用pdftk。 - Ivan Kurmanov
1
@IvanKurmanov 謝謝您的貢獻,我會將它加入答案中。 - Abhay Maurya
太好了!这真的救了我。我几乎放弃pdf_forms宝石并寻找另一个解决方案了。 - killerkiara
2020年12月21日 - 在macOS 10.15.7(Catalina)上确认此可行
  1. 下载 https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg
  2. 打开Finder,使用Ctl +单击打开快捷菜单(以绕过SIP)
  3. 启动并在提示时按照几个默认设置...
结果:which pdftk -> /usr/local/bin/pdftkpdftk --version -> (2.0.2)胜利!
- cweekly

7

我目前在OSX Sierra上无法使用Pdftk。

如果您的系统已安装docker,您可以使用我的轻量级docker镜像来替代:

$ docker run -v $(pwd):/files alpine-pdftk --help

更好的方法是,直接使用以下脚本替换即可:
#!/usr/bin/env bash
docker run --rm -v $(pwd):/files jottr/alpine-pdftk "$@"

现在您可以按预期使用pdftk:./pdftk --help

@obh的答案在Sierra上对我有用,但我也很感谢有一个docker解决方案。特别喜欢你使用了alpine :) - Henry Schreiner
如果我想在容器中运行该镜像,那么我是否需要更新Dockerfile? - Steven Aguilar

3

@Learner,我在这里修复了配方:https://github.com/zph/homebrew-cervezas/blob/master/pdftk.rb,并向你提供的存储库提交了PR。

在合并之前,您可以按以下方式安装:

brew install https://github.com/zph/homebrew-cervezas/blob/master/pdftk.rb

如果使用Homebrew Bundler,请将以下内容添加到Brewfile中:

tap 'zph/homebrew-cervezas'
brew 'pdftk'

3

请为我安装新版本,https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg

删除旧的pdftk版本; 从finder中搜索pdftk,将其移到垃圾箱,并运行pdftk_uninstall.sh。

$ pdftk -version

pdftk 2.02是一个方便处理PDF文档的工具 版权所有 (c) 2003-13 Steward and Lee, LLC - 请访问: www.pdftk.com 这是免费软件; 查看源代码以获取复制条件。没有 任何保证,甚至不保证适用于特定目的。


1
在OS X Sierra中,pdftk会出现以下错误: dyld: Symbol not found: __ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev Referenced from: /usr/local/bin/pdftk Expected in: /usr/local/bin/../lib/libstdc++.6.dylib in /usr/local/bin/pdftk - Rho Phi

1

解决方法: 我们在八月份向Sid反映了这个问题,但他仍未修复,因此我认为寻找替代方案是一个不错的主意。因此,我们已经采取了主动措施,在以下存储库中提交了一些人们可以免费使用的第一批工具:

https://github.com/flexpaper/OSX-PDF-Toolkit

它包含易于使用的CAT和BURST脚本。我们打算不断添加更多工具。欢迎贡献。
这些新工具使用本机OSX库,无需任何第三方依赖。耶!
编辑:添加了关于这是一种解决方法的信息。

1
您可以将这些工具提交到代码库中。添加水印和同时添加和删除的连接应该不难实现。 - FlowPaper Team

1
您可以使用修补端口的手动以及Macports票#48528和#49227中提供的四个补丁,在El Capitan下运行PDFTK Server。
在我的机器上,补丁后的GCC5编译需要很长时间。此外,将本地端口命名为与原始端口相同(即gcc5和pdftk)似乎是一个好主意,否则您必须调整Portfiles。
还可以使用install_name_tool将生成的pdftk二进制文件与其动态库捆绑在一起。我成功地在另外两台机器上以这种方式运行了pdftk。

1

1

或许到了2022年秋季需要进行另一次更新:

据我所知,最好维护的Homebrew Cask公式来自zph,可用于下载、提取和手动安装Sid Steward在2015年为OSX 10.11兼容性提供的pdftk 2.02二进制构建(仍未公开宣布)。brew install zph/cervezas/pdftk仍然适用于最新的操作系统和(使用Rosetta 2)ARM64。

然而,在此期间,已经创建了一个纯Java分支/端口,用于活跃地维护原始GPL源代码。这不再依赖于GCJ编译器,称为pdftk-java。虽然这需要安装jdk,但上游Homebrew再次为所有支持的操作系统和架构提供了常规公式。因此,简单的brew install pdftk-java应该安装原始pdftk的替代品。


(2023-06-14)pdftk-java是最简单和最好的选择!感谢您的建议。 - Ryo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接