JazzCore / python-pdfkit

Wkhtmltopdf python wrapper to convert html to pdf
MIT License
1.99k stars 330 forks source link

Header and Footer not Displaying in PDF Output #258

Open VirajPoriya2202 opened 9 months ago

VirajPoriya2202 commented 9 months ago

Issue Description: I am using the pdfkit library to convert HTML content to a PDF file with specified header and footer HTML. However, the header and footer are not showing up in the generated PDF.Also, it is not working when I pass HTML local paths in 'header-html' and 'footer-html' options.

Code Snippet:



import pdfkit

def convert_html_to_pdf(html_content, output_pdf, header_html, footer_html):
    options = {
        'page-size': 'A4',
        'no-images': '',
        'margin-top': '15mm',
        'margin-right': '15mm',
        'margin-bottom': '15mm',
        'margin-left': '15mm',
        'header-html': header_html,
        'footer-html': footer_html,
    }

    pdfkit.from_string(html_content, output_pdf, options=options)

if __name__ == "__main__":
    # Dummy HTML content
    html_content = """
    <!DOCTYPE html>
    <html>
    <head>
        <title>Sample HTML to PDF</title>
    </head>
    <body>
        <h1>Hello, this is the main content of the page!</h1>
        <p>This is a sample HTML content.</p>
    </body>
    </html>
    """

    # Dummy header HTML content
    header_html = """
    <!DOCTYPE html>
    <html>
    <head>
        <title>Header</title>
    </head>
    <body>
        <header>
            <h2>This is the header of the page</h2>
        </header>
    </body>
    </html>
    """

    # Dummy footer HTML content
    footer_html = """
    <!DOCTYPE html>
    <html>
    <head>
        <title>Footer</title>
    </head>
    <body>
        <footer>
            <p>This is the footer of the page</p>
        </footer>
    </body>
    </html>
    """

    # Output PDF file
    output_pdf = "output_file.pdf"

    # Convert HTML to PDF
    convert_html_to_pdf(html_content, output_pdf, header_html, footer_html)

    print(f"PDF generated: {output_pdf}")
BRGustavo commented 8 months ago

Hello, I'm facing the same issue when adding header elements to the generated PDF files. The simplest way I found was to add the header directly in the HTML and control it using the CSS @media property.

@media print {
    #header {
        position: fixed;
        top: 0; 
        width: 100%;
    }
}
br-bit3194 commented 7 months ago

Getting the same issue. Tried giving footer.html path as well as the footer_str. But still nothing is coming on the footer.

HichamDz38 commented 2 months ago

problem solved here: https://stackoverflow.com/questions/34274637/pdfkit-headers-and-footers pdfkit require .html files as header/footer, so making temp files will solve the problem it's not the perfect solution, but it's how it will make it work