如何使用pylatex生成条形码并插入到自动生成的PDF文档中
解决pylatex插入条形码的实现步骤
步骤1:导入依赖的LaTeX包
你需要先给文档对象添加条形码生成必需的两个LaTeX包,代码如下:
from pylatex import Package # 以下两行添加在doc对象初始化完成后、生成PDF之前的位置 doc.packages.append(Package('pstricks')) doc.packages.append(Package('pst-barcode'))
步骤2:在指定位置插入条形码
pylatex支持直接插入原始LaTeX代码,你可以把条形码代码放在任意需要的位置,既可以追加到现有内容块中,也可以放在独立的TextBlock里实现精确定位。修改后的完整示例代码如下:
from pylatex import Package, MiniPage, TextBlock, MediumText, HorizontalSpace, VerticalSpace, RawLatex from pylatex.utils import bold # 先添加依赖包 doc.packages.append(Package('pstricks')) doc.packages.append(Package('pst-barcode')) 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") page.append("\nCITY, POSTAL CODE") # 示例:在地址下方插入条形码 page.append(RawLatex(r""" \begin{pspicture}(1.5,3) \psbarcode{00700}{}{ean5} \end{pspicture} """)) 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")) # 编译时建议指定xelatex编译器,避免pstricks相关编译错误 doc.generate_pdf(doc_location, clean_tex=False, compiler='xelatex')
补充说明
- 如果需要动态生成条形码内容,只需要通过Python字符串格式化,把
\psbarcode后第一个参数的固定值00700替换为数据库中读取的对应值即可 - 如果需要调整条形码的位置、大小,可以修改
pspicture的尺寸参数,或者把条形码代码放在独立的TextBlock中,通过调整TextBlock的坐标实现精确定位
内容的提问来源于stack exchange,提问作者NicLovin
相关产品推荐
相关产品推荐

