我正在尝试生成多页 pdf 文档,读取一些py文件和其他 doc 文件。我正在尝试用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")
Run Code Online (Sandbox Code Playgroud)
但这给了我错误
AttributeError: module 'reportlab.lib.colors' has no attribute '#FF8100'
Run Code Online (Sandbox Code Playgroud)
我也尝试过0xFF8100,但它给出了同样的错误:
AttributeError: module 'reportlab.lib.colors' has no attribute '0xFF8100'
Run Code Online (Sandbox Code Playgroud)
当我使用一些命名颜色时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")
Run Code Online (Sandbox Code Playgroud)