I need to create an online viewer which converts PDF files into browsable images, like http://view.samurajdata.se/. I would like to do this in Grails. Does Grails have any plugins for this?
- It might be just me, but I really have no idea what you are actually asking here...peSHIr– peSHIr2010-09-10 08:31:03 +00:00Commented Sep 10, 2010 at 8:31
- in my project user have the requirement where he can upload the pdf file and its get converted into the image file in grailsChirag Dasani– Chirag Dasani2010-09-10 10:07:42 +00:00Commented Sep 10, 2010 at 10:07
- See stackoverflow.com/questions/550129/… It is a java soultion!Abdennour TOUMI– Abdennour TOUMI2013-12-25 10:56:57 +00:00Commented Dec 25, 2013 at 10:56
Add a comment |
1 Answer
that's is possible by download PDFRenderer.jar fie and writing code is below
downloadedfile = request.getFile('sourceFile'); println "download file->"+downloadedfile File destFile=new File('web-app/source-pdf/'+downloadedfile+'.pdf'); if(destFile.exists()){ destFile.delete(); } File file = null; try{ file = new File('web-app/source-pdf/'+downloadedfile+'.pdf'); downloadedfile.transferTo(file) println "file->"+file }catch(Exception e){ System.err.println("File Already Use") //out.close(); } File imageFile=new File("web-app/pdf-images"); if(imageFile.isDirectory()) { String[] list=imageFile.list() for(int i=0;i<list.length;i++){ File img=new File("web-app/pdf-images/"+i+".png") img.delete() } } //response.setContentType("image/png"); // response.setHeader("Cache-control", "no-cache"); RandomAccessFile raf; BufferedImage[] img; // response.setContentType("image/png"); // response.setHeader("Cache-control", "no-cache"); file=new File('web-app/source-pdf/'+downloadedfile+'.pdf'); try { raf = new RandomAccessFile(file, "rws"); FileChannel channel = raf.getChannel(); ByteBuffer buf = channel.map(FileChannel.MapMode.READ_WRITE, 0, channel.size()); PDFFile pdffile = new PDFFile(buf); // draw the first page to an image int num=pdffile.getNumPages(); img=new BufferedImage[num] for(int i=0;i<num;i++) { PDFPage page = pdffile.getPage(i); //get the width and height for the doc at the default zoom int width=(int)page.getBBox().getWidth(); int height=(int)page.getBBox().getHeight(); Rectangle rect = new Rectangle(0,0,width,height); int rotation=page.getRotation(); Rectangle rect1=rect; if(rotation==90 || rotation==270) rect1=new Rectangle(0,0,(int)rect.height,(int)rect.width); //generate the image img[i] = (BufferedImage)page.getImage( width,height , //width & height rect1, // clip rect null, // null for the ImageObserver true, // fill background with white true // block until drawing is done ); ImageIO.write(img[i], "png",new File("web-app/pdf-images/"+i+".png")); } // out.close(); } catch (FileNotFoundException e1) { System.err.println(e1.getLocalizedMessage()); } catch (IOException e) { System.err.println(e.getLocalizedMessage()); } file = null; render(view:'save',model:[images:img])