2016-10-11 1 views
0

私はアンドロイドには静かです。私はアンドロイドでビットマップをPDFに変換しようとしています。私はitextpdf 5.5.4 jarファイルを使用しています。私が使用していたコードを以下に書かれている:私はアプリのGradleの中にもitextpdfライブラリをコンパイルしたitextPdfに関する問題、以前に失敗したクラスの再初期化を拒否しましたjava.lang.Class <com.itextpdf.awt.PdfGraphics2D>

clickedPhoto = BitmapFactory.decodeByteArray(bytes,0,bytes.length); 

:上記のコードで

import com.itextpdf.text.BadElementException; 
import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Image; 
import com.itextpdf.text.pdf.PdfWriter; 

public void savePhotoPDF() 
    { 
     String currentTimestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"CameraApp"); 
     File picPDF = new File(dir.getPath()+File.separator+"IMG_"+currentTimestamp+".pdf"); 

     //File picPDF = new File(dir.getPath(),"abcd.pdf"); 

     Document document = new Document(); 
     try 
     { 


      PdfWriter.getInstance(document, new FileOutputStream(picPDF)); 
      document.open(); 

      addImage(document); 
      document.close(); 
     } 

     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    //private static void addImage(Document document) 
    private void addImage(Document document) 
    { 
     try 
     { 
      ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      clickedPhoto.compress(Bitmap.CompressFormat.PNG, 100, stream); 

      bArray = stream.toByteArray(); 

      image = Image.getInstance(bArray); ///Here i set byte array..you can do bitmap to byte array and set in image... 
     } 
     catch (BadElementException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     catch(Exception ex) 
     { 

     } 
     // image.scaleAbsolute(150f, 150f); 
     try 
     { 
      document.add(image); 
     } catch (DocumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

、clickedPhotoは以下のように定義ビットマップタイプ以外の何ものでもありません:

compile 'com.itextpdf:itextpdf:5.5.6' 

しかし、私はなぜ知らないが、画像:PDFファイルを所定の場所にし、アンドロイドのモニターに救われていないとして(ビットマップclickedPhotoは)私が見ることができます:

10-11 18:54:53.154 24531-24531/com.example.abhisheksirohi.myapplication I/art: Rejecting re-init on previously-failed class java.lang.Class<com.itextpdf.awt.PdfGraphics2D> 
10-11 18:54:53.158 24531-24531/com.example.abhisheksirohi.myapplication I/art: Rejecting re-init on previously-failed class java.lang.Class<com.itextpdf.awt.PdfPrinterGraphics2D> 

誰かがこの例外を解決するのを手伝ってくれたら本当にうれしいです。ありがとうございました!!

+0

jarファイルに問題がある可能性があります。使用しているjarをデコードし、このクラスが存在するかどうかをチェックします。このクラスを見つけるために最新のjarまたは古いjarファイルを使用しないでください。最新のjarは5.5.10ですhttps://mvnrepository.com/artifact/com.itextpdf/itextpdf/5.5.10 –

+0

私はすでにそれをチェックして、このクラスを持っています。これは、なぜ私はこの問題に遭遇しているのか理解できない理由です。 – Th3Dark0

+0

私もこの瓶を解読しています –

答えて

3

あなたはAndroidで開発しています。つまり、iTextGと呼ばれるiTextのAndroidポートが必要です。 iTextGはiText(同じコードベース)と同じですが、AWTやAndroidで利用できないその他のものを使用するものは例外です。

あなたはiTextのウェブサイト上でiTextGを見つけることができます:http://developers.itextpdf.com/itextg-android

あなたはGradleのを使用、またはGitHubの上でリリースページからjarファイルをダウンロードすることができ、次のいずれかhttps://github.com/itext/itextpdf/releases/latest(itextgジッパーを使用します)。 2016年10月現在、最新バージョンは5.5.10です。

SourceForgeからダウンロードしないでください! SourceForgeは廃止されましたが、iTextソフトウェアはそれ以上使用しません。これは、SourceForgeがもはや信頼できるものではないためです。 There have been incidents where SourceForge injected spyware into the installers of other software.これはiTextにはまだ起こっていませんが(私たちのソフトウェアの性質のために起こる可能性は低いですが)、我々はこれらの行為を黙認することはできず、私たちはすべてのユーザと顧客にSourceForgeを避けるよう伝えます。

+0

あなたが提供したリンクはさらに上がっていません。 http://developers.itextpdf.com/itextg-android gradle compile 'com.itextpdf:itextpdf:5.5.6' –

+0

を使用して同じ問題に直面しています。代わりに 'com.itextpdf:itextg:5.5.10'を使用してください。 –

+0

壊れたリンクを報告していただきありがとうございます。解決されました。 –

関連する問題