在Java應用程式中將PDF轉換為圖片和將圖片轉換為PDF
阿新 • • 發佈:2018-11-22
這篇文章將介紹如何在Java應用程式中將PDF檔案轉換為圖片以及將圖片轉換為PDF檔案。
使用元件:
Free Spire.PDF for JAVA
Free Spire.PDF for JAVA是一款完全免費的PDF Java元件,開發人員可以使用它在Java應用程式中進行建立PDF、讀取PDF和儲存PDF等操作,並且無需安裝Adobe Acrobat。
在使用以下程式碼前,你需要下載Free Spire.PDF for JAVA包並解壓縮,然後從lib資料夾下,匯入Spire.Pdf.jar包和Spire.Common.jar包到你的Java應用程式中。
PDF轉圖片
import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import com.spire.pdf.PdfDocument; public class PDFToImage { public static void main(String[] args) throws IOException { //載入PDF檔案 PdfDocument doc = new PdfDocument(); doc.loadFromFile("ToImage.pdf"); //儲存PDF的每一頁到圖片 BufferedImage image; for (int i = 0; i < doc.getPages().getCount(); i++) { image = doc.saveAsImage(i); File file = new File( String.format("ToImage-img-%d.png", i)); ImageIO.write(image, "PNG", file); } doc.close(); } }
PDF檔案:
生成圖片:
圖片轉PDF
import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.graphics.PdfImage; public class ImageToPDF { public static void main(String[] args) { //建立PDF文件 PdfDocument doc = new PdfDocument(); //新增一個頁面 PdfPageBase page = doc.getPages().add(); //載入圖片 PdfImage image = PdfImage.fromFile("ImageToPDF.png"); //繪製圖片到PDF並設定其在PDF檔案中的位置和大小 float widthFitRate = getImgWidth(new File("ImageToPDF.png"))/ page.getActualBounds(true).width; float heightFitRate = getImgHeight(new File("ImageToPDF.png"))/ page.getActualBounds(true).height; float fitRate = Math.max(widthFitRate, heightFitRate); float fitWidth = getImgWidth(new File("ImageToPDF.png")) / fitRate*0.8f; float fitHeight = getImgHeight(new File("ImageToPDF.png"))/ fitRate*0.8f; page.getCanvas().drawImage(image, 50, 30, fitWidth, fitHeight); //儲存並關閉 doc.saveToFile("ImageToPDF.pdf"); doc.close(); } /** * @param ImageFile * @return image width */ public static int getImgWidth(File ImageFile) { InputStream is = null; BufferedImage src = null; int ret = -1; try { is = new FileInputStream(ImageFile); src = javax.imageio.ImageIO.read(is); ret = src.getWidth(null); is.close(); } catch (Exception e) { e.printStackTrace(); } return ret; } /** * @param ImageFile * @return image height */ public static int getImgHeight(File ImageFile) { InputStream is = null; BufferedImage src = null; int ret = -1; try { is = new FileInputStream(ImageFile); src = javax.imageio.ImageIO.read(is); ret = src.getHeight(null); is.close(); } catch (Exception e) { e.printStackTrace(); } return ret; } }
圖片:
生成PDF檔案: