使用 pdfpages 和 pax 的链接存在问题

使用 pdfpages 和 pax 的链接存在问题

pax我必须将一些 HTML 文档合并到 LaTeX 工作流程中。我在使用该软件包时遇到了内部链接问题。

我用它wkhtmltopdf来从 html 生成 pdf 页面。我使用该pdfpages包将pax这些 pdf 页面嵌入到 LaTeX 源中。

当我使用 pdflatex 编译时,来自 html 源 pdf 的链接不再起作用。

链接做工作在 wkhtmltopdf 生成的 pdf 中,然后才将其包含在 LaTeX 文档中。

我使用以下命令,使用 java 1.6 提取链接信息:

java -cp /usr/local/share/java/pax.jar:/usr/local/share/java/PDFBox-0.7.3.jar \
pax.PDFAnnotExtractor filename.pdf

我也使用了pdfannotextractor.plpax 附带的脚本,结果相同:我收到许多类似这样的错误消息:

!!! Warning: Annotation on page 1 not recognized!
java.lang.NullPointerException

尽管在这些警告的最后,它说来自脚本的* Result: [ok] 信息debug如下所示:

PDFAnnotExtractor 0.1l, 2012/04/18 - Copyright (c) 2008, 2011, 2012 by Heiko Oberdiek.
* CLASSPATH: []
* is_win: [0]
* pax.jar: [/usr/local/share/java/pax.jar]
* pdfbox.jar: [/usr/local/share/java/PDFBox-0.7.3.jar]
* Which java: [/usr/local/bin/java]
* System: [java -cp /usr/local/share/java/pax.jar:/usr/local/share/java/PDFBox-0.7.3.jar pax.PDFAnnotExtractor logistic_python.pdf]

如果我使用 wkhtmltopdf 关闭内部链接,则不会出现任何错误。

pax 文件仍然被创建,但它看起来没有任何信息——其行看起来像这样:

\[{pagenum}{18}\\
\[{page}{1}{0 0 612 792}{}\\
\[{annot}{1}{Link}{50.82 579.93 75.57 591.18}{GoTo}{
  DestLabel={1},
  Border={[0 0 0]},
}\\

果然,当我将 LaTeX 文档转换为 pdflatex 时,生成的 PDF 中的链接不起作用。

我在 FreeBSD 上,使用 TeXLive 2015、PDFBox-0.7.3。我在 Windows 机器上使用最新的 wkhtmltopdf 从 html 创建 pdf。

编辑

考虑到平台之间的差异可能是原因,我尝试pax在 Windows 上使用该 Java 程序以及该wkhtmltopdf程序 (Win7)。结果相同。此外,我现在正在使用这个简单的 html 文件进行测试:

<html>
<head><title>my title</title></head>
<body>
  <h1>test</h1>
  <p><a href="#myanchor">Click</a> me.</p>
  <h2><a name="myanchor">Anchor</a></h4>
  <p>text</p>
</body>
</html>

即使是这种简单的情况,我也会收到空指针异常。

wkhtmltopdf test.htm test.pdf
java -cp path\to\pax.jar;\path\to\pdfbox.jar test.pdf

答案1

事实证明这不是pax软件包或其对应的 Java 程序的问题。创建的 PDFwkhtmltopdf具有非标准结构(无论 PDF 中的标准真正意味着什么)。

pax我编写了一个非常具体的 Python 程序来解析此类 PDF,并按照包的 Java 程序的样式写出文件pax。它对我有用,我可以在我的 LaTeX 工作流程中“包含”html 文件。

  1. 使用 wkhtmltopdf 将 html+css 转换为 pdf
  2. 使用我的python程序写出pax文件
  3. 使用pdfpagespax包用 LaTeX 创建最终的 pdf。

结果是包含的 PDF 看起来不错(wkhtmltopdf 理解 css)并且链接有效。这个pax包很棒。

如果其他人遇到此问题,请参阅我的 github repo 中的代码:

https://github.com/tiarno/paxmaker

相关内容