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
| Champ | Valeur |
|---|---|
| Nom du paquet | pdf4me |
| Version actuelle | 1.0.2 (publié le 14 septembre 2026) |
| Licence | MIT |
| Python soutien | >=3.11 (testé sur les versions 3.11, 3.12, 3.13 et 3.14) |
| État de développement | Production/Stable |
| Cadre | AsyncIO |
| Source | github.com/pdf4me/pdf4me-clientapi-python |
| PyPI | pypi.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(ouuv,poetry, ou n'importe quel PyPI-programme d'installation compatible).
Installer
- pip
- uv
- Poetry
python -m pip install pdf4me
uv add pdf4me
poetry add 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 :
- Bash / Zsh
- PowerShell
- Windows CMD
export PDF4ME_API_KEY="your-api-key"
$env:PDF4ME_API_KEY = "your-api-key"
set 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 :
- Un client, de nombreux appels. Le
async with Pdf4meClient(...)Le contexte gère le sous-jacenthttpxpool de connexions. Réutiliser le même client pour chaque appel interne.mainau lieu d'en ouvrir un par action. - 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. - 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)
| Module | Actes | Exemple d'importation |
|---|---|---|
pdf4me.ai_document_extraction | 14 | from pdf4me.ai_document_extraction import extract_invoice_data |
pdf4me.barcode | 7 | from pdf4me.barcode import create_barcode, read_barcodes |
pdf4me.convert | 13 | from pdf4me.convert import html_to_pdf, url_to_pdf, word_to_pdf |
pdf4me.edit | 7 | from pdf4me.edit import stamp, add_page_number, add_html_header_footer |
pdf4me.excel | 1 | from pdf4me.excel import excel_to_pdf |
pdf4me.extract | 8 | from pdf4me.extract import extract_text, extract_attachments |
pdf4me.find_search | 2 | from pdf4me.find_search import find_and_replace_text |
pdf4me.forms | 2 | from pdf4me.forms import fill_pdf_form, get_form_fields |
pdf4me.generate | 6 | from pdf4me.generate import generate_document_single |
pdf4me.image | 13 | from pdf4me.image import resize_image, add_watermark_to_image |
pdf4me.merge_split | 5 | from pdf4me.merge_split import merge_pdfs, split_pdf_by_barcode |
pdf4me.optimize | 1 | from pdf4me.optimize import optimize |
pdf4me.organize | 5 | from pdf4me.organize import rotate_pdf, extract_pages |
pdf4me.pdf | 16 | from pdf4me.pdf import get_pdf_metadata, sign_pdf |
pdf4me.pdf4me | 1 | from pdf4me.pdf4me import ping |
pdf4me.security | 2 | from pdf4me.security import protect_document, unlock_pdf |
pdf4me.word | 2 | from pdf4me.word import add_tracked_changes |
pdf4me.zugferd | 1 | from 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.