欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java pdf和jpg互轉(zhuǎn)案例

 更新時間:2020年09月29日 10:00:15   作者:xqnode  
這篇文章主要介紹了Java pdf和jpg互轉(zhuǎn)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

pdfbox: jpg轉(zhuǎn)pdf:

/**
   * 使用pdfbox將jpg轉(zhuǎn)成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, 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耗時: {}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對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ǔ)充知識:Java實現(xiàn)對png圖片文件電子簽名操作

我就廢話不多說了,大家還是直接看代碼吧~

/**
 * 根據(jù)圖片像素位置添加用戶電子簽名
 * @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)案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java編程中最基礎(chǔ)的文件和目錄操作方法詳解

    Java編程中最基礎(chǔ)的文件和目錄操作方法詳解

    這篇文章主要介紹了Java編程中最基礎(chǔ)的文件和目錄操作方法詳解,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • Spring之IOC詳解

    Spring之IOC詳解

    本文主要介紹了Spring中的IOC的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • 使用JPA自定義SQL查詢結(jié)果

    使用JPA自定義SQL查詢結(jié)果

    這篇文章主要介紹了使用JPA自定義SQL查詢結(jié)果,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 深入理解Java遺傳算法

    深入理解Java遺傳算法

    這篇文章主要為大家詳細(xì)介紹了Java遺傳算法,本文對基因的編碼采用二進(jìn)制規(guī)則,分享了對Java遺傳算法的理解,感興趣的小伙伴們可以參考一下
    2016-02-02
  • java實現(xiàn)乘地鐵方案的最優(yōu)選擇(票價,距離)

    java實現(xiàn)乘地鐵方案的最優(yōu)選擇(票價,距離)

    這篇文章主要介紹了java實現(xiàn)乘地鐵方案的最優(yōu)選擇(票價,距離),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • java構(gòu)造方法的互相調(diào)用方式

    java構(gòu)造方法的互相調(diào)用方式

    這篇文章主要介紹了java構(gòu)造方法的互相調(diào)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • JVM的GC日志及運(yùn)行參數(shù)解讀

    JVM的GC日志及運(yùn)行參數(shù)解讀

    這篇文章主要為大家介紹了JVM的GC日志及運(yùn)行參數(shù)解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • SpringBoot+MySQL+Jpa實現(xiàn)對數(shù)據(jù)庫的增刪改查和分頁詳解

    SpringBoot+MySQL+Jpa實現(xiàn)對數(shù)據(jù)庫的增刪改查和分頁詳解

    這篇文章主要介紹了SpringBoot+MySQL+Jpa實現(xiàn)對數(shù)據(jù)庫的增刪改查和分頁詳解,需要的朋友可以參考下
    2020-02-02
  • @Bean注解和@Configuration、@Component注解組合使用的區(qū)別

    @Bean注解和@Configuration、@Component注解組合使用的區(qū)別

    這篇文章主要介紹了@Bean注解和@Configuration、@Component注解組合使用的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java結(jié)構(gòu)型設(shè)計模式之裝飾模式詳解

    Java結(jié)構(gòu)型設(shè)計模式之裝飾模式詳解

    裝飾模式(Decorator Pattern)允許向一個現(xiàn)有的對象添加新的功能,同時又不改變其結(jié)構(gòu)。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有類的一個包裝。這種模式創(chuàng)建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能
    2023-03-03

最新評論