- iText was written by Bruno Lowagie.
- 2007年,《SOA World》(SOA世界)杂志将iText作为企业应该使用的10种开源解决方案之一。詹姆斯·高斯林称赞iText库,并在Huckster的新版本使用。纽约时报还利用iText来创建其公共领域文章的PDF版本。
- iText被嵌入在许多产品和服务中,包括Eclipse BIRT、Jasper Reports、Red Hat JBoss Seam、Windward Reports、pdftk等等。
- 2008年末,iText的专有许可证可用;2009年初,iText软件公司成立,成为iText产品的全球许可方。
HTML转PDF
加密码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package com.xiongjiaxuan;
import com.itextpdf.kernel.pdf.EncryptionConstants; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.WriterProperties;
import java.io.FileOutputStream; import java.io.IOException;
/** * Created by xiongjiaxuan on 2022/1/12 18:25 */ public class Password {
public static final String SRC = "./src/main/resources/总表.pdf"; public static final String DEST = "./target/output/password.pdf";
private static final byte[] USERPASS = "user".getBytes(); // 可读 private static final byte[] OWNERPASS = "owner".getBytes(); // 可读写
public static void main(String[] args) throws IOException { PdfReader pdfReader = new PdfReader(SRC); WriterProperties writerProperties = new WriterProperties(); writerProperties.setStandardEncryption(USERPASS, OWNERPASS, EncryptionConstants.ALLOW_PRINTING, EncryptionConstants.ENCRYPTION_AES_128); PdfWriter pdfWriter = new PdfWriter(new FileOutputStream(DEST), writerProperties); PdfDocument pdfDocument = new PdfDocument(pdfReader, pdfWriter); pdfDocument.close(); }
}
|
依赖
1 2 3 4 5 6 7 8 9 10 11
| <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</artifactId> <version>7.1.9</version> <type>pom</type> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.69</version> </dependency>
|
参考
顺时针旋转90度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package com.xiongjiaxuan;
import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.PdfWriter;
import java.io.File;
/** * Created by xiongjiaxuan on 2022/1/12 17:29 */ public class Rotate {
public static final String DEST = "./target/output/rotate90.pdf"; public static final String SRC = "./src/main/resources/总表.pdf";
public static void main(String[] args) throws Exception { File file = new File(DEST); file.getParentFile().mkdirs();
PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(DEST)); PdfPage page = pdfDoc.getPage(1); int rotate = page.getRotation(); if (rotate == 0) { page.setRotation(90); } else { // 存在角度 page.setRotation((rotate + 90) % 360); } pdfDoc.close(); }
}
|
依赖
1 2 3 4 5 6
| <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</artifactId> <version>7.1.9</version> <type>pom</type> </dependency>
|
参考
References
Bruno Lowagie - Stack Exchange