使用 pylatex 创建条形码

使用 pylatex 创建条形码

我正在尝试创建一个 Python 程序,该程序使用 创建大量 PDF,每个 PDF 包含一个唯一的条形码pylatex。有没有简单的方法可以做到这一点?

下面是如何使用以下命令生成乳胶文档的示例pylatex

with doc.create(MiniPage(width=r"\textwidth")) as page:
   with page.create(TextBlock(100, 0, 0)):
      page.append("**** Ten Thousand Dollars")

   with page.create(TextBlock(100, 0, 30)):
      page.append("COMPANY NAME")
      page.append("\nSTREET, ADDRESS")

   with page.create(TextBlock(100, 150, 40)):
      page.append()

   with page.create(TextBlock(80, 150, 0)):
      page.append("DATE")
      page.append(MediumText(bold("test")))
      page.append(HorizontalSpace("10mm"))

   with page.create(TextBlock(70, 150, 30)):
      page.append(MediumText(bold("$***** 10,000.00")))

   page.append(VerticalSpace("100mm"))

   doc.generate_pdf(doc_location, clean_tex=False)

我想找到一种方法将条形码附加到页面上。

答案1

您添加的 Python 代码似乎没有产生预期的输出,也许这只是我的设置问题,或者我没有正确使用它。无论如何,请查看此代码,它实现了包makebarcode并打印了条形码:

# -*- coding: utf-8 -*-

from pylatex import Document, Command, Package, MiniPage, TextBlock, MediumText, HorizontalSpace, VerticalSpace
from pylatex.utils import bold

def main():

    paper_size = "b5paper"
    geometry_options = {"paper": paper_size, "top": "1.5cm", "bottom": "1.5cm"}

    #------------------- Change barcode package options here --------------------------#
    makebarcode_options = {"code":"Code39", "X":".5mm", "ratio":"2.25","H": "1cm"}
    doc = Document('Testing', geometry_options=geometry_options)

    #------------------- Change barcode package here if you don't want makebarcode --------------------------#
    doc.packages.append(Package('makebarcode', options=makebarcode_options))

    with doc.create(MiniPage(width=r"\textwidth")) as page:
       with page.create(TextBlock(100, 0, 0)):
          page.append("**** Ten Thousand Dollars")

       with page.create(TextBlock(100, 0, 30)):
          page.append("COMPANY NAME")
          page.append("\nSTREET, ADDRESS")

       with page.create(TextBlock(100, 150, 40)):
          page.append("Test")

       with page.create(TextBlock(80, 150, 0)):
          page.append("DATE")
          page.append(MediumText(bold("test")))
          page.append(HorizontalSpace("10mm"))

       with page.create(TextBlock(70, 150, 30)):
          page.append(MediumText(bold("$***** 10,000.00")))
          page.append(VerticalSpace("100mm"))

    #------- Change bracket string to something random for unique barcodes ----------#
    doc.append(Command('barcode',["ZDENEK WAGNER"]))

    doc.generate_pdf(filepath=your_path_CHANGE, clean=True, clean_tex=False)
    doc.generate_tex()

if __name__ == "__main__":
    main()

这会产生这个损坏的输出,我不确定为什么,但是您包含的代码无法正确编译:

在此处输入图片描述

我相信您可以调试它为什么不起作用,我不知道也不能声称对 python、pylatex 或 latex 有很深的了解,因为我还在学习!但它会生成您的条形码,您可以将字符串(本例中为 ZDENEK WAGNER,即来自makebarcode包文档的字符串)更改为随机字符串,我相信在 python 中创建随机或伪随机字符串很简单。

更改包选项(makebarcode_options 已根据makebarcode第 2 页的包文档进行设置,请查看并根据需要进行更改)和/或使用 Willie Wong 在评论中发布的 ctan 链接在我评论过的地方进行包(如果您愿意)。希望这能有所帮助!

相关内容