PDF aanmaken met Python
Op deze pagina:
Voor het maken van pdfs kun je gebruik maken van fpdf, deze moet je eerst installeren:
pip install fpdf
De basis opdrachten voor het maken van een pdf
#!/usr/bin/env python3
from fpdf import FPDF
titel = 'mijn pdf titel'
class PDF(FPDF):
def header(self):
# een afbeelding als logo (plaatje,x,y,breedte,hoogte)
# als je alleen de breedte opgeeft,
# dan wordt de hoogte automatisch uitgerekend naar verhouding
self.image('plaatje.png', 10, 8, 25)
# lettertype
self.set_font('helvetica', 'B', 20)
# breedte en positie van de titel berekenen
titel_breedte = self.get_string_width(titel) + 6
pdf_breedte = self.w
self.set_x((pdf_breedte - titel_breedte) / 2)
# kleuren voor het titelblok instellen
self.set_draw_color(0, 80, 180) # kleur van de omlijning
self.set_fill_color(230, 230, 0) # achtergrondkleur
self.set_text_color(220, 50, 50) # tekstkleur
# dikte van de omlijning
self.set_line_width(1)
# titel
self.cell(titel_breedte, 10, titel, border=True, ln=True, align='C', fill=True)
# nieuwe regel
self.ln(20)
def footer(self):
# positie van de footer
self.set_y(-15)
# lettertype instellen
self.set_font('helvetica', 'I', 10)
# tekstkleur instellen
self.set_text_color(169, 169, 169)
# pagina nummer
self.cell(0, 10, f'Pagina {self.page_no()} van {{nb}}', align='C')
def koptekst(self, kop, link):
# link instellen
self.set_text_color(0, 170, 0)
self.set_link(link)
# lettertype instellen
self.set_font('helvetica', 'B', 12)
# achtergrondkleur
self.set_fill_color(175, 255, 181)
# tekst kop
self.cell(0, 10, kop, ln=True, fill=True)
# nieuwe regel
self.ln()
def inhoud_toevoegen(self):
# meerdere regels genereren:
txt = ''
for i in range(1, 41):
# pdf.cell(0, 12, f'Dit is regel {i}', ln=True)
txt = txt + f'Dit is regel {i}\n'
self.set_font('helvetica', '', 14)
# tekst invoegen
self.multi_cell(0, 5, txt)
# nieuwe regel toevoegen
self.ln()
# einde van de tekst
self.set_font('times', 'I', 12)
self.cell(0, 5, 'einde van de tekst')
# een PDF object aanmaken
# layout: 'P' (portret=staand) of 'L' (liggend)
# meet eenheid: 'mm', 'cm' of 'in'
# formaat: A3, A4, A5, letter, legal of
# zelf maten opgeven, bijvoorbeeld: (200,300)
pdf = PDF('P', 'mm', 'A4')
# pdf metadata toevoegen
# metadata zijn o.a. te zien bij de eigenschappen van de pdf in Adobe
pdf.set_title('De titel van deze pdf')
pdf.set_author('De auteur van deze pdf')
# links
web_link = 'https://web2.nl'
kop_link = pdf.add_link()
# totaal aantal pagina's
pdf.alias_nb_pages()
# pagina overloop instellen
pdf.set_auto_page_break(auto=True, margin=20)
# een pagina toevoegen
pdf.add_page()
# 'achtergrond' afbeelding instellen (= gewoon een afbeelding)
# x = -0.5, w = pdf.w + 1 om te zorgen dat dit de volle breedte inneemt
pdf.image('achtergrond.jpg', x=-0.5, w=pdf.w + 1)
# Links toevoegen
pdf.cell(0, 10, 'website', ln=True, link=web_link)
pdf.cell(0, 10, 'inhoud', ln=True, link=kop_link)
# lettertype instellen
# fonts: 'times', 'courier', 'helvetica', 'symbol', 'zpfdingbats'
# stijl: 'B' (vet), 'U' (onderstrepen), 'I' (schuin), '' (normaal),
# combineren mag ook, bijvoorbeeld: 'BU'
# lettergrootte in cijfers opgeven
pdf.set_font('helvetica', '', 16)
# de tekstkleur kun je ook opgeven
pdf.set_text_color(200, 30, 70)
# tekst toevoegen
# in een cell
# w = breedte in de meet eenheid die je eerder zelf hebt opgegeven (mm)
# een breedte van 0 is de volle breedte van de pdf
# h = hoogte in de meet eenheid die je eerder zelf hebt opgegeven (mm)
# tekst = de tekst die je wilt hebben in je pdf
# ln = True of False: wel of niet naar een nieuwe regel na de tekst
# border = True of False: wel of geen omlijning om deze regel (cell)
pdf.cell(50, 20, 'Hallo wereld!', ln=True, border=True)
pdf.cell(100, 20, 'Dit staat op een nieuwe regel')
# een pagina toevoegen
pdf.add_page()
# inhoud voor de pdf toevoegen
pdf.koptekst('Dit is mijn eigen pdf', kop_link)
pdf.inhoud_toevoegen()
# pdf opslaan, (pad en) naam van het bestand opgeven
pdf.output('naam_voor_het_pdf_bestand.pdf')