2017-10-30 3 views
1

이것은 PDFBox jar 파일을 처음 사용하는 경험입니다. 또한, 나는 최근에 TestComplete에서 일하기 시작했습니다. 요컨대,이 모든 것들은 나를 위해 새 것이고 나는 지난 몇 시간 동안 한 가지 문제에 매달 렸습니다. 내가 할 수있는만큼 설명하려고 노력할 것이다. 어떤 도움을 정말 고맙겠 어! 목적로컬 파일 시스템에 PDF로 이미지 저장

:

파일 시스템

문제에 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에 대해 방해하는 경우에서이 발췌를 참조하시기 바랍니다

enter image description here

내가 공유 한 링크 :

Java에서 클래스 생성자는이 클래스의 이름을가집니다. TestComplete는 생성자 이름을 newInstance()로 변경합니다. 클래스에 생성자가 오버로드 된 경우 TestComplete는 newInstance, newInstace_2, newInstance_3 등과 같은 이름을 지정합니다.

추가 정보 :

내가 JAR 파일 (pdfbox - 응용 프로그램-1.8.13.jar)와 testcomplete에서 자신의 클래스를 가져 왔습니다. 내가 여기에 다른 jar 파일 또는 클래스를 가져올 필요가 있는지 확실하지 않다 :

enter image description here

+1

어떤 유형이'objImages'입니까? XObject는 항상 이미지 XObject가 아닙니다. write2file은 PDXObjectImage 클래스에 있습니다. –

+0

@TilmanHausherr 올바른 방향으로 나를 가리켜 주셔서 감사합니다. xobject가 서브 타입'PDXObjectForm' 일 때마다, 우리는 그 에러를 얻는다. 'PDPixelMap' 또는'PDJpeg' 만 포함 된 다른 PDF 파일에 대한 코드를 실행했는데 제대로 작동했습니다.파일 시스템에 이미지를 저장할 수있었습니다. 답변으로 게시 해 주시기 바랍니다. 또한 하위 유형'PDXObjectForm'의 Xobjects를 저장하는 방법을 알려주시겠습니까? – Gurman

답변

1

XObjects는 항상 이미지 XObjects 없습니다. write2file은 PDXObjectImage 클래스에 있으므로 먼저 객체 유형을 확인해야합니다.

다시 두 번째 질문에 대한 의견 : XObject 형식은 저장할 수있는 것이 아닙니다. XObject 양식은 페이지와 비슷한 리소스 등이 포함 된 콘텐츠 스트림입니다. 그러나 당신이 할 수있는 것은 자원이 이미지를 가지고 있는지 여부를 탐구하는 것입니다. 이것이 PDFBox 1.8의 ExtractImages source code에서 어떻게 수행되는지보십시오.

그러나 이미지 (예 : 패턴, 부드러운 마스크, 인라인 이미지)가있을 수있는 다른 장소가 있습니다. PDFBox 2 *에서만 사용할 수 있습니다. ExtractImages source code을 참조하십시오. 클래스 이름은 다릅니다.

+0

이 정보를 제공해 주셔서 감사합니다. 정말 도움이되었습니다. :) – Gurman

관련 문제