匯出pdf檔案時加圖片水印
阿新 • • 發佈:2019-01-06
前言:本文探討的是利用pageEvent事件在生成PDF檔案的過程中把圖片水印加好,這樣匯出的是加好水印的pdf檔案。
- 1:加入依賴
<!--匯出pdf相關--> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.10</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
- 2:準備好水印圖片,將圖片拷貝到專案中
- 3:程式碼示例,利用pageEvent事件加水印
定義事件類
package itextpdf; import com.itextpdf.text.Document; import com.itextpdf.text.Image; import com.itextpdf.text.pdf.PdfPageEventHelper; import com.itextpdf.text.pdf.PdfWriter; /** * @author * @description 繼承PdfPageEventHelper類來定義事件 * @date 2018/6/19 11:08$ */ public class WaterMark1 extends PdfPageEventHelper { @Override public void onEndPage(PdfWriter writer, Document document) { //獲取水印圖片的路徑 String markImagePath = this.getClass().getClassLoader().getResource("font").getFile() + "/logo.png"; float pageHeight = document.getPageSize().getHeight(); float pageWidth = document.getPageSize().getWidth(); try { Image img = Image.getInstance(markImagePath);//生成水印圖片 final float IMAGE_SIZE = 0.6f;//圖片縮放比例,大小0 float plainWidth = img.getPlainWidth() * IMAGE_SIZE; float plainHeight = img.getPlainHeight() * IMAGE_SIZE; img.scaleAbsolute(plainWidth, plainHeight);//設定圖片大小 img.setAlignment(Image.UNDERLYING); // 在字下面 //設定水印圖片的座標。 img.setAbsolutePosition(pageWidth - plainWidth - 35, pageHeight - plainHeight - 5); //image.setRotation(-30);//設定旋轉 弧度 //image.setRotationDegrees(-45);//設定旋轉 角度 //image.scalePercent(50);//設定依照比例縮放,與設定大小作用相同 //將水印圖片加入到文件中,可使用迴圈新增多個,新增多個時注意每個圖片的座標等屬性 document.add(img); } catch (Exception e) { e.printStackTrace(); } } }
新增事件,注意要加在document.open()之前
//建立document Document document = new Document(PageSize.A4); //設定要匯出的檔名 File file = new File("C:\\Users\\Administrator\\Desktop\\test.pdf"); OutputStream outputStream = new FileOutputStream(file); PdfWriter writer = PdfWriter.getInstance(document, outputStream); //開始寫 writer.setPageEvent(new WaterMark1());//水印內容 document.open(); //此處省略寫入文字過程... document.close()
- 4,效果展示