当前位置:   article > 正文

【itext7】itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格-支持Android

itext7

这篇文章,主要介绍itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格。 

目录

一、itext7操作PDF内容

1.1、添加段落文本内容

1.2、添加列表内容

1.3、添加图片

1.4、添加表格

(1)列宽采用点单位(pt点单位)

(2)采用百分比单位(%百分比)


一、itext7操作PDF内容

1.1、添加段落文本内容

itext中将文本抽象为一个Text对象,这个Text属于叶子元素,不能直接添加到Document里面,必须先放入布局元素(layout元素)里面,然后再将布局元素加入到Document中。itext中采用Paragraph类表示段落,这是对一个段落文字的描述,例如:将Text对象先添加到Paragraph段落对象中,然后将Paragraph段落加入到Document里面。

  1. package itext.demo.basic;
  2. import com.itextpdf.kernel.pdf.PdfDocument;
  3. import com.itextpdf.kernel.pdf.PdfWriter;
  4. import com.itextpdf.layout.Document;
  5. import com.itextpdf.layout.element.AreaBreak;
  6. import com.itextpdf.layout.element.Paragraph;
  7. import com.itextpdf.layout.element.Text;
  8. import java.io.FileNotFoundException;
  9. /**
  10. * @version 1.0.0
  11. * @Date: 2023/7/19 15:40
  12. * @Author ZhuYouBin
  13. * @Description: 文本内容操作
  14. */
  15. public class TextOperation {
  16. public static void main(String[] args) throws FileNotFoundException {
  17. // 创建PDF文档
  18. PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\itext-content.pdf"));
  19. // 创建文档对象
  20. Document document = new Document(pdfDocument);
  21. // 创建文本对象
  22. Text text = new Text("hello world");
  23. // 创建段落
  24. Paragraph paragraph = new Paragraph();
  25. paragraph.add(text);
  26. // 将段落添加到文档上面
  27. document.add(paragraph);
  28. // 关闭文档
  29. document.close();
  30. pdfDocument.close();
  31. }
  32. }

运行结果如下所示:

1.2、添加列表内容

itext中使用List类表示列表对象,列表可以有序列表、无序列表,列表中的每一项使用ListItem类表示,一个List列表可以包含多个ListItem列表项,List列表可以设置缩进、列表项的符号等。

  1. package itext.demo.basic.text;
  2. import com.itextpdf.kernel.pdf.PdfDocument;
  3. import com.itextpdf.kernel.pdf.PdfWriter;
  4. import com.itextpdf.layout.Document;
  5. import com.itextpdf.layout.element.List;
  6. import com.itextpdf.layout.element.ListItem;
  7. import java.io.FileNotFoundException;
  8. /**
  9. * @version 1.0.0
  10. * @Date: 2023/7/19 15:40
  11. * @Author ZhuYouBin
  12. * @Description: 添加列表内容
  13. */
  14. public class TextOperation {
  15. public static void main(String[] args) throws FileNotFoundException {
  16. // 创建PDF文档
  17. PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\itext-content.pdf"));
  18. // 创建文档对象
  19. Document document = new Document(pdfDocument);
  20. // 创建List列表对象
  21. List list = new List();
  22. list.setSymbolIndent(12); // 设置列表项和符号之间的缩进距离
  23. list.setListSymbol("@"); // 设置列表项的符号
  24. // 创建列表项
  25. for (int i = 0; i < 5; i++) {
  26. list.add(new ListItem("this is 00" + i + " item。"));
  27. }
  28. // 将List列表添加到文档上面
  29. document.add(list);
  30. // 关闭文档
  31. document.close();
  32. pdfDocument.close();
  33. }
  34. }

运行结果如下所示:

1.3、添加图片

itext中将图片抽象成一个Image对象,图片可以从URL、File等来源进行创建,Image类中的构造方法是protected修饰的,所以不能直接使用new关键字进行创建对象,可以使用itext中提供的ImageDataFactory工具类,这个类中提供了一个create()方法可以根据不同的来源创建图片对象。

  1. package itext.demo.basic.text;
  2. import com.itextpdf.io.image.ImageDataFactory;
  3. import com.itextpdf.kernel.pdf.PdfDocument;
  4. import com.itextpdf.kernel.pdf.PdfWriter;
  5. import com.itextpdf.layout.Document;
  6. import com.itextpdf.layout.element.Image;
  7. import java.net.URL;
  8. /**
  9. * @version 1.0.0
  10. * @Date: 2023/7/19 15:40
  11. * @Author ZhuYouBin
  12. * @Description: 添加图片
  13. */
  14. public class TextOperation {
  15. public static void main(String[] args) throws Exception {
  16. // 创建PDF文档
  17. PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\itext-content.pdf"));
  18. // 创建文档对象
  19. Document document = new Document(pdfDocument);
  20. // 创建图片对象
  21. URL url = new URL("https://www.toopic.cn/public/uploads/small/1658043292312165804329268.png");
  22. Image image = new Image(ImageDataFactory.create(url));
  23. image.setAutoScale(true); // 设置宽高字段缩放
  24. URL url2 = new URL("https://www.toopic.cn/public/uploads/small/1658043887555165804388773.jpg");
  25. Image image2 = new Image(ImageDataFactory.create(url2));
  26. image2.setAutoScale(true); // 设置宽高字段缩放
  27. // 将图片添加到文档上面
  28. document.add(image);
  29. document.add(image2);
  30. // 关闭文档
  31. document.close();
  32. pdfDocument.close();
  33. }
  34. }

运行结果如下所示(添加两张图片的效果):

1.4、添加表格

itext中将表格抽象成了Table类,表格就是一张二维表,由行和列组成,其中每一行每一列都是一个单元格,单元格使用Cell类表示。创建Table对象的时候,对应的构造方法必须指定表格中每一个单元格的宽度,列宽度的单位可以是pt、也可以设置百分比,推荐使用百分比单位。

(1)列宽采用点单位(pt点单位)
  1. package itext.demo.basic.text;
  2. import com.itextpdf.kernel.pdf.PdfDocument;
  3. import com.itextpdf.kernel.pdf.PdfWriter;
  4. import com.itextpdf.layout.Document;
  5. import com.itextpdf.layout.element.Cell;
  6. import com.itextpdf.layout.element.Div;
  7. import com.itextpdf.layout.element.Paragraph;
  8. import com.itextpdf.layout.element.Table;
  9. import com.itextpdf.layout.property.UnitValue;
  10. /**
  11. * @version 1.0.0
  12. * @Date: 2023/7/19 15:40
  13. * @Author ZhuYouBin
  14. * @Description: 添加表格【pt单位】
  15. */
  16. public class TableDemo {
  17. public static void main(String[] args) throws Exception {
  18. // 创建PDF文档
  19. PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\itext-table.pdf"));
  20. // 创建文档对象
  21. Document document = new Document(pdfDocument);
  22. // 创建表格
  23. float[] columnWidths = new float[] {
  24. 30, 50, 60, 20
  25. };
  26. Table table = new Table(columnWidths);
  27. // 设置表格宽度100%
  28. table.setWidth(UnitValue.createPercentValue(100));
  29. // 设置表格标题
  30. table.setCaption(new Div().add(new Paragraph("this is a caption of table")));
  31. // 添加表头单元格,上面设置了四列,超过四列会自动换行
  32. table.addHeaderCell(new Cell().add(new Paragraph("header-cell")));
  33. table.addHeaderCell(new Cell().add(new Paragraph("header-cell")));
  34. table.addHeaderCell(new Cell().add(new Paragraph("header-cell")));
  35. table.addHeaderCell(new Cell().add(new Paragraph("header-cell")));
  36. // 添加普通单元格
  37. table.addCell(new Cell().add(new Paragraph("cell")));
  38. table.addCell(new Cell().add(new Paragraph("cell")));
  39. table.addCell(new Cell().add(new Paragraph("cell")));
  40. table.addCell(new Cell().add(new Paragraph("cell")));
  41. // 添加表尾单元格
  42. table.addFooterCell(new Cell().add(new Paragraph("footer-cell")));
  43. table.addFooterCell(new Cell().add(new Paragraph("footer-cell")));
  44. table.addFooterCell(new Cell().add(new Paragraph("footer-cell")));
  45. table.addFooterCell(new Cell().add(new Paragraph("footer-cell")));
  46. // 添加表格到PDF文档
  47. document.add(table);
  48. // 关闭文档
  49. document.close();
  50. pdfDocument.close();
  51. }
  52. }

