public static void pdfToImageToPdf(){ File file = new File("e:/in.pdf"); Document docOut = new Document(); docOut.setMargins(0, 0, 0, 0); try { FileOutputStream os = new FileOutputStream("e:/out.pdf"); PdfWriter.getInstance(docOut, os); docOut.open(); PDDocument doc = PDDocument.load(file); PDFRenderer renderer = new PDFRenderer(doc); int pageCount = doc.getNumberOfPages(); for(int i=0; i<pageCount; i++){ long t1 = System.currentTimeMillis(); ByteArrayOutputStream bb = new ByteArrayOutputStream(); BufferedImage image = renderer.renderImage(i, 1.25f); //第二个参数越大生成图片分辨率越高。 long t2 = System.currentTimeMillis(); ImageIO.write(image, "jpg",bb ); long t3 = System.currentTimeMillis(); Image jpg = Image.getInstance(bb.toByteArray()); long t4 = System.currentTimeMillis(); jpg.scalePercent(80.0f); //此处百分比与前面的分辨率参数相乘结果为1,则可保证等比输出。 jpg.setAlignment(Image.ALIGN_CENTER); docOut.add(jpg); long t5 = System.currentTimeMillis(); System.out.println((t2 - t1) + "***" + (t3 - t2) + "***" + (t4 - t3) + "***" + (t5 - t4)); } docOut.close(); }catch (FileNotFoundException e){ e.printStackTrace(); }catch (DocumentException e){ e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); } } |
|