Skip to main content
 首页 » 编程设计

python之使用 pybarcode ImageWriter 和 docx 模块将条形码图像附加到 docx 文件

2025年05月04日8Free-Thinker

如何减小由 pybarcode ImageWriter 生成的图像大小,以及如何将多个图像附加到正确对齐的 docx 文件中?

我阅读了 ImageWriter 的 dpi 选项,但不知道如何使用它。

import barcode 
from barcode.writer import ImageWriter 
from docx import * 
 
if __name__ == '__main__':         
    # Default set of relationshipships - these are the minimum components of a document 
    ean = barcode.get_barcode('ean', '123456789102', writer=ImageWriter()) 
    ean.default_writer_options['module_height'] = 3.0 
    ean.default_writer_options['module_width'] = 0.1 
    filename = ean.save('bar_image')     
 
    relationships = relationshiplist() 
 
    # Make a new document tree - this is the main part of a Word document 
    document = newdocument() 
 
    # This xpath location is where most interesting content lives  
    docbody = document.xpath('/w:document/w:body', namespaces=nsprefixes)[0] 
    # Add an image 
    relationships,picpara = picture(relationships, filename,'This is a test description') 
    docbody.append(picpara) 
 
    # Create our properties, contenttypes, and other support files 
    coreprops = coreproperties(title='Python docx demo',subject='A practical example of making docx from Python',creator='Mike MacCana',keywords=['python','Office Open XML','Word']) 
    appprops = appproperties() 
    contenttypes = contenttypes() 
    websettings = websettings() 
    wordrelationships = wordrelationships(relationships) 
 
    # Save our document 
        savedocx(document,coreprops,appprops,contenttypes,websettings,wordrelationships,'sample_barcode.docx') 

请您参考如下方法:

通常,barcode.writer 不会给出生成的输出图像大小的参数,你可能会问PIL帮助。并且正确对齐对于代码而言并不准确,但您可以尝试使用表格将它们放在正确的位置。

在 PIL 中,您可以将 png 图像的大小调整为 (480,320)

from PIL import Image 
im = Image.open("barcode.png") 
im.resize((480,320)).save("barcode_resized.png") 

对于 docx 文件,一些表格示例是 here ,您可能需要知道适当的食物是什么,然后输入代码。