Aller au contenu principal

PDF4me Python SDK Commencer

Le pdf4me colis sur PyPI est l'asynchrone officiel Python SDK pour le PDF4me REST APIIl intègre 106 fonctions asynchrones typées réparties dans 18 modules couvrant la conversion, l'optimisation, la fusion, la division, l'estampillage, la signature électronique, OCR, remplissage de formulaires, extraction, codes-barres, ZUGFeRD facturation électronique et AIExtraction de documents à partir de factures, reçus, contrats, relevés bancaires, documents fiscaux et bulletins de paie.

Informations sur l'emballage

ChampValeur
Nom du paquetpdf4me
Version actuelle1.0.2 (publié le 14 septembre 2026)
LicenceMIT
Python soutien>=3.11 (testé sur les versions 3.11, 3.12, 3.13 et 3.14)
État de développementProduction/Stable
CadreAsyncIO
Sourcegithub.com/pdf4me/pdf4me-clientapi-python
PyPIpypi.org/project/pdf4me

En interne, le client est généré avec Microsoft. Kiota au-dessus de httpx[http2]Ainsi, chaque action est entièrement typée, renvoie des résultats typés et réutilise un pool de connexions par client.

Prérequis

  • Python 3.11 ou plus récent.
  • UN PDF4me compte et API clé.
  • pip (ou uv, poetry, ou n'importe quel PyPI-programme d'installation compatible).

Installer

python -m pip install pdf4me

Installation pdf4me se rapproche httpx[http2] et Microsoft Kiota packages d'exécution (microsoft-kiota-abstractions, microsoft-kiota-http, et les backends de sérialisation JSON, formulaire, texte et multipart).

Authentifier

Configurez votre API clé dans l'environnement :

export PDF4ME_API_KEY="your-api-key"

Les exemples ci-dessous lisent la clé à partir de cette variable lors de l'exécution. Vous pouvez également la transmettre directement à Pdf4meClient(api_key) si vous préférez le charger à partir d'un gestionnaire secret, .env fichier, ou autre source.

Démarrage rapide

Le plus petit programme utile : ouvrir un client, exécuter une action, écrire le résultat sur le disque.

import asyncio
import os
from pathlib import Path

from pdf4me import Pdf4meClient
from pdf4me.optimize import optimize


async def main() -> None:
api_key = os.environ.get("PDF4ME_API_KEY")
if not api_key:
raise SystemExit("Set PDF4ME_API_KEY before running this example.")

source = Path("input.pdf")
async with Pdf4meClient(api_key) as client:
result = await optimize(
client, source.read_bytes(), doc_name=source.name
)
Path("optimized.pdf").write_bytes(result)
print("Saved optimized.pdf")


if __name__ == "__main__":
asyncio.run(main())

Trois points à noter :

  1. Un client, de nombreux appels. Le async with Pdf4meClient(...) Le contexte gère le sous-jacent httpx pool de connexions. Réutiliser le même client pour chaque appel interne. main au lieu d'en ouvrir un par action.
  2. Les actions sont des fonctions libres, et non des méthodes client. Importez chaque action depuis son module (from pdf4me.optimize import optimize, from pdf4me.pdf import get_pdf_metadataet passez le client comme premier argument. Cela permet de conserver une interface utilisateur épurée et d'éliminer les modules inutilisés de votre éditeur.
  3. Octets en entrée, octets en sortie. Actions qui produisent un retour de fichier bytesLes actions qui génèrent des métadonnées renvoient des classes de données typées. Il n'y a pas de stockage intermédiaire sur disque ; vous pouvez donc transférer les résultats entre les actions sans accéder au système de fichiers.

Deux autres appels courants

Tamponnez un PDF:

from pdf4me.edit import StampAlignX, stamp

stamped = await stamp(client, data, text="DRAFT", align_x=StampAlignX.Center)
Path("stamped.pdf").write_bytes(stamped)

Lire PDF métadonnées :

from pdf4me.pdf import get_pdf_metadata

metadata = await get_pdf_metadata(client, data, doc_name="input.pdf")
print(metadata.page_count)

Chaque valeur passée sous forme d'énumération (comme StampAlignX.Center) est une constante typée, donc votre IDE Il complète automatiquement les valeurs légales et mypy ou pyright détecte les fautes de frappe lors de la modification.

Contenu de la boîte (106 actions réparties dans 18 modules)

ModuleActesExemple d'importation
pdf4me.ai_document_extraction14from pdf4me.ai_document_extraction import extract_invoice_data
pdf4me.barcode7from pdf4me.barcode import create_barcode, read_barcodes
pdf4me.convert13from pdf4me.convert import html_to_pdf, url_to_pdf, word_to_pdf
pdf4me.edit7from pdf4me.edit import stamp, add_page_number, add_html_header_footer
pdf4me.excel1from pdf4me.excel import excel_to_pdf
pdf4me.extract8from pdf4me.extract import extract_text, extract_attachments
pdf4me.find_search2from pdf4me.find_search import find_and_replace_text
pdf4me.forms2from pdf4me.forms import fill_pdf_form, get_form_fields
pdf4me.generate6from pdf4me.generate import generate_document_single
pdf4me.image13from pdf4me.image import resize_image, add_watermark_to_image
pdf4me.merge_split5from pdf4me.merge_split import merge_pdfs, split_pdf_by_barcode
pdf4me.optimize1from pdf4me.optimize import optimize
pdf4me.organize5from pdf4me.organize import rotate_pdf, extract_pages
pdf4me.pdf16from pdf4me.pdf import get_pdf_metadata, sign_pdf
pdf4me.pdf4me1from pdf4me.pdf4me import ping
pdf4me.security2from pdf4me.security import protect_document, unlock_pdf
pdf4me.word2from pdf4me.word import add_tracked_changes
pdf4me.zugferd1from pdf4me.zugferd import create_zugferd_invoice

Les chemins d'importation ci-dessus illustrent la surface du module. Voir le PDF4me REST API référence pour la liste complète des paramètres de chaque action, et le dépôt source pdf4me/ Arborescence des paquets pour les noms de symboles exacts exportés par votre version.

Où aller ensuite

Dépannage

ModuleNotFoundError: No module named 'pdf4me'. Le paquet est installé dans un interpréteur différent de celui qui exécute votre script. Veuillez confirmer avec python -m pip show pdf4me au sein du même environnement virtuel. Si vous utilisez pyenv ou conda, activez d'abord l'environnement.

SystemExit: Set PDF4ME_API_KEY before running this example. La variable d'environnement n'est pas visible par votre processus. Redémarrez votre shell après export, ou transmettez directement la clé avec Pdf4meClient("your-api-key")Sous Windows, n'oubliez pas que set Les commandes exécutées dans CMD ne sont pas conservées d'une session à l'autre ; utilisez-les. setx pour une valeur permanente.

httpx.HTTPStatusError: 401 Unauthorized. Le API La clé est présente mais rejetée. Régénérez-la dans le PDF4me tableau de bord et réessayez.

Premier appel lent après une période d'inactivité. HTTP/2 Réinitialisations de la fonction keep-alive en cas d'inactivité. Conservez le Pdf4meClient Ouvrir pour toute la durée d'un traitement par lots plutôt que d'en ouvrir un nouveau pour chaque fichier.

asyncio.run() cannot be called from a running event loop. Vous êtes à l'intérieur Jupyter ou un framework qui exécute déjà une boucle d'événements. Utilisez await main() au niveau supérieur d'une cellule de bloc-notes, ou enveloppez votre code dans le point d'entrée asynchrone propre au framework.