4

我们实现了一个 magento 模块https://github.com/firegento/firegento-pdf/,我计划为该模块编写测试。

问题是:扩展生成pdf。

是否有任何框架或任何测试pdf的工具?如果我可以检查 pdf 中的文本,那就太好了。我不想检查正确的位置。

安迪的想法?

这看起来很有希望,但感觉过大了。http://webcheatsheet.com/php/reading_clean_text_from_pdf.php

4

3 回答 3

4

我将 PdfBox 用于类似的模块,这是一个基于 Java 的命令行实用程序,可从 PDF 中提取文本并可选择将其转换为 HTML: http: //pdfbox.apache.org/commandline/#extractText

为了在 PHPUnit 测试中使用它,我为相关的 PdfBox 方法编写了一个 PHP 接口:https ://github.com/schmengler/PdfBox

例子

use SGH\PdfBox;

//$pdf = GENERATED_PDF;
$converter = new PdfBox;
$converter->setPathToPdfBox('/usr/bin/pdfbox-app-1.7.0.jar');
$text = $converter->textFromPdfStream($pdf);

进一步阅读:使用 PHPUnit 和 PDFBox 进行单元测试生成的 PDF

于 2014-03-13T10:32:33.543 回答
2

也许您可以使用 Inkscape 将其转换为 SVG 并在某些 SVG 节点上进行断言。如果您只想检查文本或一些简单的格式,那就可以了。

$ inkscape -f invoice.pdf --export-plain-svg=thepdf.svg

但是,对于正确的位置,您需要有点模糊。

然而,PDF 源代码可以很简单,可以使用 simple 进行检查strpos()

于 2013-10-31T21:27:53.340 回答
2

您必须辞职以测试“我们向 Magento 发送了正确的命令”。测试输出 PDF 会导致脆弱性。

模拟 PDF 编写库,并测试您的代码是否正确调用了该库。这具有速度的额外好处,但需要更多的纪律。如果 PDF 输出未通过手动检查,您必须先修复该测试,以保持您的模拟诚实。

于 2013-11-02T05:27:12.367 回答