【发布时间】:2018-07-30 10:14:42
【问题描述】:
# -*- coding: utf-8 -*-
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.pagesizes import landscape
from reportlab.graphics.barcode import code128
from reportlab.lib.units import mm
from reportlab.platypus import Image
import csv
data_file="variteks.csv"
attendee_data=csv.reader(open(data_file,"rb"))
def pdf_creater(data_file):
attendee_data=csv.reader(open(data_file,"rb"))
for row in attendee_data:
barcode_name = row[0]
barcode_number=row[1]
barcode_stf=row[2]
pdf_file_name= barcode_number+ ".pdf"
generate_certificate(barcode_name,barcode_number,barcode_stf,pdf_file_name)
def generate_certificate (barcode_name,barcode_number,barcode_stf,pdf_file_name):
c= canvas.Canvas(pdf_file_name)#, pagesize=letter)
c.setPageSize((400,600))
c.setViewerPreference("FitWindow", "true")
# first_image
variteks = "variteks_first.png"
c.drawImage(variteks, 40,400, width=None, height=None)
variteks_ce = "variteks_ce.png"
c.drawImage(variteks_ce, 40, 260, width=None, height=None)
barcode = code128.Code128(barcode_number,barHeight=30,barWidth = 2)
barcode.drawOn(c, 10 * mm, 20 * mm)
#info
c.drawCentredString(150,100,barcode_name)
#info
c.drawCentredString(150,150, barcode_stf)
#barkod numarasi
c.drawCentredString(100,40,barcode_number)
#down info
c.drawCentredString(150,15,"1 adet ürün içerir. Contains 1 Piece. LOT:",)
c.showPage()
c.save()
print ("writing")
pdf_creater(data_file)
我有上面的代码来为产品创建贴纸。除非我将土耳其语字符放入 csv 文件,否则它工作正常。如果我输入土耳其字符,我会收到以下错误。你能帮我处理土耳其字符吗? (ş,ı,ç,ğ,ü,ö) 我的代码有 2 张图片、3 个 str、1 个条形码。
C:\Python27\python.exe C:/Users/muhammedcan/PycharmProjects/mp1/variteks.py
Traceback (most recent call last):
File "C:/Users/muhammedcan/PycharmProjects/mp1/variteks.py", line 57, in <module>
pdf_creater(data_file)
File "C:/Users/muhammedcan/PycharmProjects/mp1/variteks.py", line 23, in pdf_creater
generate_certificate(barcode_name,barcode_number,barcode_stf,pdf_file_name)
File "C:/Users/muhammedcan/PycharmProjects/mp1/variteks.py", line 47, in generate_certificate
c.drawCentredString(150,150, barcode_stf)
File "C:\Users\muhammedcan\AppData\Roaming\Python\Python27\site-packages\reportlab\pdfgen\canvas.py", line 1575, in drawCentredString
width = self.stringWidth(text, self._fontname, self._fontsize)
File "C:\Users\muhammedcan\AppData\Roaming\Python\Python27\site-packages\reportlab\pdfgen\canvas.py", line 1675, in stringWidth
(fontSize,self._fontsize)[fontSize is None])
File "C:\Users\muhammedcan\AppData\Roaming\Python\Python27\site-packages\reportlab\pdfbase\pdfmetrics.py", line 747, in stringWidth
return getFont(fontName).stringWidth(text, fontSize, encoding=encoding)
File "C:\Users\muhammedcan\AppData\Roaming\Python\Python27\site-packages\reportlab\pdfbase\pdfmetrics.py", line 360, in stringWidth
return instanceStringWidthT1(self, text, size, encoding=encoding)
File "src\rl_addons\rl_accel\_rl_accel.c", line 748, in instanceStringWidthT1
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xfe in position 0: invalid start byte
【问题讨论】:
-
能否请您显示完整的错误消息,直到您自己的源文件。我想知道错误到底发生在哪里...
-
@SergeBallesta 已编辑。
标签: python csv utf-8 pycharm reportlab