将PDF格式的图像保存到本地文件系统

将PDF格式的图像保存到本地文件系统,pdf,pdfbox,jscript,testcomplete,Pdf,Pdfbox,Jscript,Testcomplete,这是我第一次使用PDFBox jar文件。另外,我最近开始了TestComplete的工作。简言之,所有这些对我来说都是新鲜事,过去几个小时我一直在一个问题上纠缠不清。我会尽力解释的。非常感谢您的帮助 目标: 将PDF文件中的图像保存到文件系统中 问题: 执行此行时objImage.write2file_2(strSavePath),我发现错误对象不支持此属性或方法 代码: function fn_PDFImage() { var objPdfFile, strPdfFilePath,

这是我第一次使用PDFBox jar文件。另外,我最近开始了TestComplete的工作。简言之,所有这些对我来说都是新鲜事,过去几个小时我一直在一个问题上纠缠不清。我会尽力解释的。非常感谢您的帮助

目标

将PDF文件中的图像保存到文件系统中

问题

执行此行时
objImage.write2file_2(strSavePath),我发现错误
对象不支持此属性或方法

代码

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       
}
函数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();
//获取索引为1的页面
objPage=objPages.get(1)
objImages=objPage.getResources().getXObjects().values().toArray();
Log.Message(objImages.length);//返回14个图像
//获取索引为1的图像
对象图像=对象图像。项目(1);
Message(typeof objImage);//返回“Object”,这意味着它不是null
//保存图像

write2file_2(strSavePath);//XObject并不总是图像XObject。write2file在类PDXObjectImage中,因此需要首先检查对象类型

回复中提出的第二个问题:表单XObject不是您可以保存的。XObject表单是包含资源等的内容流,类似于页面。但是,您可以做的是探索这些资源是否有图像。请参阅PDFBox 1.8版本中的操作


但是,也有其他地方可以有图像(例如图案、软遮罩、内联图像);这仅在PDFBox 2中可用。*,请参见此处。(注意,类名不同).

什么类型的对象是
对象
?xobject并不总是图像xobject。Write2文件在类PDXObjectImage中。@Tilmahauser感谢您为我指出了正确的方向。似乎每当xobject是子类型
PDXObjectForm
时,我们都会遇到这个错误。我为其他一些只包含的PDF文件执行了代码de>PDPixelMap
PDJpeg
工作正常。它能够将图像保存在文件系统上。您能否将此作为答案发布。另外,您能否告诉我一种保存子类型
PDXObjectForm
的XObject的方法?谢谢您提供的信息。它确实很有帮助。:)