网上百度java生成pdf都是很老的代码,使用的是itext5,找遍了大江南北都找不到设置表格或单元格最大高度,或者绝对定位表格的实现,最后对table和cell的方法一个一个找,找到了满足要求的方法:
cell.setMaxLines(int numberOfLines)
由于字体确定,每行字体的高度已确定,设定最大行数也就设定了最大高度,且避免了设置的高度不是每行高度的整数倍的麻烦,itext的这个操作也挺6,只是不符合一般认知,无法轻易找到这个方法。
虽然cell最大高度解决了,但是表格的绝对定位依然没有解决,itext5只能通过百分比的方式设置表格宽度,然后居中或靠左靠右显示,非常不灵活。
经查询,itext7是目前最新版,试用了一下,非常灵活,该解决的问题都解决了。用法与5有稍许区别。
iText7示例
import com.itextpdf.io.font.PdfEncodings;
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.action.PdfAction;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.border.DashedBorder;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Link;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
* @author belle.wang
* @version V1.0.0
* @Description
* @date 2017/7/19 0019 上午 11:37
public class Main {
public static void main(String[] args) {
try {
PdfDocument pdfDoc = new PdfDocument(new PdfWriter("d:\\Helloworld.pdf"));
Document document = new Document(pdfDoc, PageSize.A4);
// 支持系统字体(支持中文)
PdfFontFactory.registerSystemDirectories();
PdfFont chinese = PdfFontFactory.createRegisteredFont("microsoft yahei", PdfEncodings.IDENTITY_H);
// 文字
Paragraph phrase = new Paragraph();
phrase.setFont(chinese);
phrase.add("雷猴啊");
Link chunk = new Link("European Business Award!",
PdfAction.createURI("http://www.baidu.com"));
phrase.add(chunk);
// 图片
// Image img = new Image(ImageDataFactory.create("src/main/resources/img/magic.png"));
// img.setFixedPosition(80, 560);//有传页数参数的方法
// 表格
Table table = new Table(new float[]{200f, 100f});
table.setWidth(300);
table.setBorder(new DashedBorder(Color.BLUE, 2));
table.setFixedPosition(300f,300f,300f);
table.addCell(phrase);
// The complete cell is a link:
Cell cell = new Cell().add("Help us win a European Business Award!");
table.addCell(cell);
document.add(table);
document.close();
} catch (Exception e) {
e.printStackTrace();
} 所以以后做功能,百度大法虽好,也要有自己的灵活性,遇到问题多角度解决,技术在更新,思路也要更新
网上百度java生成pdf都是很老的代码,使用的是itext5,找遍了大江南北都找不到设置表格或单元格最大高度,或者绝对定位表格的实现,最后对table和cell的方法一个一个找,找到了满足要求的方法:cell.setMaxLines(int numberOfLines)由于字体确定,每行字体的高度已确定,设定最大行数也就设定了最大高度,且避免了设置的高度不是每行高度的整数倍的麻烦,itext的这...
java
处理
pdf
文档,比如:在特定位置插入图片,签名,需要计算
pdf
的宽度,
高度
1.项目结构 和引用类库除了标准
java
jdk库外,还需引入下图表示的两个jar2.具体实现代码:import
java
.io.FileInputStream;
import
java
.io.IOException;
import com.
itext
pdf
.text.Document;
import com.i...
Spire.
PDF
for
Java
支持通过
Pdf
Grid 类和
Pdf
Table 类在
PDF
页面中绘制
表格
,在“
Java
创建并格式并
PDF
表格
”一文中介绍了如何绘制
表格
。本篇文章将介绍使用
Pdf
TableExtractor 类来提取
PDF
中的
表格
的方法。
安装 Spire.
PDF
for
Java
首先,您需要在
Java
程序中添加 Spire.
Pdf
.jar 文件作为依赖项。您可以从这个链接下载 JAR 文件;如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下
网上百度
java
生成
pdf
都是很老的代码,使用的是
itext
5,找遍了大江南北都找不到
设置
表格
或
单元格
最大
高度
,或者绝对定位
表格
的实现,最后对table和
cell
的方法一个一个找,找到了满足要求的方法:
cell
.
set
Max
Lines
(int numberOf
Lines
)
由于字体确定,每行字体的
高度
已确定,设定
最大
行数也就设定了
最大
高度
,且避免了
设置
的
高度
不是每行
高度
的整数倍的麻烦,i
Excel
表格
中,由于各种数据的复杂性,可能存在
单元格
中的数据字号大小、数据内容长度不一而出现,列宽过宽、过窄或者行高过大、过小的问题。常见的解决方法是调整行高、列宽。在Microsoft Excel中,在
单元格
格式
设置
中可手动
设置
自适应行高或自适应列宽,但通过代码,我们可以通过方法AutoFitColumns()或者AutoFitRows()来
设置
指定数据范围或整个工作表的自适应行高、列宽。这里
设置
自适应分以下2种情况来进行:
1. 固定数据,
设置
行高、列宽自适应数据
2. 固定行高、列宽,
设置
数据自适应行高、列宽(即缩小
单元格
数据字体大小适应
单元格
)
使用工具:Free Spire.XLS
[code="
java
"]
Paragraph paragraph=new Paragraph(content,font);
Cell
cell
=new
Cell
(paragraph);
cell
.
set
Colspan(colspan);
cell
.
set
HorizontalAlignment(align);
//主要是这个
cell
.
set
Lea...
<groupId>com.
itext
pdf
</groupId>
<artifactId>
itext
-
pdf
a</artifactId>
<version>5.5.13.2</version>
</dependency>
注意,该版本已经比较旧,如果您使用的是最新版本的
iText
,可能需要更新该依赖项的版本号。
此外,`com.
itext
pdf
.io.font` 在
iText
7 中已经被删除,不再提供支持。如果您正在使用
iText
7,您可能需要查找其他解决方案来处理字体。