#-----PDF SECTION----------------------------------------------------------------------------
from reportlab.lib.pagesizes import letter, mm
from reportlab.lib.units import inch
from reportlab.pdfgen import canvas
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib import colors
from reportlab.platypus import Paragraph, SimpleDocTemplate, Spacer, Image, PageBreak
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
if "roboto-bold" or "roboto-regular" not in [fam.lower() for fam in pdfmetrics.getRegisteredFontNames()]:
pdfmetrics.registerFont(TTFont("Roboto-Bold", "fonts\Roboto\Roboto-Bold.ttf"))
pdfmetrics.registerFont(TTFont("Roboto-Regular", "fonts\Roboto\Roboto-Regular.ttf"))
else:
print("Roboto-Bold/Roboto-Regular fonts have already been registered.")
styles = getSampleStyleSheet()
# footer style
footer_style = ParagraphStyle(
name='footer',
parent=styles['Normal'],
fontName='Helvetica',
fontSize=8, # Yazı boyutunu küçülttük
textColor=colors.lightgrey,
alignment=0, # Sola hizalama için değeri 0 olarak ayarladık
)
# footer text
footer_text = 'Created by HepsiBurada Price Tracker App'
footer = Paragraph(footer_text, footer_style)
# header style
header_style = ParagraphStyle(
name='header',
parent=styles['Normal'],
fontName='Helvetica-Oblique',
fontSize=10,
textColor=colors.black,
alignment=1,
)
# cover page style
cover_style = ParagraphStyle(
name='cover',
parent=styles['Normal'],
fontName='Roboto-Bold',
textColor=colors.black,
alignment=1
)
# side header style
side_header_style = ParagraphStyle(
name='side_header',
parent=styles['Normal'],
fontName='Roboto-Bold',
fontSize=18,
textColor=colors.black,
leftIndent=-63,
topPadding=0,
spaceBefore=-20,
spaceAfter=15
)
# result style
result_style = ParagraphStyle(
name='result',
parent=styles['Normal'],
fontName='Roboto-Regular',
fontSize=12,
textColor=colors.black,
leftIndent=-63,
spaceAfter=14
)
def generate_pdf(pdf_file, content, footer_style, header_style, cover_style, result_style, side_header_style):
doc = SimpleDocTemplate(pdf_file, pagesize=(215.9 * mm, 279.4 * mm))
# cover page
cover_text = '<font size="30" color="black">Pınar Süt 1lt Analysis Results</font> <br/><br/><br/><br/><br/><br/>'
cover = Paragraph(cover_text, cover_style)
# İstediğiniz görseli ekleyin
image = Image('cover_template_for_pdf/cover_template.jpg', 7 * inch, 6.5 * inch)
# page content
content = [cover, Spacer(1, 0.5 * inch), image, PageBreak()] + content
def page_number(canvas, doc):
page_num = canvas.getPageNumber()
canvas.setFillColorRGB(0.2, 0.2, 0.2)
text = "{}".format(page_num)
canvas.setFont("Helvetica", 10) # Sayfa numarası yazı boyutu
canvas.drawCentredString(doc.width / 2 + doc.leftMargin, 0.5 * inch, text)
canvas.setFont("Helvetica", 8) # Alt bilgi yazı boyutu
canvas.setFillColorRGB(191/255, 87/255, 0) # Turuncu rengi ayarla
footer_width = canvas.stringWidth(footer_text, "Helvetica", 8)
x = doc.leftMargin - 20 * mm # Sola yasla ve sol taraftan 10 mm boşluk bırak
canvas.drawString(x, 0.3 * inch, footer_text)
def onFirstPage(canvas, doc):
canvas.saveState()
page_number(canvas, doc)
# gray line
canvas.setStrokeColor(colors.orange)
canvas.setLineWidth(1)
canvas.rect(0, 0.75 * inch, doc.pagesize[0], 1, fill=True, stroke=False)
canvas.restoreState()
def onLaterPages(canvas, doc):
canvas.saveState()
page_number(canvas, doc)
# gray line
canvas.setStrokeColor(colors.orange)
canvas.setLineWidth(1)
canvas.rect(0, 0.75 * inch, doc.pagesize[0], 1, fill=True, stroke=False)
canvas.restoreState()
doc.build(content, onFirstPage=onFirstPage, onLaterPages=onLaterPages)
return pdf_file
subheading1="1. Summary information"
Searched_product=f"Searched product: {search_term}"
Seller_offering_the_lowest_price_for_the_searched_product=f"Seller offering the lowest price for the searched product: {product['seller']}"
Link_of_the_searched_product=f"Link of the searched product: {product['url'][0]}"
Duration_of_tracking_the_product=f"Duration of tracking the product:{tracking_days}"
subheading2="2. Graphics"
# Add the content to the existing PDF
content_list = [Paragraph(subheading1, side_header_style),
Paragraph(Searched_product,result_style),
Paragraph(Seller_offering_the_lowest_price_for_the_searched_product,result_style),
Paragraph(Link_of_the_searched_product,result_style),
Paragraph(Duration_of_tracking_the_product,result_style),
PageBreak(),
Paragraph(subheading2, side_header_style)]
#Image(lowest_highest_prices_filename, width=500, height=250)
generate_pdf
("ornek.pdf",content_list,footer_style,header_style,cover_style,result_style,side_header_style)
你好朋友,我无法将侧标题(摘要信息和图形)移动到页面顶部。其实我在side header style里用了topPadding=0, spaceBefore=-20这两个参数,但是没有用。两页的交界处出现一条灰色粗线。我认为问题可能出在它身上,但我也无法消除它。我该如何解决这个问题?
问题: