为了账号安全,请及时绑定邮箱和手机立即绑定

python 3 fdfgen unicode TypeError

python 3 fdfgen unicode TypeError

慕虎7371278 2021-03-18 14:20:07
我正在使用Python 3.3,并尝试使用出色的fgfgen / forge_fdf脚本(感谢伙计,顺便说一句)。当我尝试运行fdfgen的样本测试时,我返回以下错误。        safe = utf16.replace('\x00)', '\x00\\)').replace('\x00(', '\x00\\(')TypeError: expected bytes, bytearray or buffer compatible object经过一番环顾,这似乎是python 3处理unicode编码的结果吗?但我不确定。这是执行的fdfgen代码的示例,然后是提供的fdfgen代码。提前致谢:>>> from fdfgen import forge_fdf>>> fields = [('last_name', u'Spencer')]>>> fdf = forge_fdf('SMBRPython.pdf', fields, [], [], [])    # -*- coding: utf-8 -*-"""Port of the PHP forge_fdf library by Sid Steward(http://www.pdfhacks.com/forge_fdf/)Anders Pearson <anders@columbia.edu> at Columbia Center For New Media Teachingand Learning <http://ccnmtl.columbia.edu/>"""__author__ = "Anders Pearson <anders@columbia.edu>"__credits__ = ("Sébastien Fievet <zyegfryed@gmail.com>,"               "Brandon Rhodes <brandon@rhodesmill.org>")import codecsdef smart_encode_str(s):    """Create a UTF-16 encoded PDF string literal for `s`."""    utf16 = s.encode('utf_16_be')    safe = utf16.replace('\x00)', '\x00\\)').replace('\x00(', '\x00\\(')    return ('%s%s' % (codecs.BOM_UTF16_BE, safe))def handle_hidden(key, fields_hidden):    if key in fields_hidden:        return "/SetF 2"    else:        return "/ClrF 2"def handle_readonly(key, fields_readonly):    if key in fields_readonly:        return "/SetFf 1"    else:        return "/ClrFf 1"def handle_data_strings(fdf_data_strings, fields_hidden, fields_readonly):    for (key, value) in fdf_data_strings:        if type(value) is bool:            if value:                yield "<<\n/V/Yes\n/T (%s)\n%s\n%s\n>>\n" % (                    smart_encode_str(key),                    handle_hidden(key, fields_hidden),                    handle_readonly(key, fields_readonly),                )            else:                yield "<<\n/V/Off\n/T (%s)\n%s\n%s\n>>\n" % (                    smart_encode_str(key),                    handle_hidden(key, fields_hidden),                    handle_readonly(key, fields_readonly),                )
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

正如Martjin Pieters所提到的,Fdfgen现在已移植到Python 3,主要是通过将所有字符串显式转换为字节常量来实现的。


查看完整回答
反对 回复 2021-03-26
  • 3 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信