这是我第一次使用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()。如果一个 class有重载的构造函数,TestComplete将它们命名为 newInstance,newInstace_2,newInstance_3等等。
其他信息:
我已经在testcomplete中导入了Jar文件(pdfbox-app-1.8.13.jar)及其类。我不确定我是否需要在这里导入一些其他jar文件或其类:
答案 0 :(得分:1)
XObjects并不总是图像XObjects。而write2file在PDXObjectImage类中,因此您需要先检查对象类型。
在评论中提到的第二个问题:XObject形式不是你可以保存的东西。 XObject表单是具有资源等的内容流,类似于页面。然而,你可以做的是探索资源是否有图像。了解如何在PDFBox 1.8的ExtractImages source code中完成此操作。
然而,还有其他可以存在图像的地方(例如图案,软掩模,内嵌图像);这仅适用于PDFBox 2. *,请参阅ExtractImages source code。 (注意,类名不同)。