0

私はアンドロイドでPDFファイルを画像に変換するために検索し、itextpdf-5.3.1.jarで試します

しかし、私のアプリケーションには例外があります。libs フォルダにライブラリを追加しました。

そこに私のコードがあります

    package com.example.zakiexemple;


import java.io.File;

import java.io.FileOutputStream;


import android.app.Activity;
import android.os.Bundle;

import android.view.View;
import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;


import com.itextpdf.text.pdf.PRStream;
import com.itextpdf.text.pdf.PdfName;

import com.itextpdf.text.pdf.PdfObject;

import com.itextpdf.text.pdf.PdfReader;

import com.itextpdf.text.pdf.PdfStream;

public class MainActivity extends Activity {

    PdfReader reader;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button bt = (Button) findViewById(R.id.Button);

        //final WebView wb = (WebView) findViewById(R.id.webView1);



       bt.setOnClickListener(new  OnClickListener() {



@Override

        public void onClick(View arg0) {


            File file = new File("/sdcard/003_overview.pdf");
            try{
                reader = new PdfReader(file.getAbsolutePath());

                for (int i = 0; i < reader.getXrefSize(); i++) {
                    PdfObject pdfobj= reader.getPdfObject(i);
                    if (pdfobj == null || !pdfobj.isStream()) {
                        continue;
                    }

                    PdfStream stream = (PdfStream) pdfobj;
                    PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);

                    if (pdfsubtype != null && pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
                        byte[] img = PdfReader.getStreamBytesRaw((PRStream) stream);
                        FileOutputStream out = new FileOutputStream(new 
                        File(file.getParentFile(),String.format("%1$05d", i) + ".jpg"));
                        out.write(img); out.flush(); out.close();
                        Toast.makeText(getBaseContext(), "howa hadak", Toast.LENGTH_SHORT).show();
                    }
                }
            }
            catch (Exception e) { }


        }
    })   ; 
    } 

    }

およびログエラーの場合

03-15 08:12:35.835: E/dalvikvm(937): Could not find class 'org.bouncycastle.cert.X509CertificateHolder', referenced from method com.itextpdf.text.pdf.PdfReader.readDecryptedDocObj 03-15 08:12:35.835: W/dalvikvm(937): VFY: unable to resolve new-instance 1533 (Lorg/bouncycastle/cert/X509CertificateHolder;) in Lcom/itextpdf/text/pdf/PdfReader; 03-15 08:12:35.835: D/dalvikvm(937): VFY: replacing opcode 0x22 at 0x030e 03-15 08:12:35.946: D/dalvikvm(937): DexOpt: unable to opt direct call 0x318a at 0x318 in Lcom/itextpdf/text/pdf/PdfReader;.readDecryptedDocObj 03-15 08:12:35.946: D/dalvikvm(937): DexOpt: unable to opt direct call 0x31a5 at 0x33d in Lcom/itextpdf/text/pdf/PdfReader;.readDecryptedDocObj 03-15 08:12:36.505: D/dalvikvm(937): GC_CONCURRENT freed 743K, 14% free 5345K/6212K, paused 71ms+85ms, total 216ms

Android用の優れたitextライブラリがないと思います。

良いリンクを教えてください。

4

1 に答える 1

2

ほとんどの場合、Android で iText を直接使用することはできません。Android および App Engine 固有の変更を加えたポートを作成しました。これらの変更の 1 つは、BouncyCastle の代わりに SpongyCastle を使用することです。

ここから試用版をダウンロードできます: http://demo.itextsupport.com/newslicense/

于 2013-03-15T08:44:12.900 に答える