本文整理汇总了Python中reportlab.pdfbase.pdfmetrics.registerFont方法的典型用法代码示例。如果您正苦于以下问题:Python pdfmetrics.registerFont方法的具体用法?Python pdfmetrics.registerFont怎么用?Python pdfmetrics.registerFont使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类reportlab.pdfbase.pdfmetrics
的用法示例。
在下文中一共展示了pdfmetrics.registerFont方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def __init__(self, faceName='Helvetica', encodingName='WinAnsiEncoding',
charsPerRow=16, boxSize=14, hex=1):
self.codePoints = 256
self.faceName = faceName
self.encodingName = encodingName
self.fontName = self.faceName + '-' + self.encodingName
self.charsPerRow = charsPerRow
self.boxSize = boxSize
self.hex = hex
self.rowLabels = None
pdfmetrics.registerFont(pdfmetrics.Font(self.fontName,
self.faceName,
self.encodingName)
)
self.calcLayout()
示例2: set_font
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def set_font(self, font):
if font.path is None:
msg = "Could not detect fonts, use --font opiton\n"
raise RuntimeError(msg)
if font.path not in self.fonts:
path, index = parse_fontpath(font.path)
if index:
ttfont = TTFont(font.path, path, subfontIndex=index)
else:
ttfont = TTFont(font.path, path)
pdfmetrics.registerFont(ttfont)
self.fonts[font.path] = ttfont
self.canvas.setFont(font.path, font.size)
示例3: _media_setup
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def _media_setup(self):
"Get all of the media needed for the letterhead"
# fonts and logo
ttfFile = os.path.join(media_path, 'BemboMTPro-Regular.ttf')
pdfmetrics.registerFont(TTFont("BemboMTPro", ttfFile))
ttfFile = os.path.join(media_path, 'BemboMTPro-Bold.ttf')
pdfmetrics.registerFont(TTFont("BemboMTPro-Bold", ttfFile))
ttfFile = os.path.join(media_path, 'DINPro-Regular.ttf')
pdfmetrics.registerFont(TTFont("DINPro", ttfFile))
ttfFile = os.path.join(media_path, 'DINPro-Bold.ttf')
pdfmetrics.registerFont(TTFont("DINPro-Bold", ttfFile))
# graphic standards colours
self.sfu_red = CMYKColor(0, 1, 0.79, 0.2)
self.sfu_grey = CMYKColor(0, 0, 0.15, 0.82)
self.sfu_blue = CMYKColor(1, 0.68, 0, 0.12)
# translate digits to old-style numerals (in their Bembo character positions)
self.digit_trans = {}
for d in range(10):
self.digit_trans[48+d] = chr(0xF643 + d)
self.sc_trans_bembo = {}
# translate letters to smallcaps characters (in their [strange] Bembo character positions)
for d in range(26):
if d<3: # A-C
offset = d
elif d<4: # D
offset = d+2
elif d<21: # E-U
offset = d+3
else: # V-Z
offset = d+4
self.sc_trans_bembo[65+d] = chr(0xE004 + offset)
self.sc_trans_bembo[97+d] = chr(0xE004 + offset)
示例4: __init__
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def __init__(self, filename, **kw):
self.allowSplitting = 1
apply(SimpleDocTemplate.__init__, (self, filename), kw)
pdfmetrics.registerFont(TTFont('arialuni', 'ARIALUNI.TTF'))
# Entries to the table of contents can be done either manually by
# calling the addEntry method on the TableOfContents object or automatically
# by sending a 'TOCEntry' notification in the afterFlowable method of
# the DocTemplate you are using. The data to be passed to notify is a list
# of three or four items countaining a level number, the entry text, the page
# number and an optional destination key which the entry should point to.
# This list will usually be created in a document template's method like
# afterFlowable(), making notification calls using the notify() method
# with appropriate data.
示例5: load_font
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def load_font(self):
cc = configer.Config()
freeserif_font = cc.get_font_path()
pdfmetrics.registerFont(TTFont("freeserif", freeserif_font))
示例6: _setup
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def _setup():
from reportlab.pdfbase import pdfmetrics, ttfonts
pdfmetrics.registerFont(ttfonts.TTFont("Vera", "Vera.ttf"))
pdfmetrics.registerFont(ttfonts.TTFont("VeraBd", "VeraBd.ttf"))
pdfmetrics.registerFont(ttfonts.TTFont("VeraIt", "VeraIt.ttf"))
pdfmetrics.registerFont(ttfonts.TTFont("VeraBI", "VeraBI.ttf"))
F = ['Times-Roman','Courier','Helvetica','Vera', 'VeraBd', 'VeraIt', 'VeraBI']
if sys.platform=='win32':
for name, ttf in [
('Adventurer Light SF','Advlit.ttf'),('ArialMS','ARIAL.TTF'),
('Arial Unicode MS', 'ARIALUNI.TTF'),
('Book Antiqua','BKANT.TTF'),
('Century Gothic','GOTHIC.TTF'),
('Comic Sans MS', 'COMIC.TTF'),
('Elementary Heavy SF Bold','Vwagh.ttf'),
('Firenze SF','flot.ttf'),
('Garamond','GARA.TTF'),
('Jagger','Rols.ttf'),
('Monotype Corsiva','MTCORSVA.TTF'),
('Seabird SF','seag.ttf'),
('Tahoma','TAHOMA.TTF'),
('VerdanaMS','VERDANA.TTF'),
]:
for D in ('c:\WINNT','c:\Windows'):
fn = os.path.join(D,'Fonts',ttf)
if os.path.isfile(fn):
try:
f = ttfonts.TTFont(name, fn)
pdfmetrics.registerFont(f)
F.append(name)
except:
pass
return F
示例7: try_load
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def try_load(self, default=None):
try:
pdfmetrics.registerFont(TTFont(self.name, self.filename))
return self.name
except:
return default
示例8: prepare_fonts
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def prepare_fonts():
global PREPARED_FONTS
if PREPARED_FONTS:
return
pdfmetrics.registerFont(TTFont('Montserrat', font('Montserrat-Regular.ttf')))
pdfmetrics.registerFont(TTFont('MontserratBold', font('Montserrat-Bold.ttf')))
pdfmetrics.registerFont(TTFont('MontserratItalic', font('Montserrat-Italic.ttf')))
pdfmetrics.registerFont(TTFont('MontserratBoldItalic', font('Montserrat-BoldItalic.ttf')))
pdfmetrics.registerFontFamily(
'Montserrat',
normal='Montserrat',
bold='MontserratBold',
italic='MontserratItalic',
boldItalic='MontserratBoldItalic'
)
pdfmetrics.registerFont(TTFont('NotoSans', font('NotoSans-Regular.ttf')))
pdfmetrics.registerFont(TTFont('NotoSansBold', font('NotoSans-Bold.ttf')))
pdfmetrics.registerFont(TTFont('NotoSansItalic', font('NotoSans-Italic.ttf')))
pdfmetrics.registerFont(TTFont('NotoSansBoldItalic', font('NotoSans-BoldItalic.ttf')))
pdfmetrics.registerFontFamily(
'NotoSans',
normal='NotoSans',
bold='NotoSansBold',
italic='NotoSansItalic',
boldItalic='NotoSansBoldItalic'
)
PREPARED_FONTS = True
示例9: pdf_write
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def pdf_write(generated_pdf_path):
"""
生成pdf
:return:
"""
# 增加的字体,支持中文显示,需要自行下载支持中文的字体
font_path = current_app.config.get("SIM_SUN")
pdfmetrics.registerFont(TTFont('SimSun', os.path.join(font_path, 'SimSun.ttf')))
styles = getSampleStyleSheet()
styles.add(ParagraphStyle(fontName='SimSun', name='SimSun', leading=20, fontSize=12))
data = list()
# 添加一段文字
paragraph = paragraph_model("测试添加一段文字")
data.append(paragraph)
data.append(PageBreak()) # 分页标识
# 添加table和图片
table = table_model()
data.append(table)
data.append(PageBreak()) # 分页标识
img = image_model()
data.append(img)
# 设置生成pdf的名字和编剧
pdf = SimpleDocTemplate(generated_pdf_path, rightMargin=0, leftMargin=0, topMargin=40, bottomMargin=0, )
# 设置pdf每页的大小
pdf.pagesize = (9 * inch, 10 * inch)
pdf.multiBuild(data)
return generated_pdf_path
示例10: test
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def test():
# only works if you have cirrect encodings on your box!
c = Canvas('test_japanese.pdf')
c.setFont('Helvetica', 30)
c.drawString(100,700, 'Japanese Font Support')
pdfmetrics.registerFont(CIDFont('HeiseiMin-W3','90ms-RKSJ-H'))
pdfmetrics.registerFont(CIDFont('HeiseiKakuGo-W5','90ms-RKSJ-H'))
# the two typefaces
c.setFont('HeiseiMin-W3-90ms-RKSJ-H', 16)
# this says "This is HeiseiMincho" in shift-JIS. Not all our readers
# have a Japanese PC, so I escaped it. On a Japanese-capable
# system, print the string to see Kanji
message1 = '\202\261\202\352\202\315\225\275\220\254\226\276\222\251\202\305\202\267\201B'
c.drawString(100, 675, message1)
c.save()
print('saved test_japanese.pdf')
## print 'CMAP_DIR = ', CMAP_DIR
## tf1 = CIDTypeFace('HeiseiMin-W3')
## print 'ascent = ',tf1.ascent
## print 'descent = ',tf1.descent
## for cid in [1,2,3,4,5,18,19,28,231,1742]:
## print 'width of cid %d = %d' % (cid, tf1.getCharWidth(cid))
encName = '90ms-RKSJ-H'
enc = CIDEncoding(encName)
print(message1, '->', enc.translate(message1))
f = CIDFont('HeiseiMin-W3','90ms-RKSJ-H')
print('width = %0.2f' % f.stringWidth(message1, 10))
#testing all encodings
## import time
## started = time.time()
## import glob
## for encName in _cidfontdata.allowedEncodings:
## #encName = '90ms-RKSJ-H'
## enc = CIDEncoding(encName)
## print 'encoding %s:' % encName
## print ' codeSpaceRanges = %s' % enc._codeSpaceRanges
## print ' notDefRanges = %s' % enc._notDefRanges
## print ' mapping size = %d' % len(enc._cmap)
## finished = time.time()
## print 'constructed all encodings in %0.2f seconds' % (finished - started)
示例11: __init__
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def __init__(self, args, margins):
pageWidth, pageHeight = reportlab.lib.pagesizes.__dict__[args.media]
if args.landscape:
pageWidth, pageHeight = reportlab.lib.pagesizes.landscape(
(pageWidth, pageHeight))
self.author = args.author
self.title = args.title
self.keywords = args.keywords
self.subject = args.subject
self.canvas = Canvas(args.output, pagesize=(pageWidth, pageHeight))
self.canvas.setCreator(self.appName)
if len(args.author) > 0:
self.canvas.setAuthor(args.author)
if len(args.title) > 0:
self.canvas.setTitle(args.title)
if len(args.subject) > 0:
self.canvas.setSubject(args.subject)
if len(args.keywords) > 0:
self.canvas.setKeywords(args.keywords)
self.fontSize = args.font_size
if args.font not in ('Courier'):
self.font = 'myFont'
pdfmetrics.registerFont(TTFont('myFont', args.font))
else:
self.font = args.font
self.kerning = args.kerning
self.margins = margins
self.leading = (args.extra_vertical_space + 1.2) * self.fontSize
self.linesPerPage = int(
(self.leading + pageHeight
- margins.top - margins.bottom - self.fontSize) / self.leading)
self.lppLen = len(str(self.linesPerPage))
fontWidth = self.canvas.stringWidth(
".", fontName=self.font, fontSize=self.fontSize)
self.lineNumbering = args.line_numbers
if self.lineNumbering:
margins.adjustLeft(fontWidth * (self.lppLen + 2))
contentWidth = pageWidth - margins.left - margins.right
self.charsPerLine = int(
(contentWidth + self.kerning) / (fontWidth + self.kerning))
self.top = pageHeight - margins.top - self.fontSize
self.filename = args.filename
self.verbose = not args.quiet
self.breakOnBlanks = args.break_on_blanks
self.encoding = args.encoding
self.pageNumbering = args.page_numbers
if self.pageNumbering:
self.pageNumberPlacement = \
(pageWidth / 2, margins.bottom / 2)
示例12: test
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def test():
# only works if you have cirrect encodings on your box!
c = Canvas('test_japanese.pdf')
c.setFont('Helvetica', 30)
c.drawString(100,700, 'Japanese Font Support')
pdfmetrics.registerFont(CIDFont('HeiseiMin-W3','90ms-RKSJ-H'))
pdfmetrics.registerFont(CIDFont('HeiseiKakuGo-W5','90ms-RKSJ-H'))
# the two typefaces
c.setFont('HeiseiMin-W3-90ms-RKSJ-H', 16)
# this says "This is HeiseiMincho" in shift-JIS. Not all our readers
# have a Japanese PC, so I escaped it. On a Japanese-capable
# system, print the string to see Kanji
message1 = '\202\261\202\352\202\315\225\275\220\254\226\276\222\251\202\305\202\267\201B'
c.drawString(100, 675, message1)
c.save()
print 'saved test_japanese.pdf'
## print 'CMAP_DIR = ', CMAP_DIR
## tf1 = CIDTypeFace('HeiseiMin-W3')
## print 'ascent = ',tf1.ascent
## print 'descent = ',tf1.descent
## for cid in [1,2,3,4,5,18,19,28,231,1742]:
## print 'width of cid %d = %d' % (cid, tf1.getCharWidth(cid))
encName = '90ms-RKSJ-H'
enc = CIDEncoding(encName)
print message1, '->', enc.translate(message1)
f = CIDFont('HeiseiMin-W3','90ms-RKSJ-H')
print 'width = %0.2f' % f.stringWidth(message1, 10)
#testing all encodings
## import time
## started = time.time()
## import glob
## for encName in _cidfontdata.allowedEncodings:
## #encName = '90ms-RKSJ-H'
## enc = CIDEncoding(encName)
## print 'encoding %s:' % encName
## print ' codeSpaceRanges = %s' % enc._codeSpaceRanges
## print ' notDefRanges = %s' % enc._notDefRanges
## print ' mapping size = %d' % len(enc._cmap)
## finished = time.time()
## print 'constructed all encodings in %0.2f seconds' % (finished - started)
示例13: drawOn
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def drawOn(self, canv, x, y, _sW=0):
if _sW and hasattr(self, 'hAlign'):
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT, TA_JUSTIFY
a = self.hAlign
if a in ('CENTER', 'CENTRE', TA_CENTER):
x = x + 0.5 * _sW
elif a in ('RIGHT', TA_RIGHT):
x = x + _sW
elif a not in ('LEFT', TA_LEFT):
raise ValueError("Bad hAlign value " + str(a))
height = 0
if HAS_MATPLOTLIB:
global fonts
canv.saveState()
canv.translate(x, y)
try:
(
width,
height,
descent,
glyphs,
rects,
used_characters,
) = self.parser.parse(
enclose(self.s), 72, prop=FontProperties(size=self.fontsize)
)
for ox, oy, fontname, fontsize, num, symbol_name in glyphs:
if not fontname in fonts:
fonts[fontname] = fontname
pdfmetrics.registerFont(TTFont(fontname, fontname))
canv.setFont(fontname, fontsize)
col_conv = ColorConverter()
rgb_color = col_conv.to_rgb(self.color)
canv.setFillColorRGB(rgb_color[0], rgb_color[1], rgb_color[2])
canv.drawString(ox, oy, chr(num))
canv.setLineWidth(0)
canv.setDash([])
for ox, oy, width, height in rects:
canv.rect(ox, oy + 2 * height, width, height, fill=1)
except:
# FIXME: report error
col_conv = ColorConverter()
rgb_color = col_conv.to_rgb(self.color)
canv.setFillColorRGB(rgb_color[0], rgb_color[1], rgb_color[2])
canv.drawString(0, 0, self.s)
canv.restoreState()
else:
canv.saveState()
canv.drawString(x, y, self.s)
canv.restoreState()
if self.label:
log.info('Drawing equation-%s' % self.label)
canv.bookmarkHorizontal('equation-%s' % self.label, 0, height)
示例14: generate_sheet
# 需要导入模块: from reportlab.pdfbase import pdfmetrics [as 别名]
# 或者: from reportlab.pdfbase.pdfmetrics import registerFont [as 别名]
def generate_sheet(makemeahanzi_path, working_dir, title, guide, stroke_order_color):
if len(title) > MAX_TITLE_LENGTH:
raise GenException('Title length exceeded (' + str(len(title)) + \
'/' + str(MAX_TITLE_LENGTH) + ')');
character_infos = [];
words = [];
character_infos = load_data_from_json_file(working_dir, CHARACTERS_FILE, \
object_to_character_info);
words = load_data_from_json_file(working_dir, WORDS_FILE, Word.fromJSON);
words = filter_out_words_with_empty_definition(words);
c = canvas.Canvas(os.path.join(working_dir, SHEET_FILE), PAGE_SIZE);
pdfmetrics.registerFont(TTFont(FONT_NAME, FONT_NAME + '.ttf'));
words_with_spanning_translation = get_spanning_translations( \
character_infos, words);
draw_header(c, title, HEADER_FONT_SIZE, \
PAGE_SIZE[1]-HEADER_PADDING);
for i in range(len(character_infos)):
i_mod = i % CHARACTERS_PER_PAGE;
page_number = int(i / CHARACTERS_PER_PAGE + 1);
if i != 0 and i_mod == 0:
draw_footer(c, FOOTER_FONT_SIZE, y-CHARACTER_ROW_HEIGHT - \
GRID_OFFSET/2);
draw_page_number(c, i / CHARACTERS_PER_PAGE, PAGE_NUMBER_FONT_SIZE);
draw_words(c, character_infos, words, page_number-1, \
words_with_spanning_translation);
c.showPage();
draw_header(c, title, HEADER_FONT_SIZE, \
PAGE_SIZE[1]-HEADER_PADDING);
info = character_infos[i];
create_character_svg(working_dir, info);
create_radical_svg(makemeahanzi_path, working_dir, info);
create_stroke_order_svgs(working_dir, info, stroke_order_color);
convert_svgs_to_pngs(working_dir);
y = FIRST_CHARACTER_ROW_Y-i_mod*CHARACTER_ROW_HEIGHT;
draw_character_row(working_dir, c, info, y, guide);
delete_files(working_dir, '.*\.svg');
delete_files(working_dir, '.*\.png');
y = PAGE_SIZE[1]-HEADER_PADDING-GRID_OFFSET/2 - \
(CHARACTERS_PER_PAGE-1)*CHARACTER_ROW_HEIGHT;
# TODO: extract
draw_footer(c, FOOTER_FONT_SIZE, y-CHARACTER_ROW_HEIGHT - \
GRID_OFFSET/2);
draw_page_number(c, page_number, PAGE_NUMBER_FONT_SIZE);
draw_words(c, character_infos, words, page_number, \
words_with_spanning_translation);
c.setTitle(title);
c.showPage();
c.save();