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

Langages de programmation Discussion :

Langage pour manipuler les impressions


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 19
    Par défaut Langage pour manipuler les impressions
    Bonjour,

    Voilà, je voudrais être capable de manipuler les impressions (quelqu'en soit l'origine, pdf, word, internet, image etc...).
    Par manipulation, j'entends (par exemple) l'impression des pages paires seulement, des pages x à y, l'impression sans marges, etc...
    En fait il s'agit de ne manipuler que la mise en page.

    Ma question est de savoir quel langage peut me permettre de faire cela.
    Je sais que PostScript est le langage des imprimantes c'est à dire le langage final qui sera envoyé à l'imprimante.

    Je ne suis pas sur mais je pense que lorsque l'on rajoute une option d'impression dans l'interface utilisateur d'un programme, on ne manipule pas de PostScript derrière... non ?
    Ainsi n'y a-t-il pas des bibliothèques (en C, Java ou autres) pour manipuler les impressions ?


    Aussi chaque logiciel possède plus ou moins d'options pour la mise en page de l'impression. Si on prend Notepad nous avons que des choix basiques (choix des pages, marges, en-têtes...)
    Par contre Adobe Acrobat Reader, par exemple, permet déjà plus de chose comme l'impression en plusieurs page par feuille etc...
    Comment expliquer ces différences ? Ces options sont implémentées à quel niveau ?

    Dernier point : Lorsque l'on imprime un document (après en avoir effectué la mise en page au niveau du logiciel) on peut encore modifier sa mise en page au niveau du pilote d'impression (dans les propriétés de l'imprimante on peut par exemple choisir une impression en plusieurs page par feuille).
    Naturellement, ces options dépendent de chaque imprimantes ainsi que des fonctionnalités dont elle dispose.
    A votre avis comment cette manipulation au niveau de l'imprimante est-elle effectué ?

    PS : J'espère que je suis compréhensible et merci d'avoir lu jusque là...

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Ma question est de savoir quel langage peut me permettre de faire cela.
    Pour ne pas descendre jusqu'au niveau des transistors, disons que pour manipuler une imprimante (lui ordonner d'imprimer ceci, cela, etc.), il faut utiliser évidemment ... son API. Cette API est d'une manière ou d'une autre, exposée par le driver. Je connais cependant peu de personnes (pour ne pas dire personne) qui manipulent l'imprimante en communiquant directement avec le driver. Au lieu de cela, on préfère utiliser des APIs de plus haut niveau afin d'une part, de se voir simplifier la tâche et d'autre part, de ne pas avoir à écrire du code spécifique à un matériel donné. Sous Windows par exemple, on la GDI, la GDI+, etc. pour faire cela.
    Je sais que PostScript est le langage des imprimantes c'est à dire le langage final qui sera envoyé à l'imprimante.
    C'est juste un langage de description de document supporté par de nombreuses imprimantes. On peut comparer un fichier PS à un fichier PDF, WMF ou EMF, etc. sauf que la majorité des imprimantes semblent préférer supporter nativement le PS plutôt que le PDF, le WMF ou l'EMF, etc (mais ces formats sont également supportés par certaines imprimantes).
    Ainsi n'y a-t-il pas des bibliothèques (en C, Java ou autres) pour manipuler les impressions ?
    Je t'ai déjà donné des exemples : GDI et GDI+.

    Aussi chaque logiciel possède plus ou moins d'options pour la mise en page de l'impression. Si on prend Notepad nous avons que des choix basiques (choix des pages, marges, en-têtes...)
    Par contre Adobe Acrobat Reader, par exemple, permet déjà plus de chose comme l'impression en plusieurs page par feuille etc...
    Comment expliquer ces différences ? Ces options sont implémentées à quel niveau ?
    Elles sont implémentées au niveau de l'application. L'application utilise la GDI par exemple pour imprimer mais les marges, les en-têtes, les pages à imprimer, etc. c'est géré par l'application. Peut-être qu'un exemple de code te permettrait d'y voir plus clair.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include <windows.h>
    
    int main()
    {
        HDC hDC = CreateDC(NULL, "Microsoft Office Document Image Writer", NULL, NULL); /* HDC de l'imprimante. */
        /* Utiliser EnumPrinters pour avoir la liste de tous les imprimantes installes. */
        /* GetDefaultPrinter pour connaitre le nom de l'imprimante par defaut. */
        /* On peut aussi afficher la boite de dialogue systeme de selection d'imprimante a l'aide de PrintDlg ou PrintDlgEx. */
    
        DOCINFO di; /* Description globale du document. */
    
        ZeroMemory(&di, sizeof(di));
        di.cbSize = sizeof(di);
        di.lpszDocName = "Test";
        di.lpszOutput = "c:\\test.mdi"; /* .mdi = MS Office Document Image File (pas de OutputFile pour une imprimante reelle ...). */
    
        StartDoc(hDC, &di); /* Commencons a dessiner (Debut du mode "dessin"). */
    
        SetMapMode(hDC, MM_LOMETRIC); /* Passons en mode MM_LOMETRIC dans lequel l'unite logique est le dixieme de millimetre. */
        
        StartPage(hDC); /* Page 1. */
        Rectangle(hDC, 0, 0, 100, -100); /* Dessine un carre de 1 cm de cote a partir de la position d'origine. */
        EndPage(hDC); /* Fin Page 1. */
    
        EndDoc(hDC); /* Fin du mode "dessin". Lancer l'impression ! */
    
        DeleteDC(hDC);
        
        return 0;
    }
    Ce programme est écrit en langage C et utilise la GDI pour imprimer.

    Dernier point : Lorsque l'on imprime un document (après en avoir effectué la mise en page au niveau du logiciel) on peut encore modifier sa mise en page au niveau du pilote d'impression (dans les propriétés de l'imprimante on peut par exemple choisir une impression en plusieurs page par feuille).
    Naturellement, ces options dépendent de chaque imprimantes ainsi que des fonctionnalités dont elle dispose.
    A votre avis comment cette manipulation au niveau de l'imprimante est-elle effectué ?
    C'est géré par le système voire le pilote de l'imprimante.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    j'ajouterais qu'il est tout à fait possible de programmer directement en PostScript..


    Adobe a fourni un petit guide (celui que j'ai date du milieu des années 80, mais n'a pas dû changer fondamentalement) .

    La syntaxe et les commandes sont simples, et on peut très bien se faire soi-même son "formateur" d'impression..

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

Discussions similaires

  1. bibliothèque pour manipuler les objets 3D d'OpenGL
    Par choko83 dans le forum OpenGL
    Réponses: 10
    Dernier message: 21/05/2008, 23h38
  2. Librairie pour manipuler les images
    Par maa dans le forum C#
    Réponses: 3
    Dernier message: 11/04/2008, 18h33
  3. Quel langage pour manipuler des entiers très longs ?
    Par mis_dj dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 10/05/2006, 21h12
  4. Langage pour manipuler fichiers
    Par Dolhmen dans le forum Windows
    Réponses: 15
    Dernier message: 26/04/2006, 21h48
  5. langage pour manipulation données sous MySql
    Par halina dans le forum Administration
    Réponses: 2
    Dernier message: 31/01/2005, 10h33

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