<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>barcodes</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>font-asian</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>forms</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>hyph</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>io</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>pdfa</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>sign</artifactId>
<version>7.0.0</version>
</dependency>
<distributionManagement>
<repository>
<id>itext</id>
<name>iText Repository - releases</name>
<url>https://repo.itextsupport.com/releases</url>
</repository>
</distributionManagement>
2.itext7默认是不支持中文,pdf中的中文字体将不进行显示,需要进行字体的设置,大家使用的使用会发现很多元素都有 setFont()方法,只要元素中涉及到了中文内容都需要如以下例子设置字体,字体能生效是由于上文中添加了font-asian的jar包,
虽然可以支持中文,但是缺点也很明显,字体样式单一,英文内容不美观,如果有更好的方法请及时回复我。
Paragraph cn = new Paragraph("中文内容");
PdfFont font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", false);
cn.setFont(font);
3.实现生成的pdf图片悬浮于内容上,主要有两种方式,类似于css中图片的相对位置和绝对位置来实现图片的悬浮。
图片使用相对位置移动,缺点虽然图片悬浮在pdf内容之上,但是图片原来占用的空间依旧存在,会变成空白行
Image img = new Image(ImageDataFactory.create("src/main/resources/img/magic.png"));
img.setRelativePosition(80, -120, 100, 0);
图片使用绝对位置,图片的位置固定不能根据内容动态移动
Image img = new Image(ImageDataFactory.create("src/main/resources/img/magic.png"));
img.setFixedPosition(80, 560);
4.由于pdf文档最终要传递至远端服务器,开始版本是先用itext7生成一份pdf到本地,再拿到本地的pdf路径读取内容并上传至服务器,为了加快上传效率不进行生成本地pdf直接拿到itext7的写入流传输至服务器生成pdf。
解决方案如下:
ByteArrayOutputStream bao = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(bao);
ByteArrayInputStream swapStream = new ByteArrayInputStream(bao.toByteArray());
ossClient.uploadWithInputStream(OssConfig.BUCKET_AD, path, swapStream);
itext7结构还是很庞大,我只了解了工作相关的一些知识,以上是我根据实际情况想出的解决方案,各位有更好的方法或方案记得一定要@我。
在
使用
iText 在 Java 中创建 PDF 的示例之前,有几点关于 iText 库。
iText (https://itextpdf.com) 带有商业和
开源
(AGPL) 双重许可证。如果您
使用
的是 AGPL 许可证(
免费
),您需要在相同的 AGPL 许可证下
免费
共享您的整个应用程序。
这篇文章中显示的示例
使用
了重写的 iText 7 库,并且 API 与 iText 5 不同。
用于
使用
iText 生成 ..
条形码barcode.dll :如果要创建条形码,请
使用
此代码
hyph.dll :如果您希望将文本连字符,请
使用
此文件
font-asian.dll :
使用
此功能需要CJK功能(
中文
/日文/韩文)
sign.dll :如果需要数字签名
支持
,请
使用
此文件
通过iText,你可以对PDF文件进行组装、扩展、提取、切割等等多方面交互性的操作。它能够是符合大多数ISO PDF标准以及数字签名标准(PAdES)与 安全发票(ZUGFeRD)。
iText能够帮你自动完成一些繁琐事项,比如每日例行记录、发票处理、任务归档等等,让你更关注当下最重要的实际业务工作。
通过iText的
开源
API,你可以在整个过程中毫无阻碍地进行文档创作,在任何细节上,都可以构建属于你自己的风格。
无论何时,无论何种机器,无论何种数据来源,通过iText,你构建的文档都可以保证相当长时间的易读性与易用性。
### 回答2:
iText 7是一款非常流行的Java库,用于在PDF文档中创建和编辑文本、表格、
图片
、图形等内容。它是iText软件系列的最新版本,相比于早期版本,iText 7具有更多的功能和更好的性能。
Maven是一种Java项目管理工具,用于自动化构建、部署和依赖管理。通过Maven,我们可以轻松地将iText 7引入我们的项目中,并自动解决其所需的依赖关系。
要在项目中
使用
iText 7,首先需要在Maven项目的pom.xml文件中添加iText 7的依赖项。可以
使用
以下代码将iText 7添加到Maven项目中:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>
itext7
-core</artifactId>
<version>7.1.15</version>
</dependency>
这将添加iText 7核心库到项目中。
一旦添加了iText 7的依赖项,我们就可以开始
使用
它的功能了。我们可以
使用
iText 7来创建PDF文档、添加文本、插入
图片
、绘制图形等。此外,iText 7还
支持
许多高级功能,如表格处理、水印、数字签名等。
总结
来说,iText 7是一款功能强大的Java库,用于创建和编辑PDF文档。通过Maven,我们可以轻松地将iText 7引入我们的项目中,并利用其丰富的功能来满足我们的需求。
### 回答3:
iText7
是一款用于生成和操作PDF文件的Java库,它提供了丰富的API和功能,可以用于创建、编辑、合并、拆分、签署和验证PDF文件。
在
使用
iText7
进行开发时,可以通过Maven管理项目的依赖。Maven是一个构建和管理Java项目的工具,它可以自动解决项目的依赖关系,简化了项目的构建过程。
要在项目中
使用
iText7
,首先需要在pom.xml文件中添加
iText7
的依赖项。可以通过以下方式在Maven的pom.xml文件中添加
iText7
的依赖:
```xml
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>
itext7
-core</artifactId>
<version>7.1.15</version>
</dependency>
在添加了依赖之后,Maven会自动从中央仓库下载
iText7
的jar包,并将其添加到项目的classpath中。
接下来,就可以在Java代码中
使用
iText7
的API进行PDF文件的生成和操作了。通过创建PdfDocument对象,可以打开已有的PDF文件或者创建一个新的PDF文件。可以
使用
PdfWriter对象来向PDF文件添加内容,比如文本、图像和表格等。还可以
使用
PdfReader对象来读取和解析PDF文件的内容。
除了核心库,
iText7
还提供了一些扩展库,用于
支持
更高级的功能,比如数字签名和PDF表单的操作等。可以根据项目的需求,选择添加对应的扩展库。
总之,
iText7
是一款强大的Java库,通过Maven来管理依赖,可以简化项目的构建过程,并方便地
使用
iText7
的功能来生成和操作PDF文件。