我正在尝试创建一个 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 链接在我评论过的地方进行包(如果您愿意)。希望这能有所帮助!