Java pdf和jpg互轉案例
阿新 • • 發佈:2020-09-30
pdfbox: jpg轉pdf:
/** * 使用pdfbox將jpg轉成pdf * @param jpgStream jpg輸入流 * @param pdfPath pdf檔案儲存路徑 * @throws IOException IOException */ public static void jpgToPdf(InputStream jpgStream,String pdfPath) throws IOException { PDDocument pdDocument = new PDDocument(); BufferedImage image = ImageIO.read(jpgStream); PDPage pdPage = new PDPage(new PDRectangle(image.getWidth(),image.getHeight())); pdDocument.addPage(pdPage); PDImageXObject pdImageXObject = LosslessFactory.createFromImage(pdDocument,image); PDPageContentStream contentStream = new PDPageContentStream(pdDocument,pdPage); contentStream.drawImage(pdImageXObject,image.getWidth(),image.getHeight()); contentStream.close(); pdDocument.save(pdfPath); pdDocument.close(); }
pdfbox: pdf轉jpg:
static void pdfbox() throws IOException { long start = System.currentTimeMillis(); //pdf路徑 URL url = new URL("file:///D:/1.pdf"); InputStream stream = URLUtil.getStream(url); // 載入解析PDF檔案 PDDocument doc = PDDocument.load(stream); PDFRenderer pdfRenderer = new PDFRenderer(doc); PDPageTree pages = doc.getPages(); int pageCount = pages.getCount(); for (int i = 0; i < pageCount; i++) { BufferedImage bim = pdfRenderer.renderImageWithDPI(i,200); ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(bim,"jpg",os); byte[] datas = os.toByteArray(); // InputStream is = new ByteArrayInputStream(datas); //jpg檔案轉出路徑 FileUtil.writeBytes(datas,new File("d:/jpg/" + i + ".jpg")); } long end = System.currentTimeMillis(); long time = (end - start) / 1000; System.out.println(StrUtil.format("pdf轉jpg耗時: {}s",time)); }
icepdf: pdf轉jpg
Document document = new Document(); document.setUrl(new URL(pdfUrl)); int pageNum = document.getNumberOfPages(); for (int i = 0; i < pageNum; i++) { // 目前僅支援1對1的pdf->jpg if (i != 0) { continue; } // 3、pdf -> jpg BufferedImage bim = (BufferedImage) document.getPageImage(i,GraphicsRenderingHints.SCREEN,Page.BOUNDARY_CROPBOX,rotation,scale); os = new ByteArrayOutputStream(); ImageIO.write(bim,os); // 4、jpg -> fdfs byte[] datas = os.toByteArray(); InputStream is = new ByteArrayInputStream(datas);
補充知識:Java實現對png圖片檔案電子簽名操作
我就廢話不多說了,大家還是直接看程式碼吧~
/** * 根據圖片畫素位置新增使用者電子簽名 * @param imagePath 要操作的圖片路徑 * @param signImagePath 電子簽名圖片路徑 * @param outImagePath 合成後輸出圖片路徑 * @param width 畫素位寬度 * @param height 畫素位高度 */ public static void syntheticPicture(String imagePath,String signImagePath,Integer width,Integer height,String outImagePath ) { try { BufferedImage big = ImageIO.read(new File(imagePath)); BufferedImage small = ImageIO.read(new File(signImagePath)); Graphics2D g = big.createGraphics(); //根據圖片畫素位置貼上帶電子簽名 g.drawImage(small,width,height,small.getWidth(),small.getHeight(),null); g.dispose(); ImageIO.write(big,outImagePath .split("\\.")[1],new File(outImagePath )); } catch (Exception e) { throw new RuntimeException(e); } }
以上這篇Java pdf和jpg互轉案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。