Fusion et découpage de PDFDéveloppement et personnalisation

Un script Python qui fusionne des PDF en un seul ou découpe de gros PDF en parties par pages ou selon des règles

Généralement prêt en 15 minutesRetouches inclusesContrôle qualité
Formules
Paiement protégéEn savoir plus
  • Les retouches prévues par la formule sont gratuites.
  • Sans réponse de votre part dans les 3 jours suivant la livraison, le travail est validé automatiquement.

L’argent est réservé au paiement et versé uniquement une fois le travail validé.

Un script Python qui fusionne des PDF en un seul ou découpe de gros PDF en parties par pages ou selon des règles

Exemple de résultat

Exemple pour la formule Standard

Fusion des fichiers de ventes mensuels de 9 boutiques en un seul rapport Excel

Comment on le lance

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Dossier : sales/2026-10, 9 fichiers trouvés
2026-11-02 09:14:03 INFO  shop-01.csv : 1 284 lignes
2026-11-02 09:14:04 INFO  shop-02.xlsx : 967 lignes
2026-11-02 09:14:04 WARN  shop-07.csv : 3 lignes sans prix ignorées (lignes 88, 412, 913)
2026-11-02 09:14:05 INFO  Terminé : 10 412 lignes -> report-2026-10.xlsx (feuilles « Ventes » et « Totaux »)

Des paramètres, pas du code

Les noms de colonnes de chaque boutique se trouvent dans settings.ini : une nouvelle boutique ou une colonne renommée, c’est une ligne à modifier :

[columns]
date = Date, Date de vente, Jour
product = Produit, Article, Désignation
quantity = Qté, Quantité, Pièces
price = Prix, Prix unitaire

Un extrait du code

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Lit le fichier d’une boutique et lui donne les noms de colonnes du rapport."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name} : aucune colonne pour '{name}' (recherché : {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Fichiers : une archive ZIP avec merge_sales.py (310 lignes), settings.ini, requirements.txt et un README qui explique comment installer Python, lancer le script et ce que signifie chaque message du journal. Le client le lance sur son propre ordinateur.

Client : une petite chaîne de 9 papeteries ; chaque boutique envoie ses ventes du mois en fichier CSV ou Excel, avec des noms de colonnes légèrement différents. Tâche : un seul script qui lit chaque fichier d’un dossier, met les colonnes au même format et écrit un rapport Excel unique avec toutes les ventes et une feuille de totaux par boutique.

Le client et tous les détails sont fictifs.

À propos de ce service

Des contrats scannés arrivés à raison d’un fichier par page, un relevé de 300 pages à envoyer client par client, un ensemble de documents à transmettre en un seul PDF : ce script Python fait ces opérations en quelques secondes au lieu de cliquer dans un éditeur. Il fusionne les fichiers dans l’ordre fixé (par nom, par date ou d’après une liste), découpe un PDF en pages isolées, en plages fixes ou en parties commençant à chaque signet, et en Premium peut couper là où une page contient un mot que vous indiquez, comme Facture n°. Les pages gardent leur qualité car elles sont copiées, pas réimprimées. Envoyez-nous la tâche et un ou deux fichiers d’exemple sans rien de confidentiel. Vous lancez le script vous-même sur votre ordinateur. Il ne modifie pas le texte et ne lit pas les scans.

Ce qui est inclus

  • Ce que vous recevezUne archive ZIP avec le script Python, un README avec des instructions pas à pas et, dès Standard, un fichier de paramètres avec l’ordre, les plages et les noms ; le code est aussi affiché sur la page de la commande.
  • Fusion dans votre ordrePar nom, par date ou d’après votre liste
  • Découpage à votre façonPages isolées, plages ou signets
  • Aucune perte de qualitéLes pages sont copiées telles quelles
  • Noms de fichiers clairsNuméros, plages de pages ou noms tirés de votre liste
  • Code lisibleAvec des commentaires, pour modifier facilement une règle plus tard

