Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1857 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C Windows] Imprimer un PDF

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[C Windows] Imprimer un PDF

n°458457
Cherrytree
cn=?
Posté le 15-07-2003 à 16:32:47  profilanswer
 

Comment faire pour router un fichier PDF (ou autre d'ailleurs : doc, rtf...) vers une imprimante du réseau ? Quelle est la complexitéje de la tâche ? De quoi ai-je besoin ? Acrobat doit-il être installé ?


---------------
Le site de ma maman
mood
Publicité
Posté le 15-07-2003 à 16:32:47  profilanswer
 

n°458509
gatorette
Posté le 15-07-2003 à 16:59:10  profilanswer
 

Je pense que le plus simple c'est d'utiliser ShellExecuteEx avec le "verbe" print. Par contre, il faudra Acrobat Reader (pas besoin de plus) d'installé (et tu vas voir la fenêtre de lancement d'acrobat je pense).
Une autre solution, c'est de trouver une bibliothèque permettant de lire les pdf (tu trouveras peut être quelque chose du côté de GhostView qui est un logiciel gratuit) et de faire l'impression directement de ton soft.


---------------
each day I don't die is cheating
n°458530
El_gringo
Posté le 15-07-2003 à 17:05:52  profilanswer
 

gatorette a écrit :

Je pense que le plus simple c'est d'utiliser ShellExecuteEx avec le "verbe" print. Par contre, il faudra Acrobat Reader (pas besoin de plus) d'installé (et tu vas voir la fenêtre de lancement d'acrobat je pense).
Une autre solution, c'est de trouver une bibliothèque permettant de lire les pdf (tu trouveras peut être quelque chose du côté de GhostView qui est un logiciel gratuit) et de faire l'impression directement de ton soft.


 
Toutes les versions d'Acrobat Reader ne permettent pas d'imprimer directement à partir de la ligne de commande. Nottament la 5, version pour laquelle le seul moyen qui m'est apparu est de donner des ordres à Reader via des messages DDE. Pas vraiment simple...

n°458551
Cherrytree
cn=?
Posté le 15-07-2003 à 17:19:26  profilanswer
 

Euh, avec Acrobat 5 (par Reader), j'ai lancé l'impression en ligne de commande d'un PDF.
 
gatorette > bonne idée, faut que je regarde de ce côté.
 
En somme si je veux gérer une multisortie de mes documents, ça va être une usine à gaz ! ! !


---------------
Le site de ma maman
n°459031
El_gringo
Posté le 16-07-2003 à 08:45:35  profilanswer
 

Cherrytree a écrit :

Euh, avec Acrobat 5 (par Reader), j'ai lancé l'impression en ligne de commande d'un PDF.
 
gatorette > bonne idée, faut que je regarde de ce côté.
 
En somme si je veux gérer une multisortie de mes documents, ça va être une usine à gaz ! ! !


 
Ha... ben moi je m'étais basé sur ce que fait windows pour imprimer nu PDF quand Acrobat Reader est installé. Dans le détail de l'action "print" (ou "imprimer" ), on voit que DDE est utilisé.
 
Pour l'usine à gaz, ça risque de l'être un peu, ouais...

n°459284
HelloWorld
Salut tout le monde!
Posté le 16-07-2003 à 13:34:17  profilanswer
 

Qu'entends-tu par "router" un document ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°459286
Cherrytree
cn=?
Posté le 16-07-2003 à 13:38:50  profilanswer
 

HelloWorld a écrit :

Qu'entends-tu par "router" un document ?


Le prendre par la main jusqu'à une imprimante du réseau, pour y être imprimé.


---------------
Le site de ma maman
n°459407
HelloWorld
Salut tout le monde!
Posté le 16-07-2003 à 15:07:29  profilanswer
 

Quelle différence avec imprimer directement sur une imprimante (rézo ou pas d'ailleurs) ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°459429
Cherrytree
cn=?
Posté le 16-07-2003 à 15:18:04  profilanswer
 

C'est la même chose.


---------------
Le site de ma maman
n°459446
HelloWorld
Salut tout le monde!
Posté le 16-07-2003 à 15:24:53  profilanswer
 

Ok.
"router" sous entendait que tu voulais re-expédier des documents en attente d'impression sur une imprimante X vers une imprimante rezo.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le 16-07-2003 à 15:24:53  profilanswer
 

n°460586
Cherrytree
cn=?
Posté le 17-07-2003 à 16:49:14  profilanswer
 

Non non, même pas. En fait, on a un soft qui s'appelle Crystal Reports, lequel édite des documents avec les paramètres qu'on lui passe. CR crache du PDF, du DOC, du XLS... Nos clients ne veulent pas ouvrir manuellement chaque document pour ensuite cliquer sur le bouton print. Je dois donc faire imprimer le document, quelque soit son type, mais pour l'instant disons du PDF, par l'imprimante.
 
Désolé si je suis peu clair.


---------------
Le site de ma maman
n°463261
LetoII
Le dormeur doit se réveiller
Posté le 21-07-2003 à 13:18:15  profilanswer
 

Tu bosse sous quel OS?
 
Sous windows tu dois pouvoir faire un ShellExecute pour l'impression (à voir de plus près) ce qui devrait faire imprimer ton document quel que soit son type, à condition que l'opération soit définie bien sûre.


---------------
Le Tyran
n°463265
Cherrytree
cn=?
Posté le 21-07-2003 à 13:22:37  profilanswer
 

Je suis sous Windows dans tous les cas. Ainsi avec cette simple commande je peux imprimer un pdf, un xls ou un doc, pourvu que Acrobat Reader, Excel ou Word soit installé, c'est ça ?


---------------
Le site de ma maman
n°463272
LetoII
Le dormeur doit se réveiller
Posté le 21-07-2003 à 13:26:49  profilanswer
 

Cherrytree a écrit :

Je suis sous Windows dans tous les cas. Ainsi avec cette simple commande je peux imprimer un pdf, un xls ou un doc, pourvu que Acrobat Reader, Excel ou Word soit installé, c'est ça ?


 
Ouaip:
 
http://msdn.microsoft.com/library/ [...] xecute.asp


---------------
Le Tyran
n°463434
VisualC++
J'va y penser ...
Posté le 21-07-2003 à 15:04:02  profilanswer
 

Si vraiment tu es sous Windows et veu faire un truc "pro" regarde du cote de l'automation
 
C facile a mettre en oeuvre (enfin pas trop complique), ICI la version pour Office (donc Word Excel ou autre). Tu peux normalement tres facilement le faire sur le mm principe avec Acrobat (ca marchait avec la version 3 de reader je pense que ca marche toujours) suffit de recup de Acrobat.Application enfin du genre pour le reader et de faire a peu pres comme pour Word ou excel (enfin pour le lancer et appeler la fonction Print de l'instance sur l'appli)


Message édité par VisualC++ le 21-07-2003 à 15:20:05
n°464779
Cherrytree
cn=?
Posté le 22-07-2003 à 14:56:10  profilanswer
 

VisualC++ > j'ai pas tout compris.
 
Sinon, j'ai essayé de tester ShellExecute, mais je n'ai pas dû comprendre comment ça marchai. J'ai juste fait une frame de base et la fonction WindowProc suivante :
 

Code :
  1. LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  2. {
  3.     switch (uMsg)
  4.     {
  5.         case WM_LBUTTONDOWN:
  6.             ShellExecute(hwnd, "print", "C:\test.txt", NULL, "C:\TEMP", SW_SHOWNORMAL);
  7.             return 0;
  8.         case WM_DESTROY:
  9.             PostQuitMessage(0);
  10.             return 0;
  11.         default:
  12.             return DefWindowProc(hwnd, uMsg, wParam, lParam);
  13.     }
  14. }


 
Pouvez-vous m'aider ?


---------------
Le site de ma maman
n°464787
chrisbk
-
Posté le 22-07-2003 à 15:00:49  profilanswer
 

heuh je connais pas la fonction en detail, mais les \ entre " doivent etre doubles (\\)

n°464796
Cherrytree
cn=?
Posté le 22-07-2003 à 15:04:40  profilanswer
 

Effectivement, maintenant ça donne des résultats, merci chrisbk.


---------------
Le site de ma maman
n°464970
El_gringo
Posté le 22-07-2003 à 16:30:03  profilanswer
 

Cherrytree a écrit :

Effectivement, maintenant ça donne des résultats, merci chrisbk.


 
Ben alors !? En java c'est la même chose...

n°465058
VisualC++
J'va y penser ...
Posté le 22-07-2003 à 17:11:43  profilanswer
 

Ben l'automation ca te permettra d'acceder directement au fonction du logiciel via C++
 
Pour ton pb de print de doc au format PDF ca donne ca sous VisualC++ 6 et + pour imprimer un fichier PDF en passant par un controle ActiveX de Acrobat (il est fourni avec le reader). La version via Automation je l'ai pas la je trouve plus les sources mais bon c plus chiant l'auomation pour Acrobat pour peu de fonction en plus du control ActiveX.
 
Juste a inserer le control dans ton projet, declare une variable de type ControleActiveXAcrobatReader et de l'utiliser.
 

Code :
  1. void CDocumentHandle::m_fnvPrintDoc(CString& docName, int iStart, int iStop)
  2. {
  3. m_AcrobatControl.CreateObject();
  4. m_AcrobatControl.ShowWindow(false);
  5. m_AcrobatControl.LoadFile(docName);
  6. if (iStart == -1)
  7.  m_AcrobatControl.printAll();
  8. else {
  9.  m_AcrobatControl.printPages(iStart, iStop);
  10. }
  11. }


 
A toi apres de jouer avec les fonctions fournies par le control.

n°465064
Cherrytree
cn=?
Posté le 22-07-2003 à 17:15:15  profilanswer
 

Je regarde ça ce soir ou demain. Merci beaucoup.


---------------
Le site de ma maman
n°465263
Cherrytree
cn=?
Posté le 22-07-2003 à 20:47:58  profilanswer
 

Juste une question : ShellExecute prend en paramètre un handle de fenêtre (HWND). Est-ce que cela m'empêche d'utiliser ShellExecute dans un programme sans GUI ?


---------------
Le site de ma maman
n°465264
chrisbk
-
Posté le 22-07-2003 à 20:51:10  profilanswer
 

j'en doute, mais consulte la msdn en cas de doute

n°465290
Cherrytree
cn=?
Posté le 22-07-2003 à 21:21:12  profilanswer
 

chrisbk a écrit :

j'en doute, mais consulte la msdn en cas de doute


Je redoute.


---------------
Le site de ma maman
n°465326
LetoII
Le dormeur doit se réveiller
Posté le 22-07-2003 à 22:20:30  profilanswer
 

Je pense pas, on peut utiliser les messageBox sans avoir de handle sous la main.


---------------
Le Tyran
n°465328
chrisbk
-
Posté le 22-07-2003 à 22:28:45  profilanswer
 

a vrai dire je me demande pkoi shellExecute a besoin d'un hwnd ?

n°465344
Cherrytree
cn=?
Posté le 22-07-2003 à 23:03:24  profilanswer
 

chrisbk a écrit :

a vrai dire je me demande pkoi shellExecute a besoin d'un hwnd ?


Pour y envoyer les éventuels dialogues : rapports d'erreurs...


---------------
Le site de ma maman
n°469491
Cherrytree
cn=?
Posté le 28-07-2003 à 10:53:04  profilanswer
 

Je profite de ce topic pour plonger plus avant dans la programmation C Windows.
 
J'ai remarqué que la fonction ShellExecute forwarde l'impression vers l'imprimante par défaut.
 
Peut-on faire autrement ?
 
J'aimerais pouvoir spécifier l'imprimante sur laquelle le travail d'impression doit se faire. Quelles structures/fonctions dois-je potasser ?


---------------
Le site de ma maman
n°469498
skeye
Posté le 28-07-2003 à 10:58:21  profilanswer
 

Cherrytree a écrit :

Je profite de ce topic pour plonger plus avant dans la programmation C Windows.
 
J'ai remarqué que la fonction ShellExecute forwarde l'impression vers l'imprimante par défaut.
 
Peut-on faire autrement ?
 
J'aimerais pouvoir spécifier l'imprimante sur laquelle le travail d'impression doit se faire. Quelles structures/fonctions dois-je potasser ?


Tu dois pouvoir passer des paramètres à print, non? :??:

n°469502
Cherrytree
cn=?
Posté le 28-07-2003 à 11:03:49  profilanswer
 

Je ne sais pas. C'est justement pour ça que je demande.


---------------
Le site de ma maman
n°469517
LetoII
Le dormeur doit se réveiller
Posté le 28-07-2003 à 11:17:01  profilanswer
 

A moin que l'appli qui imprimme ne puisse prendre en paramétre l'imprimente cible, il va falloir que tu change l'imprimente par défaut avant l'impression.


---------------
Le Tyran
n°469524
HelloWorld
Salut tout le monde!
Posté le 28-07-2003 à 11:18:50  profilanswer
 

Citation :

J'ai remarqué que la fonction ShellExecute forwarde l'impression vers l'imprimante par défaut.


 
ShellExecute ne fait rien d'autre que d'analyser la bdr pour retrouver la commande à envoyer pour imprimer le document demandé. ShellExecute n'imprime rien, mais demande l'impression, si elle sait le faire.
Pour un pdf par exemple, lance regedit, va à la clé HKCR\.pdf
Tu apprends que c'est un fichier de type AcroExch.Document.
Va à HKCR\AcroExch.Document\shell et tu as la liste des commandes que l'on peut passer à ShellExecute que ce type de document peut traiter. En l'occurence :
"HKCR\AcroExch.Document\shell\print\command" donne sur ma machine ""C:\Program Files\Adobe\Acrobat 5.0\Reader\AcroRd32.exe" /p /h "%1""
Donc ça appelle juste AcroRd32 avec le paramètre /p pour print (je suppose). Faut donc potasser l'aide de Acrobat pour savoir quel(s) paramètre(s) passer pour spécifier une autre imprimante. Tu passes ces paramètres avec le champ spécial de ShellExecute.
Faut procéder ainsi pour tous les documents que tu veux ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°469691
Cherrytree
cn=?
Posté le 28-07-2003 à 13:24:33  profilanswer
 

HelloWorld > Un grand merci ! Je comprends maintenant le fonctionnement de ShellExecute. C'est moins magick soudain.


---------------
Le site de ma maman
n°469696
LetoII
Le dormeur doit se réveiller
Posté le 28-07-2003 à 13:29:30  profilanswer
 

Après si tu veux qqc de plus fin faut utiliser l'automation, comem l'avais déjà remarquer qqn d'autre (je sais plus qui désolé :D)


---------------
Le Tyran
n°469718
Cherrytree
cn=?
Posté le 28-07-2003 à 13:50:10  profilanswer
 

Alors dans ce cas, j'ai besoin de sélectionner par programmation l'imprimante. Des pistes ?


---------------
Le site de ma maman
n°469719
Cherrytree
cn=?
Posté le 28-07-2003 à 13:50:47  profilanswer
 

LetoII a écrit :

Après si tu veux qqc de plus fin faut utiliser l'automation, comem l'avais déjà remarquer qqn d'autre (je sais plus qui désolé :D)


ça me fait peur ! Mais je vais peut-être devoir m'y risquer.


---------------
Le site de ma maman
n°469726
VisualC++
J'va y penser ...
Posté le 28-07-2003 à 13:53:55  profilanswer
 

LA methode que je t ai indique via l automation/activex ca prend 4 ligne de code ca va c pas la mort  :whistle:

n°470500
Cherrytree
cn=?
Posté le 29-07-2003 à 09:29:45  profilanswer
 

VisualC++ a écrit :

LA methode que je t ai indique via l automation/activex ca prend 4 ligne de code ca va c pas la mort  :whistle:  


Le contrôle Acrobat que tu utilises quelques posts plus haut, il correspond à quoi, je veux dire : tu le crées ? tu récupères une référence sur un objet qu'Acrobat propose (il y a de la doc sur ces choses là ?) ?


---------------
Le site de ma maman
n°470509
HelloWorld
Salut tout le monde!
Posté le 29-07-2003 à 09:39:02  profilanswer
 

Tu as normalement un ActiveX utilisable depuis ton IDE (ajouter un composant COM).
Sinon y'a le Adobe SDK mais je crois que c'est payant.
Faut chercher avec google ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°470594
Cherrytree
cn=?
Posté le 29-07-2003 à 10:19:02  profilanswer
 

Je ne suis pas sorti de l'auberge.


---------------
Le site de ma maman
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C Windows] Imprimer un PDF

 

Sujets relatifs
[C Windows] Signature d'une méthodeCherche documentation Java: GSJava au format PDF
GTK pour windows, ça existe ?Comment recupere t on la liste des processus sous windows (autre prob)
[Visual Studio] Empêcher debuggage sous windows !?LookandFeel windows ? marche pas
besoin de conseils pour dev C++/windows[C/C++ sockets windows] Limite de connexions sur un serveur
Génération de PDF, marchait sur IE 5, marche plus sur IE6[C] Existance d'un dossier & Utilisateur windows
Plus de sujets relatifs à : [C Windows] Imprimer un PDF


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR