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

Forms Oracle Discussion :

Générer pdf à partir de forms


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 10
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    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 ?)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 10
    Par défaut
    Heu ... merci de ta reponse mais je ne maitrise pas tres bien tout ca ...
    Est-ce que tu aurais un exemple de code.

  4. #4
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    J'utilise GhostScript pour faire cela.

    voici la macro contenue dans le doc MSWord:

    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
    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 : 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
     
    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;

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 10
    Par défaut
    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 ?

Discussions similaires

  1. Générer PDF à partir d'un modèle Excel
    Par ragnarokr dans le forum Langage
    Réponses: 4
    Dernier message: 10/02/2014, 15h58
  2. Générer PDF à partir d'une JSF à l'aide de FOP
    Par azassma dans le forum Documents
    Réponses: 2
    Dernier message: 08/05/2012, 11h52
  3. Réponses: 3
    Dernier message: 06/03/2008, 16h16
  4. [FOP]Générer PDF à partir de XML..
    Par denissay dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 15/11/2007, 09h07
  5. générer PDF à partir d'une page web
    Par kroukse dans le forum C#
    Réponses: 16
    Dernier message: 12/09/2007, 11h55

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