ITEXT 把表格定位在固定位置

x33g5p2x  于2021-12-28 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(632)

问题场景

用itext生成pdf时,需要把某部分内容固定在一个位置,比如盖章位置被固定在每页最下方。

环境

IDEA
jdk1.8
导入的jar包:itext-pdfa-5.5.6.jar、itext-xtra-5.5.6.jar、itext-5.5.6.jar、itext-asian.jar

code

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @Author: youxingyang
 * @Date: 2019/5/16
 * @Description:
 */
public class TableStable {

    public static void main(String[] args) {
        Document document = new Document(PageSize.A4, 25, 25, 20, 38);
        // left right top bottom
        try {
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("test.pdf"));
            document.open();

            // start
            BaseFont baseFont1 = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
            Font songti09 = new Font(baseFont1, 9f);

            String[] arrs = {"本检测仅对样品本身负责。",
                    "若对检测结果有疑问,请在收到xxxxxxx后00个工作日内与我们联系!",
                    "地址:走你。",
                    "电话:你猜啊。"};
            PdfPTable table = new PdfPTable(1);
            com.itextpdf.text.List list4 = new com.itextpdf.text.List(true, arrs.length);
            list4.setAutoindent(true);
            list4.setNumbered(true);
            for (int index = 0; index < arrs.length; index++) {
                Paragraph elements = new Paragraph();
                Chunk chunk1 = new Chunk(String.valueOf((index + 1)) + ".", songti09);
                elements.add(chunk1);
                char[] chars = arrs[index].toCharArray();
                for (int i = 0; i < chars.length; i++) {
                    String ss = chars[i] + "";
                    Chunk p0 = new Chunk(ss, songti09);
                    elements.add(p0);
                }
                Chunk chunk = new Chunk("\n");
                elements.add(chunk);
                PdfPCell cell4 = new PdfPCell();
                cell4.addElement(elements);
                table.addCell(cell4);
            }

            PdfContentByte canvas = writer.getDirectContent();
            table.setTotalWidth(500f);

            /**
             * rowStart         0   起始行
             * rowEnd           -1  表示全部行
             * xPos             表格横坐标- 从左向右开始计算
             * yPos             表格纵坐标- 从下向上开始计算
             * canvas           画布
             */
            table.writeSelectedRows(0, -1, 60, 200, canvas);

            document.close();
            writer.close();

        } catch (DocumentException | IOException e) {
            e.printStackTrace();
        }
    }

}

效果

相关文章