首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iText 7:如何将“第x页,共y页”放在右下角

iText 7是一款用于生成和处理PDF文档的开源Java库。它提供了丰富的功能和灵活的API,可以用于创建、编辑和操作PDF文件。

要将“第x页,共y页”放在右下角,可以按照以下步骤进行操作:

  1. 创建一个PdfDocument对象,用于表示PDF文档。
  2. 创建一个PdfWriter对象,将PdfDocument与输出文件关联起来。
  3. 打开PdfDocument对象。
  4. 创建一个PdfPage对象,表示PDF文档中的一页。
  5. 获取PdfDocument的页面边距。
  6. 创建一个PdfCanvas对象,用于在PdfPage上绘制内容。
  7. 使用PdfCanvas的setFontAndSize方法设置字体和字号。
  8. 使用PdfCanvas的showTextAligned方法将“第x页,共y页”文本绘制在右下角。
  9. 关闭PdfDocument对象,完成PDF文档的生成。

以下是一个示例代码,演示如何使用iText 7将“第x页,共y页”放在右下角:

代码语言:txt
复制
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

public class PdfPageNumberingExample {
    public static void main(String[] args) {
        String outputFile = "output.pdf";
        int totalPages = 10; // 总页数
        int currentPage = 1; // 当前页数

        try {
            PdfWriter writer = new PdfWriter(outputFile);
            PdfDocument pdfDoc = new PdfDocument(writer);
            Document document = new Document(pdfDoc);

            while (currentPage <= totalPages) {
                PdfPage page = pdfDoc.addNewPage();
                Rectangle pageSize = page.getPageSize();
                PdfCanvas canvas = new PdfCanvas(page);

                // 设置字体和字号
                canvas.setFontAndSize(PdfFontFactory.createFont(), 12);

                // 绘制文本
                canvas.showTextAligned(new Paragraph("第" + currentPage + "页,共" + totalPages + "页").setFont(PdfFontFactory.createFont()), 
                    pageSize.getRight() - 50, pageSize.getBottom() + 20, 0);

                currentPage++;
            }

            document.close();
            System.out.println("PDF生成成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们使用了iText 7的PdfDocument、PdfPage、PdfWriter和PdfCanvas等类来创建和操作PDF文档。通过设置字体和字号,以及使用showTextAligned方法将文本绘制在指定位置,我们可以将“第x页,共y页”放在右下角。

请注意,示例代码中的字体和字号需要根据实际情况进行调整。此外,示例中的代码只是演示了如何在每一页上添加页码,实际应用中可能需要根据具体需求进行适当的调整和扩展。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为示例,实际应用中可能需要根据具体需求选择适合的腾讯云产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Word设置“XY”页码且不计目录、前言等的页数

本文介绍在Word文档中,不考虑封面、目录、前言等的页数,为正文添加“XX”样式页码的方法。   在Word中,我们可以双击页眉或页脚部分,选择“页码”选项并添加页码。   ...如果我们想添加当前页面的页码与文档的总页码,可以通过选择“X/Y”形式的页码来实现。   得到的结果如下图所示。   不过,这样有两个问题。...首先,目前页码没有成为我们期望的“XX”样式;其次,上图中的34是当前Word文档的总页数,既包括了正文部分的字数,也包括了封面、扉页、目录、前言等部分的页数;而这个“XX”样式的页码样式我们希望他仅出现在正文部分...随后,可以看到“X”中的X已经显示出来了。   随后,将鼠标放在”两个字的中间,同样调出“域”窗口,并选择“NumPages”选项,同时配置数字格式。   ...随后,可以看到“X”中的X同样已经显示出来了。   但此时,我们还没有将非正文部分的页数剔除;如下图所示,文档一34,而我们的正文开始是文档的5,也就是说前面的封面、目录等部分共有4

29310
  • 使用iText5来处理PDF

    之前选了aspose.pdf,因为抠门,不能花钱买,就从网上找的的开心版,好不容易出来点模板,结果插入图片的时候,同一只能插入一张图片,而官方的试用版是可以正常两张的,另外字段比较多,速度比较慢,几百个字段需要一分多钟...之后尝试iText,发现要比aspose.pdf好用的多,下面就说下用法。 需要通过nuget安装iTextSharp,选第一个,版本号是5.5.12,也就是iText5版本,该版本是AGPL许可。.../// public float X { get; set; } /// /// Y坐标.../// public float Y { get; set; } /// /// 索引(从0开始)...{ //先按进行遍历,可以减少实例化pdfContentByte的次数,减少资源占用 var pdfContentByte = stamper.GetOverContent

    2.5K10

    2014年第五届Java B组蓝桥杯省赛真题

    他注意到:书的1011在同一张纸上,但1112不在同一张纸上。 小明只想练习该书的8192的武功,又不想带着整本书。请问他至少要撕下多少张纸带走?...题目分析 题目代码 ---- 第三题:猜字母 题目描述 把abcd…s19个字母组成的序列重复拼接106次,得到长度为2014的串。...题目分析 题目代码 ---- 第七题:扑克序列 题目描述 A A 2 2 3 3 4 4, 一4对扑克牌。请你把它们排成一行。...是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。...对xy列的硬币进行 Q 操作的定义:将所有 ix 行, jy 列的硬币进行翻转。 其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。

    64430

    itext实现合同尾部签章部分自动添加,定位签名

    -- pdf处理 start--> com.itextpdf itext-asian</artifactId...原理 通过itext中List添加固定文本 添加指定标记比如★☆用以之后替换成其他文本或图片 可以不用标记,反正就是算好位置 至于签章这块位置的选定,根据文档最后一行位置判定,我的判定方法就是文档最后一最后一行离尾部距离小于一定值...,签章的整块内容移到新的一 过程 核心利用了com.itextpdf.text.pdf.parser.RenderListener这个类,它会遍历这个文档的内容 写个继承这个类的方法,实现方法如下 @...("endY", y); } } 这里我进行了很多微调,此方法肯定存在很多改进的地方,由于时间紧急,我对itext的研究也不深,勉强实现需求 ......y轴坐标 float lly = y - 50; sap.setVisibleSignature(new Rectangle(x, lly, x + size, lly+

    1.6K10

    全网最硬核 JVM 内存解析 - 2.JVM 内存申请与使用流程

    然后,进程访问虚拟内存空间的时候,通过表找到物理内存: 如何将一个虚拟内存地址(我们需要注意一点,目前虚拟内存地址,用户空间与内核空间可以使用从 0x0000 0000 0000 0000 ~...如何将虚拟内存地址通过表找到对应用户数据内存从而读取数据,过程是: 取虚拟地址的 39 ~ 47 位(因为用户空间与内核空间可以使用从 0x0000 0000 0000 0000 ~ 0x0000...这样前面从 1 到 7 步就可以被替换成访问 TLB 了: 取虚拟地址的 12 ~ 47 位作为 key,访问 TLB,定位到具体的用户数据物理内存页面。...TLB 一般很小,我们来看几个 CPU 中的 TLB 大小,以下图片来自于 https://www.bilibili.com/video/BV1Xx4y1j7Hu/?...但是整体看,TLB 能容纳的大小还是增多的(比如 Nehalem 的 iTLB,大小 4K 的时候,一可以容纳 128 * 4 = 512K 的内存,大小 2M 的时候,一可以容纳 2 * 7

    86830

    80386的分段机制、分页机制和物理地址的形成

    7 位P 位(Present) 是存在位,表示段描述符描述的这个段是否在内存中,如果在内存中。P=1;如果不在内存中,P=0。...从下标2~5 4 项对应于前面的4 种段描述符值。...7目录项、表项、页面项 80386 使用4K 字节大小的。每一都有4K 字节长,并在4K 字节的边界上对齐,即每一的起始地址都能被4K 整除。...• 7 位是Page Size 标志,只适用于目录项。如果置为1,目录项指的是4MB 的页面,即扩展分页。...4GB 的存储器只有一个目录,它最多有1024 个目录项,每个目录项又含有1024个页面项,因此,存储器一可以分成1024×1024=1M 个页面。

    1.3K50

    CAN协议 J1939「建议收藏」

    转自:http://blog.sina.com.cn/s/blog_bf97bd7e0102wl2y.html 这几天在公司看了SAE推行的 J1939标准(SAE:美国汽车工程协会),这里整理下学习要点...数据扩展(EDP)和数据(P)关系: 扩展数据位 (EDP) 数据位 (DP) 功能描述 0 0 SAE J1939 0PGN 0 1 SAE J1939 1PGN 1 0 SAE J1939...= 240-255 PDU2格式 PS是组扩展(GE)值 PDU1和PDU2时的参数组编号(PGN)数目为: EDP DP PF PS PDU1时参数组编号 0 0或者1 0-239 目标地址 2X240...(PF的值)=480 EDP DP PF PS PDU2时参数组编号 0 0或者1 240-25516个数 组扩展值0-255 (256个数) 2X16X256=8192 其中PGN计算公式为:...位为最高有效位) 字节4 SPN2字节 (8位为最高有效位) 字节5 SPN高3位(8位为最高有效位) FMI低5位(5位为最高有效位) 字节6 SPN FMI CM OC 8bit

    1.7K20

    80386的分段机制、分页机制和物理地址的形成

    7 位P 位(Present) 是存在位,表示段描述符描述的这个段是否在内存中,如果在内存中。P=1;如果不在内存中,P=0。...从下标2~5 4 项对应于前面的4 种段描述符值。...7目录项、表项、页面项 80386 使用4K 字节大小的。每一都有4K 字节长,并在4K 字节的边界上对齐,即每一的起始地址都能被4K 整除。...• 7 位是Page Size 标志,只适用于目录项。如果置为1,目录项指的是4MB 的页面,即扩展分页。...4GB 的存储器只有一个目录,它最多有1024 个目录项,每个目录项又含有1024个页面项,因此,存储器一可以分成1024×1024=1M 个页面。

    1.1K30

    豆瓣自动批量点赞

    Fuchouns": ["最近刚入手的12 觉得好容易发烫啊 网上一查发现是通病 刷个微博都巨烫无比qaq"], "没错是我": ["我觉得都还行吧", "或者2也行"] } 4、而对于一些配置相关的参数,放在..., url): """ 检查当前帖子总共有多少 :param url: 帖子链接 :return: 帖子页数 """ 7、查找所有的内容 def locateComment...开始解析评论位置,3 ************************************************** >> 解析1/3 >> [×] 当前不存在此用户: 佛系芋泥小奶茶...>> [×] 当前不存在此用户: 没错是我 ************************************************** >> 解析2/3 >> [×] 当前不存在此用户...: 佛系芋泥小奶茶 >> [×] 当前不存在此用户: 没错是我 ************************************************** >> 解析3/3 >> [×

    3.2K30

    我跟面试官说MySQL单表数据量不要超过两千万,面试官不信

    举个例子,如果我要寻找 ID=5 的记录,从顶部非叶子节点开始查找,由于 ID=5 大于1并且小于7,故应该往左边寻找,来到页号为6的数据,由于5大于4,故应该往右边寻找,来到页号为105的数据,找到...假设:非叶子节点内指向其他数据的指针数量为 X(即非叶子节点的最大子节点数为 X);每个叶子节点可以存储的行记录数为 Y;B+树的高度为 N(即 B+树的层数); 对于一个高度为 N 的 B+树,顶层...(根节点)有一个非叶子节点,那么第二层就有X个节点,第三层就有 X 的2次方个节点,第四层就有 X 的三次方个节点,以此类推, N 层(即叶子节点所在的 N 层)就有 X 的 N-1 次方个节点;在...Y; 对于一个高度为 N 的 B+树,顶层(根节点)有一个非叶子节点,那么第二层就有X个节点,第三层就有 X 的2次方个节点,第四层就有 X 的三次方个节点,以此类推, N 层(即叶子节点所在的...,即:M=(X 的 N-1 次方)乘以 Y; 代入计算: 一个数据大小16K,扣除页号、前后指针、目录,校验码等信息,实际可以存储数据的大约为15K,假设主键ID为bigint型,那么主键 ID

    2.9K71

    教你两招,轻松搞定html页面导出为pdf文件

    即方便实现,又避免了由于页面的变动而需要改动导出功能代码的尴尬 方案调研 查阅了一些资料,目前市面上流行的解决方案主要有以下几种 wkhtmltopdf iText html2canvas+jsPDF...最后我们来看一看iText ? itext7好像是最新版本,这种方式适合于维护PDF模板然后动态添加内容,有需要的小伙伴可以了解一下。...而且itext7更多用于需要去维护PDF模板的场景,并不适合我本次的需求。所以我最终使用html2canvas+jsPDF的方式来实现。...= canvas.width var contentHeight = canvas.height //一pdf...小结 本文主要介绍了如何将html页面导出为pdf文件,希望给遇到类似需求的小伙伴一点思路,没遇到的也可以收藏一下,以后说不定用得到。

    3.2K30

    java 往 pdf 插入数据 (pdfbox+poi)

    指定页码插入/替换 pdfbox好像没有专门提供这个方法,但是现有的方法多重组合起来也能实现这个功能, 需求:一个pdf文件A有10,现在想在6插入一新的pdf文件B,插入完成后整个pdf文件A...变成11。...再拆分到6的时候将文件B放进来,重命名问6.pdf,原本pdf文件A里面的6重命名为7.pdf,依次后推,最后的得到的1.pdf----->11.pdf一11个文件   然后使合并功能将这个11...思路2(替换):   在插入的基础上,拆分的时候将pdf文件A里面的6个丢弃,使用新的页面来代替它命名6.pdf,然后合并就完事了。 1.pom <!...2、这个时候就用pdfbox的图片插入功能:将图片写入原来的6.pdf这一里面来,你要问我为啥?因为原来的6.pdf尺码是对的,其中画图的时候开始位置xy都从0开始。

    1K30
    领券