You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP调用Python的wkhtmltopdf函数传参报错及cookie参数问题

问题描述

在经典ASP中调用Python以使用wkhtmltopdf工具,已在htmlToPdf函数中定义了名为option的默认参数集合。调用该函数时希望仅修改page-size和cookie参数值、保留其他默认参数,但触发TypeError:htmlToPdf()收到意外关键字参数additional_options。尝试单独传递page-size可成功,但cookie参数无法接受字符串格式,且需支持多cookie值。

函数定义代码

def htmlToPdf(self, html_file, pdf_file, additional_options=None):
    path_wkhtmltopdf = r'C:\Program Files (x86)\wkhtmltopdf\bin\wkhtmltopdf.exe'
    
    option = {
        'quiet': True,
        'page-size': 'A4', 
        'cookie':[('login', 'token1=7040D304-34A5-444F-A10D-6942ABEC9B9F&token2=6E8405C7-B6BE-41F6-A5D3-0A20574A6849')],
        'margin-top': '0.0in',  
        'margin-right': '0.0in', 
        'margin-bottom': '0.0in', 
        'margin-left': '0.0in', 
    }

    if additional_options:
        option.update(additional_options)
    
    print(option)

函数调用代码

result = htmlToPdf(html_file, r'c:\Web\Pdf1.pdf',additional_options={'page-size':'A3','cookie': [('login', 'token1=1111111-34A5-444F-A10D-6942ABEC9B9F&token2=222222-B6BE-41F6-A5D3-0A20574A6849')]})
print(result)

报错信息

Traceback (most recent call last):
File "c:\PythonAsp\code.py", line 19, in
result=htmlToPdf(html_file, r'c:\print\Pdf1.pdf',additional_options={'page-size':'A3','cookie': [('login', 'token1=111111-34A5-444F-A10D-6942ABEC9B9F&token2=222222-B6BE-41F6-A5D3-0A20574A6849')]})
TypeError: htmlToPdf() got an unexpected keyword argument 'additional_options'

解决方案

1. 修复additional_options参数报错

函数定义中的self表明这是类的成员方法,直接当作普通函数调用会导致参数位置错位:第一个传入的html_file会被当作self,后续参数全部偏移,最终additional_options变成未定义的关键字参数。

解决方式二选一:

  • 作为类方法调用:先实例化类,再通过实例调用函数
    # 假设函数所属类为HtmlConverter
    converter = HtmlConverter()
    result = converter.htmlToPdf(
        html_file, 
        r'c:\Web\Pdf1.pdf', 
        additional_options={
            'page-size':'A3',
            'cookie': [('login', 'token1=1111111-34A5-444F-A10D-6942ABEC9B9F&token2=222222-B6BE-41F6-A5D3-0A20574A6849')]
        }
    )
    
  • 改为普通函数:删除函数定义中的self参数,直接作为独立函数调用
    def htmlToPdf(html_file, pdf_file, additional_options=None):
        # 原函数内部逻辑保持不变
    

2. 处理多Cookie参数

wkhtmltopdf的cookie参数要求传入元组列表格式,每个元组对应一个Cookie的键值对,支持多个独立Cookie:

# 示例:传入两个不同的Cookie
additional_options={
    'page-size':'A3',
    'cookie': [
        ('login', 'token1=1111111-34A5-444F-A10D-6942ABEC9B9F'),
        ('user_session', 'id=12345&expire=20241231')
    ]
}

如果是单个Cookie包含多个参数(如示例中的token1和token2),直接将完整字符串作为元组的第二个值即可,无需拆分,这符合Cookie的格式规范。

内容的提问来源于stack exchange,提问作者Hafize Turk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:52:03