A simple python wrapper for PDFium
Project description
PyPDFium
A simple python wrapper for PDFium.
Installation
pip install pypdfium
Quick start
import sys
from PIL import Image
import ctypes
import pypdfium as PDFIUM
PDFIUM.FPDF_InitLibraryWithConfig(PDFIUM.FPDF_LIBRARY_CONFIG(2, None, None, 0))
if __name__ == "__main__":
if len(sys.argv) < 2:
print("USAGE: demo.py somefile.pdf")
exit(0)
fname = sys.argv[1]
doc = PDFIUM.FPDF_LoadDocument(fname, None) # load document
page_count = PDFIUM.FPDF_GetPageCount(doc) # get page counts
assert(page_count >= 1)
page = PDFIUM.FPDF_LoadPage(doc, 0) # load the first page
width = int(PDFIUM.FPDF_GetPageWidthF(page) + 0.5) # get page width
height = int(PDFIUM.FPDF_GetPageHeightF(page) + 0.5) # get page height
# render to bitmap
bitmap = PDFIUM.FPDFBitmap_Create(width, height, 0)
PDFIUM.FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF)
PDFIUM.FPDF_RenderPageBitmap(
bitmap, page, 0, 0, width, height, 0,
PDFIUM.FPDF_LCD_TEXT | PDFIUM.FPDF_ANNOT
)
# retrieve data from bitmap
buffer = PDFIUM.FPDFBitmap_GetBuffer(bitmap)
buffer_ = ctypes.cast(buffer, ctypes.POINTER(ctypes.c_ubyte * (width * height * 4)))
img = Image.frombuffer("RGBA", (width, height), buffer_.contents, "raw", "BGRA", 0, 1)
img.save("out.png")
if bitmap is not None:
PDFIUM.FPDFBitmap_Destroy(bitmap)
PDFIUM.FPDF_ClosePage(page)
PDFIUM.FPDF_CloseDocument(doc)
Notes
-
Working on 64bit Windows, Mac OS X and Linux.
-
The
pypdfium.py
file is generated by ctypesgen with command:ctypesgen -lpdfium -L somewhere/pdfium-linux/lib somewhere/pdfium-linux/include/*.h -o pypdfium.py
-
PDFium binaries are from https://github.com/bblanchon/pdfium-binaries
-
API documentation: https://developers.foxitsoftware.com/resources/pdf-sdk/c_api_reference_pdfium/
-
A PDF manager based on pypdfium: https://github.com/YinlinHu/kuafu
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pypdfium-0.0.15.tar.gz
(7.8 MB
view details)
File details
Details for the file pypdfium-0.0.15.tar.gz
.
File metadata
- Download URL: pypdfium-0.0.15.tar.gz
- Upload date:
- Size: 7.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.4rc1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d890581c98417fad829a0312ab78d1e9ac6f0ff0722df3e472c75cbc8bd0eb8f |
|
MD5 | f5f48d4a2d27eefcb97c20cc979ece68 |
|
BLAKE2b-256 | 295d17a388df5bd2e71b7a45bd5e64e3094d17afc86f461bca107109e3f031d1 |