wkhtmltopdf如何使用文件/字符串作为footer-html?Flask下如何保护页脚页面?
完全可以,不需要将页脚HTML部署为公开可访问的网页,两种场景的用法如下:
- 本地文件用法:直接给
footer-html参数传入本地页脚HTML文件的绝对路径即可,示例命令:
wkhtmltopdf --footer-html /home/your_project/templates/footer.html 待转换源文件.html 输出目标文件.pdf
- 字符串内容用法:不需要提前存为固定文件,有两种实现方式:
- 运行转换逻辑时动态生成临时HTML文件,传入临时文件路径作为参数,转换完成后删除临时文件即可
- 如果你使用Python封装的
pdfkit库,可直接将HTML字符串赋值给footer_html参数,库底层会自动处理临时文件的创建和销毁,示例代码片段:
import pdfkit footer_content = "<div style='text-align:center'>第 [page] 页 / 共 [topage] 页</div>" pdfkit.from_file('源文件.html', '输出.pdf', options={ 'footer-html': footer_content })
问题2:使用Flask搭建页脚服务时如何避免公开访问
如果因业务逻辑需要必须通过web服务提供页脚内容,可以通过以下几种方式限制访问,避免内容公开:
- 绑定服务仅本地回环地址:启动Flask时指定
host='127.0.0.1',这样只有本机的请求可以访问该服务,外部网络完全无法访问,示例启动代码:
if __name__ == '__main__': app.run(host='127.0.0.1', port=5000)
- 增加IP校验逻辑:在页脚路由中加判断,仅允许来源IP为127.0.0.1的请求通过,其他请求直接返回403,示例代码:
from flask import request, abort @app.route('/footer') def get_footer(): if request.remote_addr != '127.0.0.1': abort(403) # 后续返回页脚HTML内容的逻辑
- 配置接口秘钥校验:给页脚接口加一个只有本地转换逻辑知道的秘钥参数,请求时必须携带正确的秘钥才能返回内容,示例:
import os FOOTER_SECRET = os.getenv('FOOTER_SECRET', 'your_custom_secret') @app.route('/footer') def get_footer(): if request.args.get('secret') != FOOTER_SECRET: abort(403) # 后续返回页脚HTML内容的逻辑
调用时的参数可以写为--footer-html http://127.0.0.1:5000/footer?secret=your_custom_secret
内容的提问来源于stack exchange,提问作者Anonymous12332313
相关产品推荐
相关产品推荐

