当前位置: 首页 > 知识库问答 >
问题:

使用iText为生成的PDF创建单元测试

汪甫
2023-03-14

我们使用iText读取输入PDF,然后添加消息并保存输出。

PdfReader reader = new PdfReader(inputFilepath);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFilename, true));
PdfContentByte over = stamper.getOverContent(1);
over.beginText();
over.showTextAligned(align, text, x, y, angle);
...
over.endText();
stamper.close();

有没有一种方法可以读取单元测试中生成的PDF文件,然后检查所提供的文本是否存在于正确的x、y坐标上?

共有1个答案

楚权
2023-03-14

一般来说,不要测试平台(或者,在本例中,测试您正在使用的第三方库)取而代之的是,测试您是否与它进行了正确的交互。

在本例中,这意味着假设showTextAligned()将执行正确的操作,前提是传入了正确的坐标。然后我将重点测试它。

这可能意味着我需要将与PDF类的所有交互隐藏在一个接口之后,并将该接口的模拟传递给计算代码,使用它来验证为给定的示例输入传递了正确的值。

 类似资料:
  • null 有人能解释一下,当我使用PdfReader阅读模板后,我如何制作模板的副本吗?有没有办法把表格写到模板副本上,而不是一个新文档上? 为了将来的参考,我做了以下工作:

  • 我正在开发一个web应用程序,并试图使用它的文本创建一个pdf文档。 当我得到一个路径(本地和服务器上)时,它工作得很好,但我知道我需要在不实际创建它的情况下完成它。 我不想要的:PdfCopy copy=newpdfcopy(documentPDF,newfileoutputstream(mypath)) 我想要的是://PdfCopy copy=new PdfCopy(documentPDF,

  • 问题内容: 我们正在寻找替代方法,以替代当前通过小程序在Java Web应用程序中打印支票的方式。似乎共识是使用PDF进行打印,而itext提供了使用Java进行打印的功能。 但是 ,在我们的特殊情况下,支票是“仅打印”的,这一点很重要- 用户在应用程序中不应该具有保存支票的任何能力(我知道精明的用户可以做一个PrintScreen,但我们想遮盖住后盖,在应用程序中不进行任何本机功能来保存支票)。

  • 我在Android日食中使用 itext 创建 pdf 时遇到问题 如果给定了引导入口,我无法创建pdf,在我的情况下是Android 5.0.1。如果我删除了bootstrap条目,我可以创建pdf,但不能启动活动,因为android 5.0.1包含android jar。你能告诉我如何解决这个问题吗?同样,如果我把它变成一个非活动类,我希望能够在另一个活动类中创建一个非活动类的对象,这样我就可

  • 我用iText创建了一个pdf,我想打开它,但是当我这样做时,Adobe阅读器说我“打开文档时出错。此文件已打开或由其他应用程序使用“。我该如何解决? 这是我的代码(抱歉休斯顿println异常;)):

  • 我正在使用iText 5.4.4,我想为一个连续的纸票打印机生成一个PDF。我的疑问是如何设置新文档以避免将pdf分成几页: 这样做有什么可肯定的吗?