【发布时间】:2017-10-30 11:20:26
【问题描述】:
这是我第一次使用 PDFBox jar 文件。另外,我最近开始研究 TestComplete。简而言之,所有这些事情对我来说都是新的,过去几个小时我一直被困在一个问题上。我会尽力解释。非常感谢任何帮助!
目标:
将存在于 PDF 文件中的图像保存到文件系统中
问题:
当这条线被执行objImage.write2file_2(strSavePath);,我得到错误Object doesn't support this property or method。
I am taking some help from here
代码:
function fn_PDFImage()
{
var objPdfFile, strPdfFilePath, strSavePath, objPages, objPage, objImages, objImage, imgbuffer;
strPdfFilePath = "C:\\Users\\aabb\\Desktop\\name.pdf";
strSavePath = "C:\\Users\\aabb\\Desktop\\abc";
objPdfFile = JavaClasses.org_apache_pdfbox_pdmodel.PDDocument.load_3(strPdfFilePath);
objPages = objPdfFile.getDocumentCatalog().getAllPages();
//getting a page with index=1
objPage = objPages.get(1)
objImages = objPage.getResources().getXObjects().values().toArray();
Log.Message(objImages.length); //This is returning 14. i.e, 14 images
//getting an image with index=1
objImage = objImages.items(1);
Log.Message(typeof objImage); //returns "Object" which means it is not null
//saving the image
objImage.write2file_2(strSavePath); //<---GETTING AN ERROR HERE
}
错误:
如果您对方法名称write2file_2 感到困扰,请阅读我分享的链接中的这段摘录:
在 Java 中,类的构造函数具有该类的名称。 TestComplete 将构造函数名称更改为 newInstance()。如果一个 类具有重载的构造函数,TestComplete 将它们命名为 newInstance、newInstance_2、newInstance_3 等等。
其他信息:
我已经在 testcomplete 中导入了 Jar 文件(pdfbox-app-1.8.13.jar)及其类。我不确定是否需要在此处导入其他 jar 文件或其类:
【问题讨论】:
-
objImages是什么类型? XObject 并不总是图像 XObject。而 write2file 在 PDXObjectImage 类中。 -
@TilmanHausherr 感谢您为我指明正确的方向。似乎每当 xobject 的子类型为
PDXObjectForm时,我们都会收到该错误。我为仅包含PDPixelMap或PDJpeg的其他 PDF 文件执行了我的代码,它运行良好。它能够将图像保存在文件系统上。您能否将其发布为答案。另外,你能告诉我一种保存子类型PDXObjectForm的Xobjects的方法吗?
标签: pdf pdfbox jscript testcomplete