用于 Code128 条形码字体的 Python Code128 编码器

2024-01-10

就像标题所说,我有一个 Code128 字体,我想用它来打印条形码。但是,该字符串需要以 Code128 进行编码才能使条形码字体正常工作。我的应用程序使用Python3语言。

网络上曾经有一个示例,介绍如何将字符串编码为 Code128 字体,但我找不到了。

I do NOT想要一个字符串到 .svg 转换器。我特别想将字符串转换为 Code128 编码的字符串。

任何参考文献、Python3 中的代码片段或文档将不胜感激。

编辑:我使用的字体here http://www.barcodelink.net/barcode-font.php.


这是一个被接受的答案,所以我将原始代码留在下面。但我更喜欢这种精致。

def list_join(seq):
    ''' Join a sequence of lists into a single list, much like str.join
        will join a sequence of strings into a single string.
    '''
    return [x for sub in seq for x in sub]

code128B_mapping = dict((chr(c), [98, c+64] if c < 32 else [c-32]) for c in range(128))
code128C_mapping = dict([(u'%02d' % i, [i]) for i in range(100)] + [(u'%d' % i, [100, 16+i]) for i in range(10)])
code128_chars = u''.join(chr(c) for c in [212] + list(range(33,126+1)) + list(range(200,211+1)))

def encode128(s):
    ''' Code 128 conversion for a font as described at
        https://en.wikipedia.org/wiki/Code_128 and downloaded
        from http://www.barcodelink.net/barcode-font.php
        Only encodes ASCII characters, does not take advantage of
        FNC4 for bytes with the upper bit set. Control characters
        are not optimized and expand to 2 characters each.
        Coded for https://stackoverflow.com/q/52710760/5987
    '''
    if s.isdigit() and len(s) >= 2:
        # use Code 128C, pairs of digits
        codes = [105] + list_join(code128C_mapping[s[i:i+2]] for i in range(0, len(s), 2))
    else:
        # use Code 128B and shift for Code 128A
        codes = [104] + list_join(code128B_mapping[c] for c in s)
    check_digit = (codes[0] + sum(i * x for i,x in enumerate(codes))) % 103
    codes.append(check_digit)
    codes.append(106) # stop code
    return u''.join(code128_chars[x] for x in codes)

def encode128(s):
    ''' Code 128 conversion for a font as described at
        https://en.wikipedia.org/wiki/Code_128 and downloaded
        from http://www.barcodelink.net/barcode-font.php
        Only encodes ASCII characters, does not take advantage of
        FNC4 for bytes with the upper bit set.
        It does not attempt to optimize the length of the string,
        Code B is the default to prefer lower case over control characters.
        Coded for https://stackoverflow.com/q/52710760/5987
    '''
    s = s.encode('ascii').decode('ascii')
    if s.isdigit() and len(s) % 2 == 0:
        # use Code 128C, pairs of digits
        codes = [105]
        for i in range(0, len(s), 2):
            codes.append(int(s[i:i+2], 10))
    else:
        # use Code 128B and shift for Code 128A
        mapping = dict((chr(c), [98, c + 64] if c < 32 else [c - 32]) for c in range(128))
        codes = [104]
        for c in s:
            codes.extend(mapping[c])
    check_digit = (codes[0] + sum(i * x for i,x in enumerate(codes))) % 103
    codes.append(check_digit)
    codes.append(106) # stop code
    chars = (b'\xd4' + bytes(range(33,126+1)) + bytes(range(200,211+1))).decode('latin-1')
    return ''.join(chars[x] for x in codes)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于 Code128 条形码字体的 Python Code128 编码器 的相关文章

  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • ipython/ pylab/ matplotlib安装和初始化错误

    我在 OS X El Captain 上安装了 matplotlib anaconda ipython 然而 即使在尝试以所有可能的方式设置环境变量之后 我仍无法启动 ipython shell pylab 版本 这是错误 ImportEr
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • SQL Server Asp.Net - “登录失败”

    我无法让我的 Asp Net 应用程序在我要部署到的服务器上运行 服务器运行的是 Server 2008 R2 我在其上运行 SQL Server 2008 R2 Express 当我浏览该网站时出现错误 用户 WIN 6VLI5UDJ5R
  • 如何在 Firefox 中从 JavaScript 解析 HTML?

    在 Firefox 中解析 XmlHttpRequest 的 HTML 结果 获取 DOM 树 的最佳方法是什么 EDIT I do not有DOM树 我想获取它 XmlHttpRequest 的 responseXML 仅在结果是实际 X
  • 如何防止 Bootstrap 列从一个部分跳到另一部分或在彼此下面?

    我正在为我的项目制作推荐部分 有 4 个 div 但它们的内容不均匀 因此当我开始将屏幕的宽度拉在一起时 col sm 6他们应该像 2 2 一样排列 但是 3 号 div 跳到 4 号 div 的位置 留下一个空白空间 然后 4 号 di
  • 就性能而言,什么时候用 BufferedOutputStream 包装 FileOutputStream 才有意义?

    我有一个模块负责读取 处理字节并将其写入磁盘 字节通过 UDP 传入 在组装各个数据报后 处理并写入磁盘的最终字节数组通常在 200 字节到 500 000 字节之间 有时 字节数组在组装后会超过 500 000 字节 但这种情况相对较少
  • 摆脱科学计数法

    我需要做一些计算 但我遇到的问题是值非常低 例如 我需要得到 0 005 的 2 7 最终得到 1 3500000000000003e 4 这不是我想要的 我只需要知道如何获得这些值的准确百分比 我现在正在做的是
  • IsOrderedBy 扩展方法

    在我的一些测试中 我需要检查列表的顺序并执行类似的操作 DateTime lastDate new DateTime 2009 10 1 foreach DueAssigmentViewModel assignment in dueAssi
  • Common Lisp 中格式指令的安全解析

    我想从输入文件中读取字符串 用户可能已修改也可能未修改 我想将此字符串视为要使用固定数量的参数调用的格式指令 但是 我了解一些格式指令 特别是 我想到 可能会被用来注入函数调用 使得这种方法本质上是不安全的 使用时read为了在 Commo
  • 我在 Windows 中设置 java 环境时遇到问题

    我有这样的 Gradle 构建 plugins id org springframework boot version 2 4 2 id io spring dependency management version 1 0 11 RELE
  • 为什么 DefaultMessageListenerContainer 不应该使用 CachingConnectionFactory?

    我正在阅读 spring 文档默认消息监听容器 http docs spring io spring docs 3 2 7 RELEASE javadoc api org springframework jms listener Defau
  • Apache Velocity 仍然是一个活跃的项目吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 看到 Velocity 的最新稳定版本至少在两年前发布 我希望 SF 的好心人能够建议这个项目是否仍在积极维护 除了 JIRA 上的 Ve
  • 响应式 CSS 网格布局,位置:固定

    我正在使用 CSS 网格布局构建一个响应式模板 仍在学习 感谢这里的一些人 我已经完成了大部分工作 移动设备 最大宽度 767px 一切都应该出现在自己的行上 平板电脑 最小宽度 768px 导航位于第一行 旁边和主要在第二个 桌面 最小宽
  • 如何横向显示 SwiftUI 预览

    previewLayout fixed width 480 height 320 在 Xcode 13 4 和 Xcode 14 beta 3 中没有效果 The preview is shown in portrait vs expect
  • 使用预提交排除运行黑屏时的一些文件

    我想在预提交中配置黑色 并从检查任何迁移文件夹中排除预提交 我的 pyproject toml 看起来像这样 tool black line length 79 target version py37 include pyi exclude
  • Grails Webflow - 将事物保持在流程范围之外

    我错过了一些东西 我有一个 Grails 网络流程 如下所示 def childFlow start action def targets Target list each target gt targets add new TargetC
  • eig(X, 'nobalance') 的八度等效值是多少

    我试图找到马尔可夫链的平衡分布 这意味着找到代表它的转移矩阵的特征值 但是 eig函数自动标准化它返回的特征向量 在MatLab中有一个标志你可以传递给函数停止这种行为 eig X 不平衡 其中 X 是矩阵 看http www mathwo
  • 如何将指针传递给 LuaJIT ffi 以用作 out 参数?

    假设有以下C代码 struct Foo int dummy int tryToAllocateFoo Foo dest 如何在 LuaJIT 中执行以下操作 Foo pFoo NULL tryToAllocateFoo pFoo local
  • 在没有母版页控件的情况下打印asp.net页面

    我想打印我的页面 接受母版页的元素 母版页中有一个用户控件 这对我来说很重要 我的打印按钮也在主页上 谢谢 您需要创建新的样式表 print css 并设置 CSS media print 例如 并将 yesPrint 类添加到要打印的部分
  • 尝试请求存储库时,TypeORM 未找到连接“默认”

    我正在使用 Express TypeORM 构建一个 API 这是我的 ormconfig json type postgres host localhost port 5432 username mdsp9070 password mds
  • 实体框架数据库首先更新多重性冲突

    我看到的关于这些多重性冲突的大多数其他问题都是代码优先 而我首先是数据库 我进行了一些架构更改 当我从数据库刷新模型时收到以下错误 多重性与关系 FK MarketSelectionWager Bet 中角色 Bet 中的引用约束冲突 由于
  • 用于 Code128 条形码字体的 Python Code128 编码器

    就像标题所说 我有一个 Code128 字体 我想用它来打印条形码 但是 该字符串需要以 Code128 进行编码才能使条形码字体正常工作 我的应用程序使用Python3语言 网络上曾经有一个示例 介绍如何将字符串编码为 Code128 字