python ReportLab
14738 단어 python3.6
컨디션
・Windows 10
・python 3.6.4
・reportlab 3.5.19
설치 방법 pip install ReportLab
PDF 작성 from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, portrait
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.units import mm
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
from reportlab.platypus import Table
from reportlab.platypus import TableStyle
from reportlab.lib import colors
import webbrowser
class BasePdfView:
def __init__(self):
self.file_name = 'HelloWorld.pdf'
# PDF作成 ここではファイル名、サイズ(A4), 開始位置を指定
self.c = canvas.Canvas(self.file_name, pagesize=portrait(A4), bottomup=False)
# フォントサイズ
self.font_size = 15
# フォント登録 日本語を指定
pdfmetrics.registerFont(UnicodeCIDFont('HeiseiMin-W3'))
self.c.setFont('HeiseiMin-W3', 20)
PDF 쓰기
텍스트
그릴 좌표 지정하기 width, height = A4 # A4用紙のサイズ
self.c.drawCentredString(width / 2, height / 5, 'タイトル')
테이블
테이블을 만들려면 2D 목록을 준비하고 Table 작성 def draw(self):
data2 = [
["1", "2", "3", "4", "5"],
["11", "12", "13", "14", "15"],
["21", "22", "23", "24", "25"],
["row1", "row2", "row3", "row4", "row5"],
]
table = Table(data2)
테이블 형식 작성
TableStyle을 사용하여 설정할 형식만 설정합니다.
아래의 소개 이외에 또 많은 것이 있다 table_style = TableStyle([
# テキストの色
('TEXTCOLOR', (0, 0), (-1, -1), colors.red),
# 背景色
('BACKGROUND', (0, 0), (-1, -1), colors.azure),
# 罫線 太さ0.25
('GRID', (0, 0), (-1, -1), 0.25, colors.grey),
# 四角形 太さ0
('BOX', (0, 0), (-1, -1), 0, colors.black),
# 文字の大きさ
("FONTSIZE", (0, 0), (-1, -1), 10),
# 下方向のパディング
("BOTTOMPADDING", (0, 0), (-1, -1), 10),
])
table.setStyle(
table_style
)
# キャンバスに設定
table.wrapOn(self.c, 20*mm, 20*mm)
table.drawOn(self.c, 20*mm, 20*mm)
맨 위 색상만 변경
테이블 형식을 깨끗하게 하기 위해 머리에만 색상을 추가하는 경우 # 背景色
('BACKGROUND', (0, 1), (-1, -2), colors.white),
# 背景色 先頭
('BACKGROUND', (0, -1), (-1, -1), colors.azure),
테이블 색상 교체 수정
행당 설정 색상 변경
table_이후 스타일에 추가할 때dd를 사용할 수 있습니다.
추가할 때 하나씩 건네줘야 돼요. def set_colorful(self, table_style, data):
"""
テーブルの色を交互に設定
:param table_style:
:param data:
:return:
"""
# サイズを取得
row_size = len(data)
for i in range(0, row_size - 1):
tuple_range_from = (0, i)
tuple_range_to = (-1, i)
if i % 2 == 0:
table_style.add('BACKGROUND', tuple_range_from, tuple_range_to, colors.green)
else:
table_style.add('BACKGROUND', tuple_range_from, tuple_range_to, colors.red)
return table_style
마지막 출력 파일 # Canvasに書き込み
self.c.showPage()
# ファイル保存
self.c.save()
Reference
이 문제에 관하여(python ReportLab), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takoyan/items/4788cd83b8575830c9aa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install ReportLab
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, portrait
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.units import mm
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
from reportlab.platypus import Table
from reportlab.platypus import TableStyle
from reportlab.lib import colors
import webbrowser
class BasePdfView:
def __init__(self):
self.file_name = 'HelloWorld.pdf'
# PDF作成 ここではファイル名、サイズ(A4), 開始位置を指定
self.c = canvas.Canvas(self.file_name, pagesize=portrait(A4), bottomup=False)
# フォントサイズ
self.font_size = 15
# フォント登録 日本語を指定
pdfmetrics.registerFont(UnicodeCIDFont('HeiseiMin-W3'))
self.c.setFont('HeiseiMin-W3', 20)
PDF 쓰기
텍스트
그릴 좌표 지정하기 width, height = A4 # A4用紙のサイズ
self.c.drawCentredString(width / 2, height / 5, 'タイトル')
테이블
테이블을 만들려면 2D 목록을 준비하고 Table 작성 def draw(self):
data2 = [
["1", "2", "3", "4", "5"],
["11", "12", "13", "14", "15"],
["21", "22", "23", "24", "25"],
["row1", "row2", "row3", "row4", "row5"],
]
table = Table(data2)
테이블 형식 작성
TableStyle을 사용하여 설정할 형식만 설정합니다.
아래의 소개 이외에 또 많은 것이 있다 table_style = TableStyle([
# テキストの色
('TEXTCOLOR', (0, 0), (-1, -1), colors.red),
# 背景色
('BACKGROUND', (0, 0), (-1, -1), colors.azure),
# 罫線 太さ0.25
('GRID', (0, 0), (-1, -1), 0.25, colors.grey),
# 四角形 太さ0
('BOX', (0, 0), (-1, -1), 0, colors.black),
# 文字の大きさ
("FONTSIZE", (0, 0), (-1, -1), 10),
# 下方向のパディング
("BOTTOMPADDING", (0, 0), (-1, -1), 10),
])
table.setStyle(
table_style
)
# キャンバスに設定
table.wrapOn(self.c, 20*mm, 20*mm)
table.drawOn(self.c, 20*mm, 20*mm)
맨 위 색상만 변경
테이블 형식을 깨끗하게 하기 위해 머리에만 색상을 추가하는 경우 # 背景色
('BACKGROUND', (0, 1), (-1, -2), colors.white),
# 背景色 先頭
('BACKGROUND', (0, -1), (-1, -1), colors.azure),
테이블 색상 교체 수정
행당 설정 색상 변경
table_이후 스타일에 추가할 때dd를 사용할 수 있습니다.
추가할 때 하나씩 건네줘야 돼요. def set_colorful(self, table_style, data):
"""
テーブルの色を交互に設定
:param table_style:
:param data:
:return:
"""
# サイズを取得
row_size = len(data)
for i in range(0, row_size - 1):
tuple_range_from = (0, i)
tuple_range_to = (-1, i)
if i % 2 == 0:
table_style.add('BACKGROUND', tuple_range_from, tuple_range_to, colors.green)
else:
table_style.add('BACKGROUND', tuple_range_from, tuple_range_to, colors.red)
return table_style
마지막 출력 파일 # Canvasに書き込み
self.c.showPage()
# ファイル保存
self.c.save()
Reference
이 문제에 관하여(python ReportLab), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takoyan/items/4788cd83b8575830c9aa
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
width, height = A4 # A4用紙のサイズ
self.c.drawCentredString(width / 2, height / 5, 'タイトル')
def draw(self):
data2 = [
["1", "2", "3", "4", "5"],
["11", "12", "13", "14", "15"],
["21", "22", "23", "24", "25"],
["row1", "row2", "row3", "row4", "row5"],
]
table = Table(data2)
table_style = TableStyle([
# テキストの色
('TEXTCOLOR', (0, 0), (-1, -1), colors.red),
# 背景色
('BACKGROUND', (0, 0), (-1, -1), colors.azure),
# 罫線 太さ0.25
('GRID', (0, 0), (-1, -1), 0.25, colors.grey),
# 四角形 太さ0
('BOX', (0, 0), (-1, -1), 0, colors.black),
# 文字の大きさ
("FONTSIZE", (0, 0), (-1, -1), 10),
# 下方向のパディング
("BOTTOMPADDING", (0, 0), (-1, -1), 10),
])
table.setStyle(
table_style
)
# キャンバスに設定
table.wrapOn(self.c, 20*mm, 20*mm)
table.drawOn(self.c, 20*mm, 20*mm)
# 背景色
('BACKGROUND', (0, 1), (-1, -2), colors.white),
# 背景色 先頭
('BACKGROUND', (0, -1), (-1, -1), colors.azure),
def set_colorful(self, table_style, data):
"""
テーブルの色を交互に設定
:param table_style:
:param data:
:return:
"""
# サイズを取得
row_size = len(data)
for i in range(0, row_size - 1):
tuple_range_from = (0, i)
tuple_range_to = (-1, i)
if i % 2 == 0:
table_style.add('BACKGROUND', tuple_range_from, tuple_range_to, colors.green)
else:
table_style.add('BACKGROUND', tuple_range_from, tuple_range_to, colors.red)
return table_style
# Canvasに書き込み
self.c.showPage()
# ファイル保存
self.c.save()
Reference
이 문제에 관하여(python ReportLab), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takoyan/items/4788cd83b8575830c9aa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)