android - How to convert a pdf to an image? -
using pdfbox displays error:
import java.awt import javax`
based on following code:
imagetype = bufferedimage.type_int_argb; //need specifies java.awt string[] formats = imageio.getreaderformatnames(); //need specifies javax
finally found solution. can't use awt android, so, go pdf viewver lib on http://sourceforge.net/projects/andpdf/files/
find out apk , source pdf image.
here myclass convert pdf image:
package com.print; import java.io.bytearrayoutputstream; import java.io.file; import java.io.fileoutputstream; import java.io.ioexception; import java.io.randomaccessfile; import java.nio.channels.filechannel; import net.sf.andpdf.nio.bytebuffer; import net.sf.andpdf.refs.hardreference; import android.app.activity; import android.app.progressdialog; import android.content.context; import android.graphics.bitmap; import android.graphics.rectf; import android.os.bundle; import android.os.environment; import android.os.handler; import android.util.log; import android.widget.imageview; import android.widget.textview; import com.sun.pdfview.pdffile; import com.sun.pdfview.pdfimage; import com.sun.pdfview.pdfpage; import com.sun.pdfview.pdfpaint; import com.sun.pdfview.decrypt.pdfauthenticationfailureexception; import com.sun.pdfview.font.pdffont; public class transformer extends activity{ ///////////////////////////////////////////// private static final int startpage = 1; private static final float startzoom = 1.0f; private static final string tag = "pdfviewer"; bitmap _bitmap=null; // private graphview mgraphview; private string pdffilename; private pdffile mpdffile; private int mpage; private float mzoom; private file mtmpfile; private pdfpage mpdfpage; private thread backgroundthread; private handler uihandler; imageview myimg; textview command; context context; progressdialog _p=null; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.trans); context=transformer.this; uihandler = new handler(); initcontrils(); } private void initcontrils() { // todo auto-generated method stub boolean showimages = getintent().getbooleanextra(printdemo.extra_showimages, true); pdfimage.sshowimages = showimages; boolean antialias = getintent().getbooleanextra(printdemo.extra_antialias, true); pdfpaint.s_doantialias = antialias; boolean usefontsubstitution = getintent().getbooleanextra(printdemo.extra_usefontsubstitution, false); pdffont.susefontsubstitution= usefontsubstitution; boolean keepcaches = getintent().getbooleanextra(printdemo.extra_keepcaches, false); hardreference.skeepcaches= keepcaches; if (this.getintent() != null) { pdffilename = getintent().getstringextra(printdemo.extra_pdffilename); } mpage = startpage; mzoom = startzoom; myimg=(imageview)findviewbyid(r.id.imageview1); command=(textview)findviewbyid(r.id.textview1); _p=new progressdialog(context); _p.setmessage("converting........"); _p.setcancelable(false); _p.show(); setcontent(); } private void setcontent() { try { parsepdf(pdffilename); startrenderthread(mpage, mzoom); } catch (pdfauthenticationfailureexception e) { log.e("amit...","error...."); } } private synchronized void startrenderthread(final int page, final float zoom) { log.e("amit","renderrar"); if (backgroundthread != null) return; backgroundthread = new thread(new runnable() { @override public void run() { try { if (mpdffile != null) { showpage(page, zoom); } } catch (exception e) { log.e(tag, e.getmessage(), e); } backgroundthread = null; } }); updateimagestatus(); backgroundthread.start(); } private void updateimagestatus() { if (backgroundthread == null) { updatetexts(); return; } uihandler.postdelayed(new runnable() { @override public void run() { updateimagestatus(); } }, 1000); } /* private void setpagebitmap(bitmap bi) { if (bi != null) _bitmap = bi; else { _bitmap = bitmap.createbitmap(100, 100, config.rgb_565); canvas can = new canvas(_bitmap); can.drawcolor(color.red); paint paint = new paint(); paint.setcolor(color.blue); can.drawcircle(50, 50, 50, paint); paint.setstrokewidth(0); paint.setcolor(color.black); can.drawtext("bitmap", 10, 50, paint); } }*/ protected void updatetexts() { int maxcmds = pdfpage.getparsedcommands(); int curcmd = pdfpage.getlastrenderedcommand()+1; if(maxcmds==curcmd){ _p.dismiss(); finish(); log.e("amit","check update_finish()"); }else { setcontent(); log.e("amit","check update_again"); } } private bitmap showpage(int page, float zoom) throws exception { bitmap b=null; try { log.e("amit","go page bitmap"); mpdfpage = mpdffile.getpage(page, true); float wi = mpdfpage.getwidth(); float hei = mpdfpage.getheight(); rectf clip = null; bitmap bi = mpdfpage.getimage((int)(wi*zoom), (int)(hei*zoom), clip, true, true); b=bi; bytearrayoutputstream bytes = new bytearrayoutputstream(); b.compress(bitmap.compressformat.jpeg, 90, bytes); file f = new file(environment.getexternalstoragedirectory()+ file.separator + "firstpdf.jpg"); f.createnewfile(); fileoutputstream fo = new fileoutputstream(f); fo.write(bytes.tobytearray()); log.e("amit","go page bitmap______save"); } catch (throwable e) { log.e(tag, e.getmessage(), e); } return b; } private void parsepdf(string filename) throws pdfauthenticationfailureexception { try { file f = new file(filename); long len = f.length(); if (len == 0) { log.e("amit","no file found"); } else { log.e("amit","file '" + filename + "' has " + len + " bytes"); openfile(f); } } catch (pdfauthenticationfailureexception e) { throw e; } catch (throwable e) { e.printstacktrace(); } } /** * <p>open specific pdf file. creates documentinfo file, * , opens that.</p> * * <p><b>note:</b> mapping file locks file until pdffile * closed.</p> * * @param file file open * @throws ioexception */ public void openfile(file file) throws ioexception { // first open file random access randomaccessfile raf = new randomaccessfile(file, "r"); // extract file channel filechannel channel = raf.getchannel(); // memory-map byte-buffer bytebuffer bb = bytebuffer.new(channel.map(filechannel.mapmode.read_only, 0, channel.size())); // create pdffile data mpdffile = new pdffile(bb); log.e("amit","pages-----"+mpdffile.getnumpages()); } }
Comments
Post a Comment