Java 使用itextPdf7操作pdf,写入照片这一篇就够了
生活随笔
收集整理的這篇文章主要介紹了
Java 使用itextPdf7操作pdf,写入照片这一篇就够了
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java 使用itextPdf7操作pdf,寫入照片這一篇就夠了
- 1. 效果圖
- 1.1 M*N列圖片(無邊界&有邊界)
- 1.2 圖片重疊
- 1.3 文字背景圖片
- 1.4 圖片與文字相鄰 & 圖片文字Rowspan樣式
- 1.5 一個單元格多圖片 & 多圖片文本內容
- 1.6 單元格中文本圖片位置設置
- 2. 源代碼
- 2.0 maven pom配置
- 2.1 M*N圖片(有邊界 & 無邊界)
- 2.2 圖片重疊
- 2.3 文字背景圖片
- 2.4 圖片與文字相鄰 & 圖片文字Rowspan樣式
- 2.5 一個單元格多圖片 & 多圖片文本內容
- 2.6 單元格中文本圖片位置設置
- 參考
itextPdf已更新到7,本文將走入最新的itextpdf 7教程
這篇博客將介紹如何使用itextPdf7在pdf中插入圖片,包括插入N*M的圖片、圖片重疊、一張接一張圖像、相鄰圖像、圖片與文字相鄰、一個單元格多圖像、單元格多圖片與文字并存、單元格多塊內容、單元格中復雜文本圖片位置設置。
- 圖片的各種使用場景:https://kb.itextsupport.com/home/it7kb/examples/adding-images-to-a-table
- github源碼:https://github.com/seminar2012/i7js-examples/blob/develop/src/main/java/com/itextpdf/samples/sandbox/tables/ImagesNextToEachOther.java
1. 效果圖
1.1 M*N列圖片(無邊界&有邊界)
生成5行4列圖片的PDF,有邊界框效果圖如下:
生成5行4列圖片的PDF,無邊界框效果圖如下:
1.2 圖片重疊
圖片重疊
1.3 文字背景圖片
1.4 圖片與文字相鄰 & 圖片文字Rowspan樣式
圖片與文字同一行,RowSpan樣式:
1.5 一個單元格多圖片 & 多圖片文本內容
一個單元格多圖片
一個單元格中多塊內容(圖片&空格或者文字多次疊加)
單元格中多塊內容
1.6 單元格中文本圖片位置設置
單元格中文本圖片位置設置
單元格中文本圖片位置復雜設置:
2. 源代碼
2.0 maven pom配置
<dependencies><!--創建itextpdf7--><dependency><groupId>com.itextpdf</groupId><artifactId>pdftest</artifactId><version>7.2.0-SNAPSHOT</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>kernel</artifactId><version>7.2.0-SNAPSHOT</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>layout</artifactId><version>7.2.0-SNAPSHOT</version></dependency></dependencies><repositories><repository><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots><id>itext-snapshot</id><name>iText Repository - snapshots</name><url>https://repo.itextsupport.com/snapshot</url></repository><repository><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots><id>itext-releases</id><name>iText Repository - releases</name><url>https://repo.itextsupport.com/releases</url></repository><repository><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots><id>apache.snapshots</id><name>Apache Development Snapshot Repository</name><url>https://repository.apache.org/content/repositories/snapshots/</url></repository></repositories>
2.1 M*N圖片(有邊界 & 無邊界)
package com.ocr.itepdf;import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.borders.Border;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.properties.HorizontalAlignment;
import com.itextpdf.layout.properties.UnitValue;
import com.itextpdf.layout.properties.VerticalAlignment;import java.io.File;
import java.net.MalformedURLException;public class ImagesNextToEachOther {public static final String DEST = "E:\\mat\\itepdf\\image_next_to_each_other2.pdf";public static final String IMG1 = "D:\\20210905\\images\\ml.jpg";public static final String IMG2 = "D:\\20210905\\images\\circle.png";public static void main(String[] args) throws Exception {File file = new File(DEST);file.getParentFile().mkdirs();new ImagesNextToEachOther().manipulatePdf(DEST);}protected void manipulatePdf(String dest) throws Exception {PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));Document doc = new Document(pdfDoc);int col = 4; // 圖片列int row = 5; // 圖片行Table table = new Table(UnitValue.createPercentArray(col)).useAllAvailableWidth();for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (j % 2 == 0) {table.addCell(createImageCell(IMG1));} else {table.addCell(createImageCell(IMG2));}}}doc.add(table);doc.close();}private static Cell createImageCell(String path) throws MalformedURLException {Image img = new Image(ImageDataFactory.create(path));// 設置圖片自動縮放,img.setAutoScale(true)// 設置圖片寬度 img.setWidth// 設置cell寬度、高度 setWidth// 設置cell無邊界框 setBorder// 設置水平、垂直對其方式 setHorizontalAlignment、setVerticalAlignmentreturn new Cell().add(img.setAutoScale(true).setWidth(UnitValue.createPercentValue(100)))
// .setWidth(50)
// .setHeight(50).setBorder(Border.NO_BORDER).setHorizontalAlignment(HorizontalAlignment.CENTER).setVerticalAlignment(VerticalAlignment.MIDDLE);}
}
2.2 圖片重疊
[圖片重疊](https://github.com/seminar2012/i7js-examples/blob/develop/src/main/java/com/itextpdf/samples/sandbox/tables/AddOverlappingImage.java)
2.3 文字背景圖片
[文字背景圖片](https://github.com/seminar2012/i7js-examples/blob/develop/src/main/java/com/itextpdf/samples/sandbox/tables/ImageBackground.java)
2.4 圖片與文字相鄰 & 圖片文字Rowspan樣式
圖片與文字相鄰 & 圖片文字Rowspan樣式
2.5 一個單元格多圖片 & 多圖片文本內容
表格多圖片與文字并存
一個單元格多圖片
2.6 單元格中文本圖片位置設置
單元格中文本圖片位置設置
參考
- https://kb.itextsupport.com/home/it7kb/ebooks/itext-7-jump-start-tutorial-for-java/
- https://github.com/seminar2012/i7js-examples/blob/develop/src/main/java/com/itextpdf/samples/sandbox/tables/ImagesNextToEachOther.java
- https://kb.itextsupport.com/home/it7kb/examples/adding-images-to-a-table
- https://itextpdf.com/en
- iText5實現Java生成PDF文件完整版
總結
以上是生活随笔為你收集整理的Java 使用itextPdf7操作pdf,写入照片这一篇就够了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Python,OpenCV进行Tes
- 下一篇: OpenCV图像梯度(Sobel和Sch