第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

繪圖條碼在繪圖窗口中的顯示與在保存的 .pdf 中不同

繪圖條碼在繪圖窗口中的顯示與在保存的 .pdf 中不同

慕森王 2021-07-22 16:11:15
我在正確保存我的 pdf 時(shí)遇到了一些麻煩。我正在嘗試?yán)L制條形碼標(biāo)簽,然后將其另存為 pdf,如下面的代碼所示。我已經(jīng)在我的 Windows 上安裝了 code128.ttf 字體。此外,我嘗試將 .savefig dpi 參數(shù)設(shè)置為 fig.dpi,如本文所述。import osimport matplotlib.pyplot as pltfrom matplotlib import font_manager as fmdef 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()    returndraw_label('123456789')這是繪圖窗口中的輸出。這是 .pdf 保存文件中輸出的內(nèi)容,這適用于所有類型的標(biāo)簽 - 除了 8 之外的數(shù)字 1 到 9 并非不可打印。編輯:如果我用普通文本字體(在本例中為 Frutiger Roman)代替 code128.ttf,并設(shè)置 plt.axis('on') 文本不會(huì)被剪裁,請(qǐng)參閱此。承認(rèn),它不漂亮,不太適合,但它應(yīng)該仍然可讀。
查看完整描述

2 回答

?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

山姆,

首先,您的條形碼不會(huì)按原樣掃描。該字符串需要為 Code128B 添加一個(gè)開始字符、一個(gè)校驗(yàn)和和一個(gè)停止字符。所以,就是這樣。


http://img1.sycdn.imooc.com//6101274a0001d44b09130356.jpg

我建議更改為 Code 39 字體(不需要校驗(yàn)和,并且開始和停止字符相同:“*”)或編寫代碼以生成校驗(yàn)和并在Code 128 Wiki 上了解更多關(guān)于Code 128 的信息。

其次,我懷疑在轉(zhuǎn)換為 PDF 期間圖形的邊界框存在問(wèn)題。被轉(zhuǎn)換的那一小部分條碼看起來(lái)更像是字符串中數(shù)字 9 的一部分。我懷疑正在進(jìn)行一些圖像剪輯。

http://img1.sycdn.imooc.com//6101275900017a5108990369.jpg

嘗試替換常規(guī)文本字體以確保條碼圖像不會(huì)在轉(zhuǎn)換過(guò)程中丟失。


編輯答案以包含使用 PNG 而不是 PDF 的建議。


如果您輸出為 PNG 格式,我設(shè)法讓該軟件正常工作。我知道,現(xiàn)在問(wèn)題變成了如何將 PNG 轉(zhuǎn)換為 PDF。您可以從調(diào)查這里提到的一些庫(kù)開始:從圖像列表創(chuàng)建 PDF


簡(jiǎn)而言之,我建議您創(chuàng)建圖形文件,然后將它們嵌入到文檔文件中。


我還添加了使用開始、校驗(yàn)和和停止字符構(gòu)建條形碼所需的代碼:


導(dǎo)入操作系統(tǒng)


導(dǎo)入 matplotlib.pyplot 作為 plt


從 matplotlib 導(dǎo)入 font_manager 作為 fm


def draw_label(label, label_dimensions_x=3.8189, label_dimensions_y=1.41732):


    # 導(dǎo)入條碼code128字體

    fpath = os.path.join("./", "code128.ttf")


    prop = fm.FontProperties(fname=fpath, size=32)


    圖, ax = plt.subplots(1, figsize=(label_dimensions_x,

                                       label_dimensions_y))


    plt.axis('關(guān)閉')

    plt.xticks([], [])

    plt.yticks([], [])

    plt.tight_layout()

    plt.xlim(0, label_dimensions_x)

    plt.ylim(0, label_dimensions_y)


    # calc checksum THEN 繪制條形碼

    重量 = 1

    總和 = 104

    對(duì)于標(biāo)簽中的 x:

        chksum = chksum + 權(quán)重*(ord(x)-32)

        重量 = 重量 + 1

    chksum = chksum % 103

    chkchar = chr(chksum+32)

    label128 = "%s%s%s%s" % ('?', label, chkchar, 'ó')

    plt.text(label_dimensions_x / 2, label_dimensions_y / 2, label128,

             ha='中心', va='底部',

             字體屬性=道具)

    嘗試:

        plt.savefig(os.path.join("./", label + '.png'))

    除了權(quán)限錯(cuò)誤:

        logging.warning("在運(yùn)行此腳本之前關(guān)閉當(dāng)前標(biāo)簽 pdf。")


    返回


draw_label('123456789')

draw_label('987654321')

draw_label('測(cè)試&顯示')


查看完整回答
反對(duì) 回復(fù) 2021-07-28
  • 2 回答
  • 0 關(guān)注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)