Java pdf和jpg互轉(zhuǎn)案例
pdfbox: jpg轉(zhuǎn)pdf:
/** * 使用pdfbox將jpg轉(zhuǎn)成pdf * @param jpgStream jpg輸入流 * @param pdfPath pdf文件存儲(chǔ)路徑 * @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, 0, 0, image.getWidth(), image.getHeight()); contentStream.close(); pdDocument.save(pdfPath); pdDocument.close(); }
pdfbox: pdf轉(zhuǎn)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文件轉(zhuǎn)出路徑 FileUtil.writeBytes(datas, new File("d:/jpg/" + i + ".jpg")); } long end = System.currentTimeMillis(); long time = (end - start) / 1000; System.out.println(StrUtil.format("pdf轉(zhuǎn)jpg耗時(shí): {}s", time)); }
icepdf: pdf轉(zhuǎn)jpg
Document document = new Document(); document.setUrl(new URL(pdfUrl)); int pageNum = document.getNumberOfPages(); for (int i = 0; i < pageNum; i++) { // 目前僅支持1對(duì)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, "jpg", os); // 4、jpg -> fdfs byte[] datas = os.toByteArray(); InputStream is = new ByteArrayInputStream(datas);
補(bǔ)充知識(shí):Java實(shí)現(xiàn)對(duì)png圖片文件電子簽名操作
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
/** * 根據(jù)圖片像素位置添加用戶(hù)電子簽名 * @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(); //根據(jù)圖片像素位置粘貼帶電子簽名 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互轉(zhuǎn)案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Java 使用openoffice進(jìn)行word轉(zhuǎn)換為pdf的方法步驟
- Java使用iTextPDF生成PDF文件的實(shí)現(xiàn)方法
- Java 實(shí)現(xiàn)word模板轉(zhuǎn)為pdf
- java 后端生成pdf模板合并單元格表格的案例
- java 畫(huà)pdf用itext調(diào)整表格寬度、自定義各個(gè)列寬的方法
- java 用itext設(shè)置pdf紙張大小操作
- Java生成pdf文件或jpg圖片的案例講解
- 用Java驗(yàn)證pdf文件的電子章簽名
- 基于Java SWFTools實(shí)現(xiàn)把pdf轉(zhuǎn)成swf
- Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例
- Java實(shí)現(xiàn)圖片轉(zhuǎn)換PDF文件的示例代碼
- Java 基于Spire.Cloud.SDK for Java在PDF中繪制形狀
- Java 在PDF中添加騎縫章示例解析
- Java 在PDF中繪制形狀的兩種方法
- 教你怎么用Java通過(guò)關(guān)鍵字修改pdf
相關(guān)文章
java實(shí)現(xiàn)乘地鐵方案的最優(yōu)選擇(票價(jià),距離)
這篇文章主要介紹了java實(shí)現(xiàn)乘地鐵方案的最優(yōu)選擇(票價(jià),距離),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07SpringBoot+MySQL+Jpa實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的增刪改查和分頁(yè)詳解
這篇文章主要介紹了SpringBoot+MySQL+Jpa實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的增刪改查和分頁(yè)詳解,需要的朋友可以參考下2020-02-02@Bean注解和@Configuration、@Component注解組合使用的區(qū)別
這篇文章主要介紹了@Bean注解和@Configuration、@Component注解組合使用的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java結(jié)構(gòu)型設(shè)計(jì)模式之裝飾模式詳解
裝飾模式(Decorator Pattern)允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類(lèi)型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有類(lèi)的一個(gè)包裝。這種模式創(chuàng)建了一個(gè)裝飾類(lèi),用來(lái)包裝原有的類(lèi),并在保持類(lèi)方法簽名完整性的前提下,提供了額外的功能2023-03-03