itextPdf~将PDF页面大小转为A4格式
生活随笔
收集整理的這篇文章主要介紹了
itextPdf~将PDF页面大小转为A4格式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文章向大家介紹將PDF頁面大小轉為A4格式---itextPdf實現,主要包括將PDF頁面大小轉為A4格式---itextPdf實現使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。
將PDF頁面大小轉為A4格式(itextPdf實現)
1. 引入相關jar包
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.2</version></dependency>2. 實現代碼
package com.fan.study.common.util;import com.itextpdf.text.Document; import com.itextpdf.text.PageSize; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfImportedPage; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfWriter;import java.awt.geom.AffineTransform; import java.io.FileOutputStream;public class PdfConvertA4Utils {/*** @Param source 源文件* @Param target 轉換后文件* @Description 將PDF轉為A4格式* @Date: 2021/4/25**/private static void convert(String source, String target) {try {PdfReader pdfReader = new PdfReader(source);Document doc = new Document();PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(target));doc.open();PdfContentByte cb = writer.getDirectContent();for(int i = 1; i <= pdfReader.getNumberOfPages(); i++){PdfImportedPage page = writer.getImportedPage(pdfReader, i);float width = page.getWidth();float height = page.getHeight();if(height > width) {//橫向doc.setPageSize(PageSize.A4);doc.newPage();//計算比例float widthScale = getWidthScale(width);float heightScale = getHeightScale(height);//addTemplate方法中有6個float類型的參數,是通過二維圖像仿射變換得到的//cb.addTemplate(page, new AffineTransform(widthScale, 0, 0, heightScale,0,0));//二維圖像仿射變換:https://www.cnblogs.com/v2m_/archive/2013/05/09/3070187.htmlcb.addTemplate(page, widthScale, 0, 0, heightScale,0,0);} else {//縱向doc.setPageSize(new com.itextpdf.text.Rectangle(PageSize.A4.getHeight(), PageSize.A4.getWidth()));doc.newPage();float widthScale = getWidthScale(height);float heightScale = getHeightScale(width);cb.addTemplate(page, widthScale, 0, 0, heightScale,0,0);}}doc.close();} catch (Exception ex) {ex.printStackTrace();}}private static float getWidthScale(float width) {float scale = PageSize.A4.getWidth() / width;return scale;}private static float getHeightScale(float height) {float scale = PageSize.A4.getHeight() / height;return scale;} }總結
以上是生活随笔為你收集整理的itextPdf~将PDF页面大小转为A4格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux qt程序编译出错,QTcre
- 下一篇: 利用ServiceLocator模式改进