1. 程式人生 > >pdf轉化為圖片顯示知多少

pdf轉化為圖片顯示知多少

場景描述

最近做一個專案前端是H5頁面巢狀在app中的,其中有個功能是要展示一個pdf,遇到了一個問題就是帶印章的pdf在直接檢視的情況下ios中印章顯示不出來,後來經過查閱資料發現是由於印章是加密過的,而用ios內建的webviewer檢視的話沒有對應的解密的外掛,所以導致印章顯示不出來。但是對於專案來說印章顯示不出來整個pdf顯示的意義就沒有了,後來經過組內討論就想著轉化為圖片去展示。經過查閱資料、對比了一下ICEPDF和pdfbox兩種轉化的開源專案,所用到的jar包就是下面資源中的內容。
http://download.csdn.net/detail/gao36951/9601359

解決方案

經過查閱資料發現有如下java相關的開源專案,網上摘錄

1.PDFRenderer: 確實效率最高,但是缺少字型支援對大多數中文pdf處理不了(很奇怪為什麼專案組還沒做預設字型支援)

2.pdfbox:字型基本都可以轉換,但容易記憶體溢位(我搞了幾十M檔案就不行了)

3.jpedal:效率不錯。不過我這裡好幾個中文pdf檔案就是生成縮圖不對,我還向專案組提bug了

4.icepdf它其實用了jpedal的字型支援庫,確能支援我手上的中文pdf,而且效率不錯(測試沒遇到記憶體溢位)
接下來一個一個說
1.PDFRenderer:看了官網如下
https://java.net/projects/pdf-renderer/downloads


發現最新的jar包是 PDFRenderer-0.9.1.jar,而且是almost 5 years ago,5年多了,貌似最近都沒有人維護 了,而且中文支援不好,所以就果斷放棄了。
2.pdfbox:我們專案中就是用的這一種,由於與上面的網上摘錄的應用場景不同,我們要處理的pdf是保單帶印章的,所以檔案大小並不大,但是必須要有印章,so這個可以滿足我們的需求。jar包詳見場景描述中的
http://download.csdn.net/detail/gao36951/9601359
具體程式碼摘要

public String pdf2Image(String urlStr, String policyNo, String
datePath) throws PDFException, PDFSecurityException, IOException { //URL url = new URL(urlStr); Map<String, String> params = new HashMap<String, String>(); params.put("url", urlStr); InputStream in = null; PDDocument doc = null; try { in = HttpClientHelper.loadFileFromURL(GetPdfBytesURL, params);//本專案是使用的流的方式,具體專案中如何使用視情況而定,支援File等其他方式 doc = PDDocument.load(in); PDFRenderer renderer = new PDFRenderer(doc); int pageCount = doc.getNumberOfPages(); for (int i = 0; i < pageCount; i++) { BufferedImage image = renderer.renderImageWithDPI(i, PdfExchangeDpi); // Windows native DPI,PdfExchangeDpi是float型別的,越大檔案越大,清晰度越高,可以根據需求來調整,我們使用的是80 File fileDirectory = new File(NfsImagePath + datePath); if (!fileDirectory.exists()) { fileDirectory.mkdirs(); } File file = new File(NfsImagePath + datePath + policyNo + Constants.PNG_TYPE); ImageIO.write(image, "PNG", file); } } finally { if (in != null) { in.close(); } if (doc != null) { doc.close(); } } return datePath + policyNo + Constants.PNG_TYPE; }

3.jpedal:網上沒有找到合適的jar包和文件,沒有研究
4.icepdf實驗程式碼,發現在linux 有問題,所以也沒有用

public static String pdf2Image(String urlStr, String policyNo) throws PDFException, PDFSecurityException, IOException{
        //URL url = new URL(urlStr);
        Document document = new Document();
        Map<String, String > params= new HashMap<String, String>();
        params.put("url", urlStr);
        InputStream in = HttpClientHelper.loadFileFromURL(GetPdfBytesURL, params);
        document.setInputStream(in, null);
        float scale = 2.5f;//縮放比例
        float rotation = 0f;//旋轉角度

        File file = new File("/usr/local/tomcat7/webapps/hczface/app_img/"+policyNo+".jpg");
        if(file.exists()){
            logger.info(policyNo+".png已經存在,不再生成!");
            return null;
        }
        for (int i = 0; i < document.getNumberOfPages(); i++) {
            BufferedImage image = (BufferedImage)document.getPageImage(i, GraphicsRenderingHints.SCREEN, org.icepdf.core.pobjects.Page.BOUNDARY_CROPBOX, rotation, scale);
            RenderedImage rendImage = image;
            try {
                ImageIO.write(rendImage, "jpg", file); 
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
            image.flush();
        }
        document.dispose();
        return policyNo+".jpg";
    }

相關推薦

pdf轉化圖片顯示多少

場景描述 最近做一個專案前端是H5頁面巢狀在app中的,其中有個功能是要展示一個pdf,遇到了一個問題就是帶印章的pdf在直接檢視的情況下ios中印章顯示不出來,後來經過查閱資料發現是由於印章是加密過的,而用ios內建的webviewer檢視的話沒有對應的解密

如何利用Python將PDF轉化圖片

python的功能真是強大,可以做詞雲圖、可以優雅地八卦、可以做遊戲外掛、還可以將PDF轉化成圖片,這個功能你還不知道吧,趕緊隨小編我一起來看看吧:之前收集了很多優秀的 PDF文件,但是需要看的時候不是很方便,需要去找到這個檔案,如果是在手機上的話往往還需要下載 PDF相關的

PHP pdf轉化圖片(PNG)

/** * 將pdf檔案轉化為多張png圖片 * @param string $pdf pdf所在路徑 (/www/pdf/abc.pdf pdf所在的絕對路徑) * @param string $path 新生成圖片所在路徑 (/www/pngs/) * * @

pdf按照頁數轉化圖片

需要用到的jar包 jacob-1.14.3.jar、 pdfrenderer-0.9.1-patched.jar package core.util; import java.awt.Image; import java.awt.Recta

windows下用Python把pdf檔案轉化圖片(png格式)

最近工作中需要把pdf檔案轉化為圖片,想用python來實現,於是在網上找啊找啊找啊找,找了半天,倒是找到一些程式碼。 1、第一個找到的程式碼,我試了一下好像是反了,只能實現把圖片轉為pdf,而不能

pdfrenderer將pdf檔案轉化圖片

String path = fileName + ".pdf"; title = URLEncoder.encode(title, "UTF-8"); FtpUtils.getInstance("def").getFile(path, bos); os = response

將H5頁面轉化圖片

head true pos ref -o 如果 data pad tor 使用html2canvas插件,詳情:http://html2canvas.hertzen.com/ 實例代碼: html <div id="capture" style="padding:

書法字帖 PDF轉化可打印PDF

div rap graph 灰度圖 one 多余 for command pre 書法類的PDF,因為底色是黑色的,打印起來特別費墨,所以需要轉化成白底黑字的文件, 才好打印。 1)用 pdfbox 的 ExtractImages 命令,抽出所有的圖片 https:/

將頁面內容儲存圖片顯示,長按儲存至本地(html2canvas)

載入的html2canvas為官網上的新版本。   style樣式: *{ margin: 0;padding: 0; font-family: "微軟雅黑"; } html,body{ width: 100%; } #capture,#imgDiv{ width: 100%; } .imgD

將頁面內容保存圖片顯示,長按保存至本地(html2canvas)

javascrip round function margin mil width 圖片 add ace 加載的html2canvas為官網上的新版本。 style樣式: *{ margin: 0;padding: 0; font-family: "微軟雅黑";

將Mnist手寫數字庫轉化圖片形式 和標籤形式

Mnist 資料檔案有兩種,一種是圖片檔案,一種是標籤檔案,那麼如何把他們解析出來呢? (1)解析圖片檔案   可以看出在train-images.idx3-ubyte中,第一個數為32位的整數(魔數,圖片型別的數),第二個數為32位的整數(圖片的個數),第三和第四個也是32為的整數(分別代表圖片的行數和

在Java應用程式中將PDF轉換圖片和將圖片轉換PDF

這篇文章將介紹如何在Java應用程式中將PDF檔案轉換為圖片以及將圖片轉換為PDF檔案。 使用元件: Free Spire.PDF for JAVA Free Spire.PDF for JAVA是一款完全免費的PDF Java元件,開發人員可以使用它在Java應用程式中進行建立PD

圖片轉化成二進位制,儲存檔案。再轉化圖片

package com.company; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.ImageIO; import sun.misc.BASE64Decoder; import sun

[那些年踩過的坑]pdf轉換圖片的教程(pdf的Base64轉換圖片的base64和自己不通過第三方來實現pdf圖片的Dome)

  因為工作需要,要把PDF的64字串轉換為圖片的base64儲存到資料庫,但是看了看國內外,一方面是做這個的比較少,還有就是做這個真的很煩.   PDF轉圖片呢,大概的實現思路方式一般有兩種,一種就是重繪,類似於畫畫,把看到的畫到新的畫布上;第二種呢,就會識別裡面的內容複製到新的畫布上,我也不知道我比喻準

java將pdf轉換圖片

import java.awt.Image;   import java.awt.Rectangle;   import java.awt.image.BufferedImage;   import java.io.File;   import java.io.FileNotFoundException;

利用aspose-words直接將Word轉化圖片

imp 實現 ace stack put input () lse 方式 之前遇到一個需求,需要在word文檔中加入一些文字,並轉化為圖片。之前也試過幾種方案,但是發現效果還不是很理想,且中間需要經過一次轉化為pdf的過程,最近找到了最理想的方式,即利用aspose-wor

PDF轉換圖片

在做將列印word的操作時,我個人認為將word轉換為PDF格式(在博主另一篇部落格中有說道),將PDF轉換為圖片,將圖片傳給前臺去做列印,這樣很方便,前臺不用去管後臺的資料,只需要找到圖片,做簡單的列印操作。 本篇部落格是博主在網上收集的前輩寫的方法,很好用,特分享出來,如有侵權請聯絡博主

html2canvas將網頁轉化圖片

html2canvas將網頁轉化為圖片,可以利用如下程式碼 'click a.actionPDF'(e, instance) { e.preventDefault(); const _this = $(e.currentTarget); const

html轉化圖片,並且和另一張圖片合成新的圖片

最近專案裡有一個需求:把kedit裡的html內容和事先設定好的背景顏色轉為圖片,嵌入到一張事先準備好的圖片裡先看下效果                                                 圖1                    

將HTML中的特殊字元轉化顯示的字元

很多時候叢網頁中抽取的內容中都含有很多特殊的轉義字元,網頁中顯示的要麼是實體名稱,要麼是實體編碼,如 顯示 說明 實體名稱 實體編號 半方大的空白 &ensp; &#8194; 全方大的空白 &emsp; &#8195; 不斷行的空白格