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

如何使用wkhtmltopdf在页眉/页脚htmls中进行页码编号?

wkhtmltopdf 是一个开源工具,可以将 HTML 转换为 PDF 文件。要在页眉或页脚的 HTML 中进行页码编号,可以通过在 HTML 模板中使用 CSS 和 JavaScript 来实现。

基础概念

  1. wkhtmltopdf: 是一个基于 WebKit 的工具,可以将 HTML 内容转换为 PDF。
  2. 页眉/页脚: 在 PDF 文件的顶部和底部添加的内容。
  3. 页码编号: 在页眉或页脚中显示当前页码。

相关优势

  • 灵活性: 可以使用任何 HTML 和 CSS 来设计页眉和页脚。
  • 准确性: 可以精确控制页码的位置和样式。
  • 兼容性: 支持多种操作系统和浏览器。

类型

  • 静态页眉/页脚: 内容固定不变。
  • 动态页眉/页脚: 内容可以根据页面内容或页码动态变化。

应用场景

  • 报告生成: 在报告中添加页码以便于阅读和引用。
  • 书籍出版: 在书籍的页眉或页脚中添加页码。
  • 发票和文档: 在正式文档中添加页码以确保完整性。

实现方法

以下是一个示例,展示如何在页眉中添加页码编号:

HTML 模板 (header.html)

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Header</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
        }
        .page-number {
            position: absolute;
            top: 10px;
            right: 10px;
        }
    </style>
</head>
<body>
    <div class="page-number" id="page-number">Page <span id="current-page">1</span> of <span id="total-pages">1</span></div>
    <script>
        window.onload = function() {
            var totalPages = {{ totalPages }};
            var currentPage = {{ currentPage }};
            document.getElementById('total-pages').innerText = totalPages;
            document.getElementById('current-page').innerText = currentPage;
        };
    </script>
</body>
</html>

使用 wkhtmltopdf 命令

代码语言:txt
复制
wkhtmltopdf --header-html header.html input.html output.pdf

遇到的问题及解决方法

问题: 页码编号不正确

原因: 可能是由于 totalPagescurrentPage 的值没有正确传递到 HTML 模板中。

解决方法:

确保在生成 PDF 时正确传递 totalPagescurrentPage 的值。例如,可以使用 Python 脚本来生成 PDF:

代码语言:txt
复制
import subprocess

header_html = 'header.html'
input_html = 'input.html'
output_pdf = 'output.pdf'

# 获取总页数
result = subprocess.run(['wkhtmltopdf', '--print-media-type', input_html], capture_output=True, text=True)
total_pages = result.stdout.count('page')

# 生成 PDF
subprocess.run(['wkhtmltopdf', '--header-html', header_html, '--footer-html', footer_html, input_html, output_pdf], env={
    'totalPages': str(total_pages),
    'currentPage': '1'
})

参考链接

通过以上方法,你可以在 wkhtmltopdf 的页眉或页脚 HTML 中实现页码编号。

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

相关·内容

Web应用程序如何创建 PDF

如果你有自己喜欢的工具或任何经验可以评论中分享给我们。 从HTML和CSS开始 首先考虑如何使用HTML和CSS生成PDF版本。...首先,它会有页眉页脚,当你从网页打印内容时,这些页眉页脚会自动添加。当然如果你有一个样式表,它也会根据打印样式表进行格式化。...此外,我们无法控制页边距框的内容,例如 将我们选择的标题添加到每个页面或页码编号,以显示页数。 这些内容是Paged Media规范的一部分,但尚未在任何浏览器实现。...使用浏览器渲染引擎打印 还有一些方法可以使用浏览器渲染引擎将文档打印成PDF,而不需要在浏览器中使用打印的菜单,并且以页眉页脚结束。...可以将一些标志传递到wkhtmltopdf,以便使用分页媒体规范缺省情况下添加一些缺失的特性。然而,这确实需要一些额外的工作,除了写好的 HTML 和CSS。

2.8K30

wkhtmltopdf参数详解及精讲使用方法

