gpt4 book ai didi

python - 如何在 python reportlab pdf 生成中使用十六进制颜色值

转载 作者:行者123 更新时间:2023-12-01 01:41:27 25 4
gpt4 key购买 nike

我正在尝试读取一些 py 文件和其他 doc 文件来生成多页 pdf 文档。我正在尝试使用 SimpleDocTemplate 而不是 Canvas 来完成此操作。现在我尝试用十六进制值给文本着色。我尝试了以下方法:

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate
from reportlab.platypus.para import Paragraph
from reportlab.lib.styles import getSampleStyleSheet

doc_content = []
styles=getSampleStyleSheet()

doc = SimpleDocTemplate("form_letter.pdf",pagesize=letter,
rightMargin=72,leftMargin=72,
topMargin=72,bottomMargin=18)

titleFormat = '<font size="16" name="Helvetica" color="#FF8100"><b><i>%s</i></b></font>'

def generateDoc(docName):
paraTitle = Paragraph(titleFormat % 'Title', styles["Normal"])
doc_content.append(paraTitle)
doc.build(doc_content)

generateDoc("temp.pdf")

但这给了我错误

AttributeError: module 'reportlab.lib.colors' has no attribute '#FF8100'

我也尝试了0xFF8100,但它给出了相同的错误:

AttributeError: module 'reportlab.lib.colors' has no attribute '0xFF8100'

当我使用一些命名颜色(例如red)时,它工作得很好。如何使用十六进制颜色值?

最佳答案

如果您需要在 pdf 中使用不同颜色的文本,最好创建自定义样式表。
您可以将十六进制代码值传递给 def HexColor(val, htmlOnly=False, hasAlpha=False) :

from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate
from reportlab.platypus.para import Paragraph
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

doc_content = []
styles = getSampleStyleSheet()

#creating custom stylesheet
styles.add(ParagraphStyle(name='Content',
fontFamily='Helvetica',
fontSize=8,
textColor=colors.HexColor("#FF8100")))

doc = SimpleDocTemplate("form_letter.pdf", pagesize=letter,
rightMargin=72, leftMargin=72,
topMargin=72, bottomMargin=18)

#using a sample text here
titleFormat = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."


def generateDoc(docName):
paraTitle = Paragraph(titleFormat, styles["Content"])
doc_content.append(paraTitle)
doc.build(doc_content)


generateDoc("temp.pdf")

关于python - 如何在 python reportlab pdf 生成中使用十六进制颜色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51843314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com