Comment ça marche

  1. 1
    TâcheVous décrivez la tâche et envoyez un ou deux PDF d’exemple
  2. 2
    CodeNous écrivons le script et le guide pour le lancer
  3. 3
    Testez-leVous le lancez sur des copies de vos fichiers et vérifiez les pages
  4. 4
    RetouchesVous demandez des retouches selon votre formule et envoyez les éventuels messages d’erreur

Ce dont nous avons besoin

Ce qu’il faut faire : quels fichiers fusionner et dans quel ordre, ou comment découper (chaque page, toutes les N pages, par plages, par signets ou selon un mot sur la page), et comment nommer les résultats. Un ou deux PDF d’exemple sans rien de confidentiel, ou la même mise en page avec un contenu fictif ; si le découpage dépend d’un mot, une page où il apparaît. Le nombre approximatif de fichiers et de pages, et votre système : Windows, macOS ou Linux.

Nous vous demanderons :

  • Fusion, découpage, ou l’un après l’autre ?
  • Comment savoir où commence chaque partie ?
  • Comment nommer les fichiers ?
  • Où va-t-il tourner ?

Comparer les formules

FormulesEssentielFusion ou découpage15 €StandardPDF avec paramètres30 €PremiumOutil PDF60 €
Délai1 jour2 jours3 jours
Retouches123
Codejusqu’à 150 lignesjusqu’à 400 lignesjusqu’à 1 000 lignes
Fichiers de code1jusqu’à 3jusqu’à 8
Fichier de paramètresNonOuiOui
Messages d’erreur clairs et journalNonOuiOui
Options de lancement et guide pour l’exécution planifiéeNonNonOui
Guide d’installation et d’utilisation (README)OuiOuiOui
LangagePythonPythonPython
Commander EssentielCommander StandardCommander Premium

Paiement protégé

Vous payez à la commande, mais l’argent n’est versé que pour un travail validé.

  • Prix fixeLe prix de la formule ne change pas après le paiement.
  • L’argent est réservéAu paiement, le montant est seulement réservé. Il n’est versé à Dleex qu’une fois le travail validé.
  • Vérifié avant livraisonChaque résultat passe un contrôle qualité avant de vous parvenir, et vous le voyez sur la page de la commande avant de le valider.
  • Retouches gratuitesDemandez des retouches dans le cadre de votre brief autant de fois que la formule le permet.
  • Validation au bout de 3 joursSi, dans les 3 jours suivant la livraison, vous n’avez ni validé le travail ni demandé de retouches, il est validé automatiquement. Si vous écrivez dans le chat de la commande après la livraison, la commande est mise en attente ; après notre réponse, nous pourrons relancer le délai de 3 jours et vous le signalerons dans le chat.
  • Travail refait ou remboursement intégralSi le résultat ne correspond pas à votre brief et que les retouches n’y ont rien changé, ou si le travail prend plus du double du délai prévu, écrivez dans le chat de la commande : nous referons le travail ou vous rembourserons intégralement.
Comment ça marche →

Questions et réponses

Peut-il découper des PDF scannés selon un mot ?

Non : un scan est une image de page, sans texte à rechercher. Le découpage de scans par numéros de pages ou par plages fonctionne très bien. Le découpage selon un mot demande un PDF avec du vrai texte, comme un fichier enregistré depuis un logiciel.

Et les PDF protégés par mot de passe ?

Si vous connaissez le mot de passe, le README explique comment le donner au script au lancement ; il n’est jamais écrit dans le code. Les fichiers dont vous n’avez pas le mot de passe sont ignorés et listés dans le journal.

Peut-il aussi compresser les PDF ?

Une légère compression de la structure du fichier, oui. Réduire fortement des scans implique de recompresser les images qu’ils contiennent, ce qui change leur qualité ; précisez-le dans le brief et nous vous dirons si cela entre dans votre formule.

Allez-vous traiter mes documents ?

Non. Vous lancez le script sur votre ordinateur : contrats et relevés n’en sortent jamais. Envoyez-nous seulement des exemples sans rien de confidentiel.

Vous n’avez pas trouvé la réponse ?

Formules