
# django-pikpdf - propper html to pdf generator

django-pikpdf is a Django app to generate pdfs from html templates.
This app will capture the html from a template and convert it to a pdf file 
with all styles in tact - just like you see it in the browser

Produced by ISO/SEC27001 certified software development company - MB Pikutis

Generator method returns htp responce which you can directly return to screen and file bytes, if you want to attach file to email, or return different response

This generator **does not rely on xhtml2pdf**

Generator uses api on www.pikutis.lt site. No information sent to api is stored longer than required for processing. 

To obtain API key, use contact form in the site.

## Quick start


1. Add "django-pikpdf" to your INSTALLED_APPS setting like this::

    ```
    INSTALLED_APPS = [
        ...,
        "django_pikpdf",
    ]

2. Add the following settings to your settings.py:
    
    ```
    PIKUTIS_API_KEY=os.environ.get("PIKUTIS_API_KEY", None) # can be obtained from https://www.pikutis.lt for free
    SITE_URL = os.environ.get("SITE_URL", "https://www.pikutis.lt") # your website url
    
2. Include conversion method get_document_pdf_response and django render to string as so:

    ```
    from django_pikpdf.converter import get_document_pdf_response
    from django.template.loader import render_to_string

3. Include class to set params for your pdf printing
    ```
    from django_pikpdf.controllers.api import PdfApiParams

4. Use the parameters and method to convert your html to pdf and return a response:

    ```
    pdf_api_params:PdfApiParams = PdfApiParams()
    pdf_api_params.display_header_footer = True
    pdf_api_params.print_background = False
    pdf_api_params.auth_token_name="TokenName" <-- Used to authenticate all requests for protected resources
    pdf_api_params.auth_token_value="TokenValue" <-- Used to authenticate all requests for protected resources
    http_response, file_bytes = get_document_pdf_response(html, "test.pdf", pdf_api_params)
    # HTTP response is a response object which will display pdf in browser screen
    # file_bytes is the pdf file buffer, which you can i.e. attach to email
    return http_response

Possible parameters for PdfApiParams class:
    
    ```
    display_header_footer:bool = False  - Display header and footer
    format:str = FORMAT_CHOICES["A4"] - Page format
    landscape:bool = False - Landscape mode
    print_background:bool = False - Print background
    prefer_css_page_size:bool = True - Use CSS page size
    scale:str = 1.0 - Scale
    margin_top:int = 0 - Top margin
    margin_bottom:int = 0 - Bottom margin
    margin_left:int = 0 - Left margin
    margin_right:int = 0 - Right margin
    auth_token_name:str = None - Token name for authentication
    auth_token_value:str = None - Token value for authentication

That's it! You can now convert your html to pdf and return it as a response.
