How to choose where to save the PDF file generated (Python and FPDF)

Question:

I am working on a project that requires this function to save a previous processed text as a PDF. And it has been successful.
Though, i want to prompt a "save as…" for the user to pick where can he save the PDF generated, i have tried with I,D,F,S that is on the documentation of the library, but to no avail.

#Text to PDF function
def textPDF(text):
    a4=210
    chW=2.45
    wTex=a4/chW
    pdf = FPDF(orientation='P', unit='mm', format='A4')  
    pdf.set_auto_page_break(True, 10)
    pdf.add_page() 
    pdf.set_font(family="Arial", size=15) 
    splitted = text.split('.')
    
    for line in splitted:
        lines = textwrap.wrap(line, wTex)
        if len(lines) == 0:
            pdf.ln()
        for dot in lines:
            pdf.cell(0, 5.5, dot, ln=1)

    pdf.output("Summary.pdf") 
Asked By: TheMailOfWork

||

Answers:

All you need to do is specify the directory in pdf.output function as well. Here’s the modified function:

from fpdf import FPDF
import textwrap

def textPDF(text, dest):
    a4=210
    chW=2.45
    wTex=a4/chW
    pdf = FPDF(orientation='P', unit='mm', format='A4')  
    pdf.set_auto_page_break(True, 10)
    pdf.add_page() 
    pdf.set_font(family="Arial", size=15) 
    splitted = text.split('.')
        for line in splitted:
        lines = textwrap.wrap(line, wTex)
        if len(lines) == 0:
            pdf.ln()
        for dot in lines:
            pdf.cell(0, 5.5, dot, ln=1)
    pdf.output(dest)

Note that the directory that you are saving the file needs to exist, otherwise pdf.output will throw FileNotFoundError

Usage:

textPDF("hi", "Summary.pdf")
textPDF("hi", "hello/Summary.pdf")
textPDF("hi", "hello\Summary.pdf")

# use os.path.join to ensure the same function works on multiple OSs
import os  # Alternatively you can use pathlib as well
textPDF("hi", os.path.join("hello", "Summary.pdf"))
Answered By: Lee Kai Xuan
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.