我在正确保存我的 pdf 时遇到了一些麻烦。我正在尝试绘制条形码标签,然后将其另存为 pdf,如下面的代码所示。我已经在我的 Windows 上安装了 code128.ttf 字体。此外,我尝试将 .savefig dpi 参数设置为 fig.dpi,如本文所述。
import os
import matplotlib.pyplot as plt
from matplotlib import font_manager as fm
def draw_label(label, label_dimensions_x=3.8189, label_dimensions_y=1.41732):
# import barcode code128 font
fpath = os.path.join("path", "to", "font", "code128.ttf")
prop = fm.FontProperties(fname=fpath, size=58)
fig, ax = plt.subplots(1, figsize=(label_dimensions_x,
label_dimensions_y))
plt.axis('off')
plt.xticks([], [])
plt.yticks([], [])
plt.tight_layout()
plt.xlim(0, label_dimensions_x)
plt.ylim(0, label_dimensions_y)
# plot barcode
plt.text(label_dimensions_x / 2, label_dimensions_y / 2, label,
ha='center', va='bottom',
fontproperties=prop)
plt.show()
try:
plt.savefig(os.path.join("path", "to", "output", label + '.pdf'),
dpi=plt.gcf().dpi)
except PermissionError:
logging.warning("Close the current label pdf's before running this script.")
plt.close()
return
draw_label('123456789')
这是绘图窗口中的输出。
这是 .pdf 保存文件中输出的内容,这适用于所有类型的标签 - 除了 8 之外的数字 1 到 9 并非不可打印。编辑:如果我用普通文本字体(在本例中为 Frutiger Roman)代替 code128.ttf,并设置 plt.axis('on') 文本不会被剪裁,请参阅此。承认,它不漂亮,不太适合,但它应该仍然可读。
弑天下
相关分类