2017-10-30 17 views
1

これは初めてのPDFBox jarファイルの使用経験です。また、私は最近TestCompleteの作業を開始しました。一言で言えば、これらのことはすべて私のために新しいものであり、私は最後の数時間にわたって1つの問題に立ち往生しています。私はできるだけ説明しようとします。助けを本当に感謝しますか?ローカルファイルシステム上の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  
} 

ERROR:あなたは、メソッド名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'ですか? XObjectsは常にイメージXObjectsではありません。また、write2fileはPDXObjectImageクラスにあります。 –

+0

@TilmanHausherr私を正しい方向に向けてくれてありがとう。 xobjectがサブタイプ 'PDXObjectForm'であるときはいつでも、私たちはそのエラーを受け取るようです。私は 'PDPixelMap'または' PDJpeg'だけを含む他のPDFファイルのために自分のコードを実行し、うまくいきました。ファイルシステムにイメージを保存することができました。これを回答として投稿してください。また、サブタイプ 'PDXObjectForm'のXobjectsを保存する方法を教えてください。 – Gurman

答えて

1

XObjectsは常に画像XObjectsではありません。また、write2fileはPDXObjectImageクラスにありますので、最初にオブジェクト型をチェックする必要があります。

Re:2番目の質問がコメントで尋ねられました。フォームXObjectは保存できないものです。 XObjectフォームは、ページと同様のリソースなどを含むコンテンツストリームです。しかし、あなたができることは、リソースにイメージがあるかどうかを調べることです。これがPDFBox 1.8のExtractImages source codeでどのように行われているかをご覧ください。

ただし、イメージ(パターン、ソフトマスク、インラインイメージなど)が存在する可能性がある場所は他にあります。これはPDFBox 2 *でのみ利用可能です。ExtractImages source codeを参照してください。 (クラス名は異なることに注意してください)。

+0

この情報をお寄せいただきありがとうございます。本当に役に立ちました。 :) – Gurman

関連する問題