This aims to create a pip package for iText 9 distribution
.NET Core is required for building the package and the dotnet tool should be
available in PATH.
To install the experimental itextpy package in your Python environment,
execute this command at the root of the repository:
pip install .This will include all the necessary .NET binaries, together with the typing stubs for IDE auto-completion.
If you just want to build the itextpy wheel without installing it, you can
do that with the build package:
pip install build
python -m build --wheelThis will create the itextpy wheel in the dist directory.
# Uncomment this block, if you wish to force the .NET Core runtime
# import pythonnet
# pythonnet.load('coreclr')
# Load the .NET binaries
# Any .NET runtime configuration should be done before the load call
import itextpy
itextpy.load()
# Use as any regular Python package
from iText.Kernel.Pdf import PdfWriter, PdfDocument
from iText.Layout import Document
from iText.Layout.Element import Paragraph
writer = PdfWriter("test.pdf")
pdf_doc = PdfDocument(writer)
document = Document(pdf_doc)
document.Add(Paragraph("Hello, World!"))
document.Close()More source code examples are available in the samples directory.
- .NET Core SDK is required for building.
- Typing information is auto-generated from binaries via the pythonnet-stub-generator. Ideally we would want to have docs transferred as well and be able to patch the tool output manually, if needed.
- As of Python.NET 3.0.5 you cannot override protected methods within Python.
To overcome this limitation, we include a small
itext.python.compatlibrary. It includes subclasses, which wraps protected methods into overridable public ones. - Dependencies are taken from NuGet and dependency resolution is handled by the
.NET Core SDK. To control the versions of the dependencies, modify them in
Directory.Packages.props. - Only the following packages are included:
itextitext.bouncy-castle-adapteritext.pdfhtml
- Current 9.1.0 build contains a bug, which prevents running iText with .NET
Core under Python.NET. For now, we have a workaround here with a binary
patch. Patching is done with the
scripts/patch_itext_binaries.pyscript. So don't worry, if theitext.io.dllbinary differs from the one from NuGet.