运行结果如下所示:

(2)采用百分比单位(%百分比)
  1. package itext.demo.basic.text;
  2. import com.itextpdf.kernel.pdf.PdfDocument;
  3. import com.itextpdf.kernel.pdf.PdfWriter;
  4. import com.itextpdf.layout.Document;
  5. import com.itextpdf.layout.element.Cell;
  6. import com.itextpdf.layout.element.Div;
  7. import com.itextpdf.layout.element.Paragraph;
  8. import com.itextpdf.layout.element.Table;
  9. import com.itextpdf.layout.property.UnitValue;
  10. /**
  11. * @version 1.0.0
  12. * @Date: 2023/7/19 15:40
  13. * @Author ZhuYouBin
  14. * @Description: 添加表格【百分比单位】
  15. */
  16. public class TableDemo {
  17. public static void main(String[] args) throws Exception {
  18. // 创建PDF文档
  19. PdfDocument pdfDocument = new PdfDocument(new PdfWriter("D:\\itext-table.pdf"));
  20. // 创建文档对象
  21. Document document = new Document(pdfDocument);
  22. // 创建百分比单位的列宽度
  23. UnitValue[] columnWidths = new UnitValue[] {
  24. UnitValue.createPercentValue(25),
  25. UnitValue.createPercentValue(25),
  26. UnitValue.createPercentValue(25),
  27. UnitValue.createPercentValue(25)
  28. };
  29. Table table = new Table(columnWidths);
  30. // 设置表格宽度100%
  31. table.setWidth(UnitValue.createPercentValue(100));
  32. // 设置表格标题
  33. table.setCaption(new Div().add(new Paragraph("this is a caption of table")));
  34. // 添加表头单元格,上面设置了四列,超过四列会自动换行
  35. table.addHeaderCell(new Cell().add(new Paragraph("header-cell")));
  36. table.addHeaderCell(new Cell().add(new Paragraph("header-cell")));
  37. table.addHeaderCell(new Cell().add(new Paragraph("header-cell")));
  38. table.addHeaderCell(new Cell().add(new Paragraph("header-cell")));
  39. // 添加普通单元格
  40. table.addCell(new Cell().add(new Paragraph("cell")));
  41. table.addCell(new Cell().add(new Paragraph("cell")));
  42. table.addCell(new Cell().add(new Paragraph("cell")));
  43. table.addCell(new Cell().add(new Paragraph("cell")));
  44. // 添加表尾单元格
  45. table.addFooterCell(new Cell().add(new Paragraph("footer-cell")));
  46. table.addFooterCell(new Cell().add(new Paragraph("footer-cell")));
  47. table.addFooterCell(new Cell().add(new Paragraph("footer-cell")));
  48. table.addFooterCell(new Cell().add(new Paragraph("footer-cell")));
  49. // 添加表格到PDF文档
  50. document.add(table);
  51. // 关闭文档
  52. document.close();
  53. pdfDocument.close();
  54. }
  55. }

运行结果如下所示:

到此,itext操作PDF内容之添加段落、列表、图片、表格就介绍完啦。

综上,这篇文章结束了,主要介绍itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/319236
推荐阅读
相关标签
  

闽ICP备14008679号