页面的右头显示页码,这相对于进行了如下设置: --header-left...页眉页脚参数选项 --footer-center 页脚的居中部分显示页脚文本 --footer-font-name 设置页脚的字体...从标准输入获取参数 如果你需要对许多页面进行批量的处理,并且感觉 wkhtmltopdf 开启比较慢,你可以尝试使用 --read-args-from-stdin 参数。...如果你不熟悉 BNF 的话,下面的代码段是三个例子: http://user:password@myproxyserver:8080socks5://myproxyserverNone 页眉页脚 页眉页脚可以使用参数...[page] 当前正在被输出页面的页码[frompage] 第一页文档页码[topage] 最后一面文档页码[webpage] 当前正在被输出页面的URL[section

97210
  • Java后端:html转pdf实战笔记

    Wkhtmltopdf可直接把浏览器浏览的网页转换成一个pdf,他是一个把html页面转换成pdf的软件(需要安装在服务器上)。使用时可通过java代码调用cmd指令完成网页转换为pdf的功能。...指定用户的样式表,加载每一页 –username HTTP认证的用户名 –version 输出版本信息退出 –zoom 使用这个缩放因子 (default 1)页眉页脚选项 –header-center...* (添加一个HTML页眉,后面是网址) –header-left* (左对齐的页眉文本) –header-line* (显示一条线页眉下) –header-right* (右对齐页眉文本) –header-spacing...* (设置页眉和内容的距离,默认0) –footer-center* (设置中心位置的页脚内容) –footer-font-name* (设置页脚的字体名称) –footer-font-size* (...设置页脚的字体大小default 11) –footer-html* (添加一个HTML页脚,后面是网址) –footer-left* (左对齐的页脚文本) –footer-line* 显示一条线页脚内容上

    4.3K61

    officeword 2010添加页眉页脚

    所出现的情况如下: 修改页眉文本时, 如果修改任何的页眉, 其他所有的页眉都会同步本次修改 修改页脚页码时, 无法手动添加页面, 因为如果修改了其中的页脚, 其他的页脚也会同步本次的修改...一点是没有对文章进行分节(图一), 二是在编辑页眉时选中了 链接到前一条页眉 这个选项(图二) 所以我们首先应该对每一个章节结束后使用分隔符进行分割, 然后添加页眉 图一 j 图二...注意:这里是因为我们分节以后, 编写的页眉只会同步到本节的所有页眉, 因此最好是按照顺序修改页眉 分隔符如何删除?..., 使其更加美观 页脚编辑 在编写页脚的时候, 我们可以使用wrod自带的页码选项 但需要注意的是, 因此我们对整个论文进行了分节, 因此页码设置的自增只会在本节有效, 所以要单独为每一节设置自增的页码...+1,如图三, 图四 需要注意的是每次设置页码时, 都要注意在页眉页脚设计 链接到前一条页眉是否选中(页眉编辑图二), 我的默认选中, 如果选中, 取消即可 图一 图二 图三 图四

    1.7K20

    超详细论文排版秘籍,宜收藏!

    双击页眉的位置进入页眉 / 页脚编辑状态,页眉页脚工具】选项卡, 单击【页码】命令,在下拉列表,单击【页面底端—普通数字 2】命令为当前节插入页码,如图3所示。...退出页眉/页脚编辑模式,在前置部分的末端,单击【布局】选项卡的【分隔符】命令,在下拉列表中找到【分节符】,单击【下一页】命令来进行分节。 小贴士 此处如此操作是因为接下来的目录部分不要求有页码。...此时,目录的前后各有一个分节符,但是我们发现目录和正文的页码都是不对的。我们可以进行如下操作。 首先,双击页面底部进入页眉 / 页脚编辑模式,将鼠标光标放置于目录所 节。...然后,页眉页脚】选项卡,找到【导航】组,单击【链接到前一节】命令。 最后,选中该节的页码将其删除。 小贴士 如此,当前节的页眉/页脚设置才不会对前一节造成影响。 (2)设置正文部分。...将光标移动到下一节,即正文部分,页眉页脚】选项卡,找到【导航】组,单击【链接到前一节】命令,取消对前一节的链接。 选择【插入】选项卡的【页码】命令,在下拉列表中选择合适的页码样式。

    4.5K10

    Word域的应用和详解

    三、AutoNumOut 大纲样式编号使用方法:{ AutoNumOUT } AutoNumOUT. 可以大纲样式自动进行段落编号。...▲使用方法:{ Page [\* Format Switch ] } 单击“插入”菜单的“页码”命令或单击“页眉页脚”工具栏上的“页码”按钮时插入 Page 域。...▲示例: 参见■例子2 : 页码例子(第 53 页)。 参见■例子3 : 使奇偶页具有不同的页眉页脚 (第 53 页)。 ▲注意:修改“页码”字符样式,可改变页码的字符格式。...使用该域时,必须对第一节之后每一节的页从 1 开始重新编号。 ▲示例:要在已分节的文档的每一页上打印如“429”之类的文字,可在页眉页脚插入如下域和文字。...该开关可用于页眉页脚插入章节号。 \h 隐藏域结果。用该开关可在交叉引用中使用一个 Seq 域而不打印编号。例如,要引用一个编了号的章节,但又不想打印章节号,那么可用该参数。

    6.5K20

    软件使用说明书编写格式规范

    页面设置 页边距上下1.5厘米,左后2.5厘米,纸张大小A4,纸宽21厘米,高度29.7厘米,页眉页脚距边界距离1.5厘米。 目录格式: 目录仅仅显示前3级标题。...编号位置左对齐,对齐位置0厘米,制表位位置0.76厘米,缩进位置0.76厘米。...二级标题: 宋体,加粗,四号,两端对齐,大纲级别2级,悬挂缩进1.02厘米,段前段后0行,1.5倍行距,正规编号,起始编号阿拉伯数字“1”。...三级标题: 宋体,加粗,小号,两端对齐,大纲级别3级,悬挂缩进1.27厘米,段前段后0行,1.5倍行距,正规编号,起始编号阿拉伯数字“1”。...页眉页脚 正文页面页脚 目录部分的页眉页脚页码应该使用I、II、III的符号页面,其中页眉应该包含公司LOGO,公司名称,说明书的名称。 页眉页脚离顶端距离0.9cm。

    2.7K20

    毕毕业论文排版(三)-页眉页脚

    毕业论文排版(三)-页眉页脚 子墨居士 前言 页眉页码的设置上一期讲的不清楚,一般来讲,论文的封面、目录和内容的页眉页码设置是不一样的,小编的论文就如此。因此将分三个步骤来设置:分节、页眉页脚。...二、页眉页脚设置 分节完成后后面就方便了,一定要记得分节,不然页码永远都是从第一张开始统计的,第一页永远是第一页。...2.1 页眉设置 页眉页脚的设置章节位置,点击页眉页脚就可以进入设置界面进行设置 即: 页眉没有设置页码的时候是比较简单的,就使用上一期的方法就可以了,只需要在页眉插入需要的内容即可,图标也可以...2.2 页码设置 页码的设置上期页讲过设置方法,wps比较人性可以页眉页脚的位置直接插入页码: 现在知道为什么要分节了吧!...2.3 顶部标题页码 有的学校就比较离谱,要求页眉的位置同时放上单位和页码,单位居中,页码靠右: 这种我的设置方法是先插入页码页脚的地方演示,下面是我设置的格式,如果不要求双面的选右侧就好。

    1.6K30

    word文档页码不连续编号怎么办_怎样给论文加页码

    ,也就是第1页的左右两栏分别显示第1页和第2页,第2页的左右两栏分别显示第3页和第4页,这样的效果该如何设置呢?...我们先在页脚设置好添加页码的位置,这里使用制表位,关于制表位的使用技巧可以参考word达人带你玩转制表位!...处理方法: 第1步:执行【插入】-【页脚】-【空白页脚】,单击【下一节】,来到第2页(横向页面),先关闭【链接到前一条页眉】选项: 第2步:分别在页脚当前位置添加页码,为纵向页面添加步骤这里不再细说,重点说一下横向页面的设置...由于要让页码“跑出”当前页脚的位置,我们需要找一个定位的工具,这里使用文本框。...结果如下图: 提示:在对各节页脚设置前,要先将各节前的【链接到前一条页眉】选项取消选择。

    2.4K20

    教程 | Python 实现 Word 文档操作...

    3、如何输入 我们Word输入文字时,一般会先使用鼠标点击需要输入文字的位置,这个过程是获得了光标焦点。...如何获得 s = app.Selection Word,按下Alt+F11打开宏编辑器 ? 然后按下F2打开对象浏览器 ?...,文档难以直接找到,需要使用如下方法。...() # 扩选到整个部分(会选中整个页眉页脚) s.Delete() #按下删除键,这两句是为了清除原来的页码 s.headerfooter.pagenumbers.Add(4) # 添加页面外侧页码...,移动了一个字符距离 # 默认参数是1(字符) s.TypeText( — ) s.WholeStory() # 扩选到整个页眉页脚部分,此处是必要的 # 否则s只是输入一字线后的一个光标,没有选择区域

    3.6K20

    同一页插入不同页码

    报告或论文集是由许多篇文档汇集而来,既需要说明某一页在当前文档页码,又需要说明该页整个文集中的页码,这就出现了同一页面设置不同页码的情况,利用域很容易解决这个问题。...假如某文档文集中的起始页码为66(即自身的页码序列是1),那么它在文集中的页码和在文档页码可以按以下步骤设计: 首先单击“视图→页眉页脚”菜单命令,然后页面让光标停留在页眉处,输入“第页”。...将光标移动到“第页”中间按下Ctrl+F9键输入“{ }”,接着{ }中间输入“Page”,按下Shift+F9组合键即可获得该页文档页码设置。...(shift+F9就是把这个翻译成人看的页码) (opens new window) 其中\*Arabic是格式 接下来把光标移动到页脚,先输入“总第页”字样,把光标移动到“页”字前面。...这设计的好任性,不过域还是很有用的,像用Endnoteword插入文献也是用域实现的,更多域知识参考:word域的使用方法以及域名一览 (opens new window)

    73220

    项目实战 | 手把手带你获取某知识付费平台内容制作电子书(二)

    create_time = (topic.get('create_time')[:20]).replace('T', ' ') # 获取最后更新时间 author_time = '{}{...这里需要安装两个包一个是pdfkit,另一个是wkhtmltopdf, 其中 wkhtmltopdf工具是一个exe文件,然后要指定这个文件 self.config = pdfkit.configuration...( wkhtmltopdf='C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe') # 这里需要配置一下wkhtmlpdf.exe...def creat_pdf_file(self, group_title): htmls = [] # 这里是存放html文件 for index, file in...总之要优化的就4个地方 帖子的链接文章 电子书制作速度要加快 星球动态的多张图片 pdf文件没有标注页码 猜你喜欢 项目实战 | 手把手带你获取某知识付费平台精华帖,并制作电子书(一) 基于Python

    95650

    Go-Excelize API源码阅读(十九)——SetHeaderFooter

    页眉页脚包含如下字段: 字段 描述 AlignWithMargins 设定页眉页脚页边距与页边距对齐 DifferentFirst 设定第一页页眉页脚 DifferentOddEven 设定奇数和偶数页页眉页脚...ScaleWithDoc 设定页眉页脚跟随文档缩放 OddFooter 奇数页页脚控制字符 OddHeader 奇数页页眉控制字符 EvenFooter 偶数页页脚控制字符 EvenHeader 偶数页页眉控制字符...如果双下划线模式启用了, // | 一个章节的下划线会关闭双下划线模式。...DifferentOddEven: true代表奇数和偶数页页眉页脚是不同的。 OddHeader: "&R&P"代表奇数页的页眉右侧部分为当前十进制的页码。...OddFooter: "&C&F"代表奇数页的页脚中心部分为当前工作簿的文件名。 EvenHeader: "&L&P"代表偶数页的页眉左侧部分为当前十进制的页码

    1.2K30

    python自动化办公:玩转word之页眉页脚秘笈

    节将就python操作word的页眉页脚技巧做深入介绍。 使用页眉页脚 python操作word的页眉页脚技巧做深入介绍 Word支持页眉页脚。...页眉是出现在每个页面的上边距区域中的文本,与文本主体分开,并且通常传达上下文信息,例如文档标题,作者,创建日期或页码。文档页眉页面之间是相同的,内容上只有很小的差异,例如更改部分标题或页码。...页眉也称为运行头。 一个页面页脚的每个日日夜夜,只不过它出现在页面底部的页头类似。它不应与脚注混淆,脚注页面之间不一致。...为了简洁起见,这里经常使用术语标题来指代可以是页眉页脚对象的内容,信任读者以理解它对两种对象类型的适用性。 访问节的标题 页眉页脚与一个部分相关联; 这允许每个部分具有不同的页眉和/或页脚。...裙里有学习资料,有大神解答交流问题,每晚都有免费的直播课程 添加标题(简单情况) 只需编辑 对象的内容即可将标题添加到新文档。一个对象是一个"故事"容器及其内容进行编辑,就像一个对象。

    4.1K30

    Python如何使用BeautifulSoup进行页面解析

    网络数据时代,各种网页数据扑面而来,网页包含了丰富的信息,从文本到图像,从链接到表格,我们需要一种有效的方式来提取和解析这些数据。...Python,我们可以使用BeautifulSoup库来解析网页。BeautifulSoup提供了简单而强大的API,使得解析网页变得轻松而高效。首先,我们需要安装BeautifulSoup库。...可以使用pip命令来安装pip install beautifulsoup4接下来,我们可以使用以下代码示例来演示如何在Python中使用BeautifulSoup进行页面解析:from bs4 import...例如,我们可以使用find方法来查找特定的元素,使用select方法来使用CSS选择器提取元素,使用get_text方法来获取元素的文本内容等等。...)# 提取所有具有特定id属性的p元素p_elements = soup.select("p#my-id")# 获取特定元素的文本内容element_text = element.get_text()实际应用

    34010

    JS 如何使用 Ajax 来进行请求

    本教程,我们将学习如何使用 JS 进行AJAX调用。 1.AJAX 术语AJAX 表示 异步的 JavaScript 和 XML。 AJAX JS 中用于发出异步网络请求来获取资源。...来自服务器的响应存储responseText变量,该变量使用JSON.parse()转换为JavaScript 对象。...我们需要另外使用setRequestHeader设置请求标头“Content-Type” ,并使用send方法的JSON.stringify将JSON正文作为字符串发送。...如果存在网络错误,则将拒绝,这会在.catch()块处理。 如果来自服务器的响应带有任何状态码(如200、404、500),则promise将被解析。响应对象可以.then()块处理。...将响应代码(例如404、500)视为可以catch()块处理的错误,因此我们无需显式处理这些错误。

    8.9K20

    如何将HTML表格转换成精美的PDF

    作为开发人员,如何让 PDF 输出看起来更专业?大多数免费的在线 PDF 导出器实际上只是将 HTML 内容转换为 PDF,而不进行任何额外的格式化,这会使数据难以阅读。...如果你也能添加诸如页眉页脚页码或重复的表列标题等内容呢?像这样的小点缀,对把一份看起来很业余的文件变成一份优雅的文件有很大的帮助。...此外,这七个页面的每一个都包含表列标题和页脚,我认为浏览器可以智能地获取这些信息,这是由于我构建结构合理的表时选择了语义 HTML。 然而,我不喜欢浏览器 PDF 包含的额外页面元数据。...pdfmake 还允许我加入页眉页脚,所以很容易添加页码。但你会注意到,第一页和第二页之间的表格内容仍然没有完全分开。分页符将 2002 年的一行部分地分割在两页之间。...如果你需要对 PDF 输出进行更多的控制,那么你就需要使用一个库。 当涉及到基于 UI 显示的 HTML 生成的单页内容时,jsPDF 就会大放异彩。

    6.8K20

    11、借助POI实现Java生成并打印excel报表(2)

    short ENVELOPE_MONARCH_PAPERSIZE = 37;  1.4、打印质量(Q):  HSSFPrintSetup#setVResolution((short) 300); 1.5、起始页码...(A):  HSSFPrintSetup#setHeaderMargin((double) 0.2);  2.6、页脚(F):  HSSFPrintSetup#setFooterMargin((double.../页脚 3.1、页眉:HSSFHeader#setLeft(HSSFHeader.date(); 说明:首先获得HSSFHeader对象,确定页眉的显示位置(如:左边显示页眉HSSFHeader#setLeft...,  (int) startRow,  (int) endRow); 参数说明:  sheetIndex–从0开始的sheet的索引编号   startColumn-打印区域的开始列号   endColumn...使用说明:仅仅设置左端标题列:workbook.setRepeatingRowsAndColumns(0,0,1,-1,-1);  仅仅设置顶端标题行:workbook.setRepeatingRowsAndColumns

    2.9K00
    领券