Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2007, 17h29   #1
Invité de passage
 
Inscription : mars 2003
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 10
Points : 0
Points : 0
Par défaut Générer pdf à partir de forms

Bonjour

j’utilise une application forms version Web sous oracle 10g qui consulte des documents Words via l’utilisation des fonctions client_ole2

exemple :
Code :
1
2
3
4
5
6
7
8
 
application := client_ole2.create_obj('Word.Application');
client_ole2.set_property(application,'visible',1);
myDocs := client_ole2.GET_OBJ_PROPERTY(application, 'Documents');
args := client_ole2.create_arglist ;
client_ole2.add_arg(args,pv_fichier_resultat);
CLIENT_OLE2.invoke(myDocs,'Open',args); 
client_ole2.destroy_arglist(args);
Ce que j’aimerai faire est transformer ces documents word en document pdf.
J’ai pour cela a ma disposition l’outil PDF Creator

Est-ce que je peux l’appeler via une fonction OLE ?
Si non cet outil est défini en tant qu’imprimante. Y a-t-il un moyen de piloter word et de lui demander une impression vers cette imprimante ?

Merci de votre aide

bcung
bcung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 18h26   #2
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
je pense que toujours avec OLE2 tu peux utiliser la propriété
Application.ActivePrinter (="PdfCreator")
et la méthode
Application.PrintOut
Enregistre la macro sous word et reprogramme la avec OLE2

Petit problème : PdfCreator demande le nom du fichier en interactif !
(peut-etre paramêtre FileName de Print out ?)
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 23h51   #3
Invité de passage
 
Inscription : mars 2003
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 10
Points : 0
Points : 0
Heu ... merci de ta reponse mais je ne maitrise pas tres bien tout ca ...
Est-ce que tu aurais un exemple de code.
bcung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 10h57   #4
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Citation:
Envoyé par bcung
Heu ... merci de ta reponse mais je ne maitrise pas tres bien tout ca ...
Est-ce que tu aurais un exemple de code.
Sans garantie (pas testé ), ca serait qq chose du genre
Code :
1
2
3
 
client_ole2.SET_PROPERTY(application, 'Activeprinter','pdfcreator');
client_ole2.Invoke(application,'PrintOut');
Note : tu t'attaques là à des techniques disons... "avancées".
Il faut quand même un peu maitriser Windows (en l'occurence OLE2) ,VBA et Forms.
Je t'indique des pistes ! A toi de te documenter (Google, Forum, Aide forms, etc)
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 11h30   #5
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 534
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 534
Points : 6 471
Points : 6 471
J'utilise GhostScript pour faire cela.

voici la macro contenue dans le doc MSWord:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub PrintPdf()
'
' PrintPdf Macro
'
    Dim strActivePrinter As String
    ' Get active printer.
    strActivePrinter = Application.ActivePrinter
    ' Change to the Microsoft Fax printer driver.
    Application.ActivePrinter = "GhostScript"
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
        Collate:=True, Background:=True, PrintToFile:=False, PrintZoomColumn:=0, _
        PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
    ' CHANGE back TO the DEFAULT printer.
    Application.ActivePrinter = strActivePrinter
End Sub
et le code Forms pour lancer l'impression:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
PROCEDURE sauv_pdf ( PC$FileName IN Varchar2 )
IS
  myapplication client_ole2.obj_type;
  mydocuments client_ole2.obj_type;
  mydocument client_ole2.obj_type;
  args client_ole2.list_type;
Begin
  myapplication := client_ole2.create_obj ('Word.Application');
  client_ole2.set_property (myapplication, 'Visible', 0);
  mydocuments := client_ole2.get_obj_property (myapplication, 'Documents');
  args := client_ole2.create_arglist;
  client_ole2.add_arg (args, PC$FileName);
  mydocument := client_ole2.invoke_obj (mydocuments, 'Open', args);
  client_ole2.destroy_arglist (args);
  args := client_ole2.create_arglist;
  client_ole2.add_arg (args, 'PrintPdf');
  client_ole2.invoke (myapplication, 'Run', args);
  client_ole2.destroy_arglist (args);
  client_ole2.invoke(myapplication,'Quit');
  client_ole2.Release_obj (mydocument);
  client_ole2.Release_obj (mydocuments);
  client_ole2.Release_obj (myapplication);
End;
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2007, 12h22   #6
Invité de passage
 
Inscription : mars 2003
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 10
Points : 0
Points : 0
Merci à tous les deux.

J’ai réussi à mettre en place la procédure + macro de SheikYerbouti et cela fonctionne très bien.
Il me reste cependant un dernier point à régler.
Je n’utilise pas GhostScript comme toi, mais PdfCreator et cet outil ouvre une fenêtre de dialogue avant de sauvegarder le pdf pour demander plus d’infos (titre, auteur, sujets …).

Comme je souhaite que ma procédure soit transparente pour les utilisateurs, y a-t-il un moyen de confirmer les infos standards dans la macro ?
Il y a bien une option autosave au niveau du paramétrage de PDFCreator, mais est-ce que je peux l’activer à partir de la macro et la désactiver une fois l’impression terminée ?
bcung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2007, 14h35   #7
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 534
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 534
Points : 6 471
Points : 6 471
Sinon, il y a aussi PDFMail qui permet de figer le répertoire et nom de fichier en sortie.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2007, 15h22   #8
Invité de passage
 
Inscription : mars 2003
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 10
Points : 0
Points : 0
Oui mais en l'occurence je suis obligé d'utiliser PDFCreator.
bcung est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h41.


 
 
 
 
Partenaires

Hébergement Web