Metadata-Version: 2.1
Name: carol-pdf-generator
Version: 0.1.11
Summary: A library to create PDF Files from a set of image files/base64 data
Home-page: https://github.com/gzamboni/carol_pdf_generator
Author: Giovani Zamboni
Author-email: giovani.zamboni@totvs.com
License: UNKNOWN
Keywords: carol_pdf_generator
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Requires-Dist: python-datauri (==0.2.9)
Requires-Dist: reportbro-fpdf (==1.7.10)
Requires-Dist: opencv-contrib-python-headless
Requires-Dist: scikit-image
Requires-Dist: numpy
Requires-Dist: imutils
Requires-Dist: pypdf2

carol\_pdf\_generator
=====================

carol\_pdf\_generator is a Python library for creating PDF Files from
images (png, jpg) file. Base64 encoded is also supported.

Installation
------------

Use the package manager `pip <https://pip.pypa.io/en/stable/>`__ to
install foobar.

.. code:: bash

    pip install carol_pdf_generator

Usage
-----

.. code:: python

    from carol_pdf_generator import get_from_file_list, get_from_base64_list
    from urllib import request

    file_list = [
        'jpgfile.jpg',
        'pngfile.png'
    ]

    base64_images.append(request.urlopen('https://pastebin.com/raw/k3VZeNHW').read().decode('latin1'))
    base64_images.append(request.urlopen('https://pastebin.com/raw/CaZJ7n6s').read().decode('latin1'))
    base64_images.append(request.urlopen('https://pastebin.com/raw/7Asb2iMJ').read().decode('latin1'))

    from_file = get_from_file_list(file_list)

    base64 = get_from_base64_list(base64_images, 'test.pdf')  # Returns the PDF base64 encoded data uri and saves the PDF to test.pdf

Document Scan and auto rotation
-------------------------------

This library can automatic try to identify paper documents and rotate the image to better fits the PDF Document.

.. code:: python

    base64_jpg = str(DataURI.make(
            mimetype='image/jpeg',
            charset='latin1',
            base64=True,
            data=request.urlopen('https://raw.githubusercontent.com/danielgatis/docscan/master/examples/doc-1.jpg').read().decode('latin-1')
        ))

    base64_png_2 = str(DataURI.make(
            mimetype='image/png',
            charset='latin1',
            base64=True,
            data=request.urlopen('https://raw.githubusercontent.com/danielgatis/docscan/master/examples/doc-2.png').read().decode('latin-1')
        ))

    base64_jpg_3 = str(DataURI.make(
        mimetype='image/jpeg',
        charset='latin1',
        base64=True,
        data=request.urlopen('https://raw.githubusercontent.com/danielgatis/docscan/master/examples/doc-3.jpg').read().decode('latin-1')
    ))

    base64_images = [
        base64_jpg,
        base64_png_2,
        base64_jpg_3
    ]

    # Returns the PDF base64 encoded data uri and saves the PDF to test.pdf, correcting the document geometry and auto rotating the images
    pdf = get_from_base64_list(base64_images, auto_rotate=True, scan_docs=True, output_file="test.pdf")

Merging PDF and images
----------------------

This library you can create a PDF file merging PDF, JPEG and PNG files. Just use merge_pdfs() function using a List() of base64 encoded files as parameter.

.. code:: python

    from carol_pdf_generator.carol_pdf_generator import merge_pdfs
    files = [
        base64_jpg,
        DataURI.from_file("test.pdf"),
        base64_jpg1,
        DataURI.from_file("test2.pdf"),
        base64_jpg2,
        DataURI.from_file("test3.pdf")
    ]

    data = DataURI(merge_pdfs(files))
    b = BytesIO(data.data) ## Some random BytesIO Object
    with open("test333.pdf", "wb") as f:
        f.write(b.getbuffer())

Contributing
------------

Pull requests are welcome. For major changes, please open an issue first
to discuss what you would like to change.

Please make sure to update tests as appropriate.


=======
History
=======

0.1.0 (2020-09-15)
------------------

* First release on PyPI.


