IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Impression de masse


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut Impression de masse
    Bonjour à tous et merci d'avance pour vos réponses qui je l'espère me seront utiles,

    Je vous expose mon problème :

    Je dois imprimer un grand nombre de fichiers (des factures au format .pdf), pour être plus concrets environ 800, sur l'action "clic d'un bouton" !

    J'ai généré préalablement ces fichiers sur le disque dur, donc mon programme connait dans une liste le chemin physique de tout ces fichiers.

    Mon souci est le suivant :

    - Je veux que l'utilisateur choisisse 1 SEULE FOIS l'imprimante qui va effectuer cette opération ... car vous vous imaginez que je ne peux pas afficher la fenêtre de sélection de l'imprimante 800 fois d'affilée à l'utilisateur ... . Comment faire ça via un ShellExecute ? (Ou par une autre méthode )

    -De plus je crains que ce gros nombre de fichiers sature l'imprimante, si j'envoie individuellement et successivement chaque fichier ... Imaginez 800 travaux d'impression dans la file d'attente de l'imprimante ...
    J'ai entendu parler de logiciels qui fusionnait dans un fichier plusieurs fichiers ... Par exemple ne serait il pas interressant de regrouper dans un seul fichier pdf que l'on va générer via le logiciel, disons 30 factures (donc 30 fichiers)...

    Ainsi le nombre de travaux d'impression serait considérablement réduit (800/30) ; 30 étant bien sûr un chiffre arbitraire

    Quelq'un a t il déja manipulé ce type de logiciel de fusion PDF et SURTOUT comment communiquer avec (par ligne de commandes) à partir de Builder, car je veux bien sûr que cette fusion reste transparente pour l'utilisateur ! Je ne veux pas qu'il valide manuellement la fusion via l'interface du logiciel que vous allez me conseillez ...

    Voila, merci de m'avoir lu,
    Merci pour toutes vos réponses

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Personne n'a une p'tite idée ?

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Par défaut
    Je réfléchis :
    Je pense :
    Mais je ne trouve pas :
    Fais une petite recherche Google des logiciels susceptibles de pouvoir fusionner des PDF et essaie de les intégrer à C++ Builder.
    Moi je n'ai qu'une seule idée c'est Crystal Reports 11 qui permet d'exporter des fichiers en pdf mais pas de les fusionner. Si tu veux voir comment ça marche, demande le moi, je suis à coté !

  4. #4
    Membre expérimenté Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Par défaut
    recherche un ocx a propos des pdf puis utilise le composant imprimante ?

    sinon verfie la fonction Printer() , ca ne devrais pas t'ouvrire de boite de dialogue plusieurs fois mais 1 seul fois pour parametrer l'objet Printer().

    je posterai des que je peux un exemple que j'ai fais pour imprimer un canenavs "image" personnalisé.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Bonjour,

    Pour résoudre mon problème et fusionner les pdf je suis passé par l'utilitaire "pdftk".

    Pour communiquer avec le logiciel je suis passé par un shellexecute en passant à pdftk 3 parametres (1er fichier à fusionner, 2ie fichier à fusionner, fichier de sortie fusionné).

    Je boucle sur cette fonction en faisant varié mes paramètres d'entrée/sortie jusqu'à atteindre un fichier fusionné de 4MO (valeur arbitraire), puis je crée un autre fichier de fusion et ainsi de suite, tant qu'il me reste des fichiers.

    Appel à pdftk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     //Fusion via l'utilitaire PDFTK
                            ShellExecute(Application->Handle,"open",CheminExePdftk.c_str(),(paramFicEntree1+" "+paramFicEntree2+" cat output "+repTempLocalFusion+paramFicSortie).c_str(),NULL,SW_SHOW);
    Dès qu'un fichier atteint 4MO je l'envoie à l'impression

    Attention toutefois le fichier de sortie ne sera pas crée instantanément sur le disque, (surtout si les 2 fichiers d'entrée sont lourds), donc avant de rappeler ShellExecute pour une nouvelle fusion avec comme parametre d'entrée le fichier fusionné précedemment crée, et le fichier suivant, il faut faire s'assurer via un FileExists que le fichier de fusion existe. (Mettre par exmple un sleep pour attendre un temps défini).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ShellExecute(NULL,"print",FichierAImprimer.c_str(),"", "", SW_HIDE);
    Ensuite pour n'avoir la fenêtre de sélection qu'une seule fois, il faut bien sûr passer par la fonction Execute() sur un objet TPrintDialog, et mettre le traitement decrit ci dessus à l'intérieur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (PrintDialog1->Execute())
    {
            //Traitement de fusion ici
           //....
    }

    A la fin du traitement, il faut supprimer les fichiers temporaires de fusion précédemment crées (mais ils peuvent être en cours d'utilisation par l'imprimante, ce qui devrait je pense renvoyer un code d'erreur avec la fonction DeleteFile() ).

    Je ne poste pas le code qui est assez long et relativement spécifique à mes besoins, mais si jamais quelqu'un en a besoin, je me ferais un plaisir de le mettre.

    @+ et merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Plantage d'un programme impression de masse
    Par Soyanlo dans le forum VB.NET
    Réponses: 5
    Dernier message: 08/02/2012, 14h20
  2. Impression en masse de documents word
    Par dave92 dans le forum VBA Word
    Réponses: 3
    Dernier message: 09/08/2011, 15h24
  3. Word et Impression de masse en TSE 2008 R2
    Par jonathansauret dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 12/04/2011, 14h32
  4. en vb peut-on lancer des impression en masse ?
    Par polako94 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/11/2007, 11h56
  5. Impression en masse de fichiers HTML
    Par bidochon dans le forum Delphi
    Réponses: 1
    Dernier message: 13/10/2006, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo