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

VB.NET Discussion :

Importer un fichier xml vers adobe acrobat reader 11 pro + VB.net [Débutant]


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Importer un fichier xml vers adobe acrobat reader 11 pro + VB.net
    Bonjour à tous,

    Je souhaite importer par code VB.net, un fichier .xml dans acrobat reader 11 pro.
    J'utilise Visual Studio 2017 et je n'ai pas de piste, rien trouvé sur ce sujet.
    Est-ce que quelqu'un peut m'indiquer la marche à suivre pour un débutant s'il vous plait?
    Un grand merci!

    Nicolas

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    A priori, un lecteur de pdf ne peut pas ouvrir un xml.
    Peut-être qu'il faudrait nous en dire davantage sur ton objectif ...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Effectivement, je n'ai pas été suffisamment précis.

    J'ai un formulaire en PDF que j'ouvre avec Acrobat reader 11 pro. Dans l'onglet "formulaire"/autre option de formulaire, il est possible d'importer ou exporter des données... Cette action créé un fichier XML avec les données du formulaire.
    J'arrive en VB.net à modifier ce fichier XML et donc interagir avec le PDF. Actuellement, je dois faire l'import des données manuellement et j'aimerai pouvoir gérer cette opération avec du code.

    J'espère avoir été plus précis cette fois.

    Merci pour vos réponses.
    Bien à vous,
    Nicolas

  4. #4
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    C'est en effet beaucoup plus clair mais je voudrais en savoir davantage ...

    En fait, je viens de tester : je crée un xml avec Acrobat et je peux l'ouvrir, le modifier et le réenregistrer avec le NotePad et ce, sans même avoir quitté Acrobat.

    C'est pourquoi je me demande si ton souci est :
    • de lire le fichier XML avec ReadLine et de l'écrire avec WriteLine (il faut "décortiquer" les lignes pour accéder aux données effectives);
    • de lire et écrire le fichier XML des outils XMLDocument (il faut bien connaître le structure du XML pour accéder aux données qui t'intéressent);
    • d'écrire dans le fichier XML, les données modifiées et celles-là seulement (cela est IMPOSSIBLE, mais on peut contourner ...);
    • ...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Ce que je souhaite ce serait uniquement simuler par le code l'action "Importer" que je réalise manuellement lorsque je fais depuis le document1.pdf --> formulaire"/autre option de formulaire "document1_données.xml".
    Je pense qu'il faut ouvrir "document1.pdf"
    Trouver l'action acrobat qui fait importer "document1_données.xml"
    Enregistrer
    Fermer "document1.pdf"

    Merci pour votre aide.

  6. #6
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Donc, ce dont tu as besoin, c'est pouvoir programmer en VB des commandes Acrobat.
    Je ne connais rien en cela mais je vais m'y intéresser dès ce soir.
    En attendant, vois déjà le lien suivant :
    https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/VBJavaScript.pdf
    Il y a aussi des infos à prendre ici :
    http://www.khk.net/wordpress/2009/03...-introduction/
    Bon travail ...

    En partant des liens que je t'ai envoyé, j'ai pu insérer dans un pdf, des pages extraites d'un autre pdf. (cf. code ci-dessous).
    Bien sûr, ce n'est pas ce que tu as demandé. Là, j'ai quelques soucis d'approche parce que je n'ai pas la possibilité de tester manuellement (cf. illustration suivante).
    Je suppose que le nécessaire à ton problème est dans la classe Acrobat.CAcroApp. Il faut fouiller, j'y regarderai encore tout à l'heure ...

    Importation en grisé : pas d'accès.
    Nom : ImportXML.jpg
Affichages : 503
Taille : 19,7 Ko

    L'insertion de pages :
    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
     
    ' Après l'ajout de la référence Acrobat dans les références du projet 
     
            Dim AcroApp As Acrobat.CAcroApp
     
            Dim Part1Document As Acrobat.CAcroPDDoc
            Dim Part2Document As Acrobat.CAcroPDDoc
     
            AcroApp = CreateObject("AcroExch.App")
     
            Part1Document = CreateObject("AcroExch.PDDoc")
            Part2Document = CreateObject("AcroExch.PDDoc")
     
            Part1Document.Open("D:\tmp\Collections.pdf")    ' Fichier existant dans lequel insérrer
            Part2Document.Open("D:\tmp\Collec0.pdf")        ' Fichier existant duquel on va lire les pages à insérrer
     
            Part1Document.InsertPages(1, Part2Document, 0, Part2Document.GetNumPages(), True) ' Après la page 1 de la cible, à partir de la page 0 de la source, toutes les pages de la source
     
            Part1Document.Save(Acrobat.PDSaveFlags.PDSaveFull, "D:\tmp\Collec1.pdf")  ' Fichier existant ou non, sauver le résultat de l'insertion
     
            Part1Document.Close()
            Part2Document.Close()
     
            AcroApp.Exit()
            AcroApp = Nothing
            Part1Document = Nothing
            Part2Document = Nothing

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour les liens.
    Je cherche mais je n'ai pas la solution
    Merci beaucoup.

    J'ai trouvé une fonction ImportAnFDF mais pas encore l'équivalent pour du .xml

  8. #8
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    C'est vrai qu'il y a aussi le format FDF, une alternative à l'XML.
    Je comprends que la problématique des imports et exports d'XML dans Acrobat ne concerne que les formulaires.
    J'ai trouvé un formulaire, je peux le remplir et je peux faire des exports en XML et en FDF, je peux les importer ensuite dans un formulaire non encore rempli.

    J'ai trouvé le document : https://www.adobe.com/content/dam/ac..._reference.pdf
    Il contient sûrement tout ce qu'il faut, notamment ExportAsFDF et ImportAnFDF (à partir de la page 183), mais il y a beaucoup à lire et les exemples sont partiels ..., un peu dur.
    Je reprendrai sans doute un autre jour mais je termine pour ce soir.
    Bon courage à toi pour la suite ...

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour votre aide.

    J'ai trouvé ça mais s'est en C et je ne connais pas. Je me demande si ça pourrait se traduire en VB.NET?

    Code C : 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
    }
     
        /// <summary>
        /// Imports XFA Data into a new PDF file.
        /// </summary>
        /// <param name="pdfTemplate">A PDF File with an unpopulated form.</param>
        /// <param name="xmlFormData">XFA form data in XML format.</param>
        /// <returns>a memorystream containing the new PDF file.</returns>
        public static System.IO.MemoryStream Import(System.IO.Stream pdfTemplate, System.IO.Stream xmlFormData)
        {
            System.IO.MemoryStream outputSteam = new System.IO.MemoryStream();
            using (iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(pdfTemplate))
            {
                using (iTextSharp.text.pdf.PdfStamper stamper = new iTextSharp.text.pdf.PdfStamper(reader, outputSteam))
                {
                    stamper.Writer.CloseStream = false;
                    stamper.AcroFields.Xfa.FillXfaForm(xmlFormData);
                }
            }
            return outputSteam;
        }

    Je vais parcourir le document Interapplication en espérant trouver la solution. Merci encore, je vous tiens au courant de mes avancées.
    Bonne soirée

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    EUREKA!!!

    J'ai réussi,

    Voici la solution :

    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
    Public Shared Sub XFAImport(pdfTemplate As System.IO.Stream, xmlFormData As System.IO.Stream, outputStream As System.IO.Stream)
            ' Imports XFA Data into a new PDF file.
            ' pdfTemplate is PDF File with an unpopulated form
            ' xmlFormData is an XFA form data in XML format (the data we wish to enter)
            ' We get a memorystream containing the new PDF file
     
            Dim reader As iTextSharp.text.pdf.PdfReader = New iTextSharp.text.pdf.PdfReader(pdfTemplate)
            iTextSharp.text.pdf.PdfReader.unethicalreading = True ' Allow reading a PDF file that is protected by a password
     
            Using reader
                Using stamper As New iTextSharp.text.pdf.PdfStamper(reader, outputStream, "\0", True)
                    stamper.Writer.CloseStream = False
                    stamper.AcroFields.Xfa.FillXfaForm(xmlFormData)
                End Using
            End Using
        End Sub
    Puis pour l'execution

    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
            Dim Alerte As String = "erreur"
            Dim ModelePDF As String = Environment.CurrentDirectory & "\" & ... & "\" & "XXX.pdf"
            Dim newXml As String = nomRepertoire & "\" & ...& "_" & "XXXxml.xml"
            Dim nomFichierPropre As String = Environment.CurrentDirectory & "\" & ... & "\" & "XXX.pdf"
            Dim tabN As String() = nomFichierPropre.Split("\")
            nomFichierPropre = tabN(tabN.Length - 1)
            Dim fichierDestination As String = nomRepertoire & "\" & ... & "_" & nomFichierPropre
            Dim PDFAVECDONNEES As String = fichierDestination
     
     
            Dim pdfTemplate As New FileStream(ModelePDF, FileMode.Open, FileAccess.Read)
            Dim xmlFormData As New FileStream(newXml, FileMode.Open, FileAccess.Read)
            Dim outputStream As New FileStream(PDFAVECDONNEES, FileMode.Create, FileAccess.Write)
            Try
                XFAImport(pdfTemplate, xmlFormData, outputStream)
            Catch ex As Exception
                Alerte = "Error detected: " & ex.Message
            End Try
     
            outputStream.Close()
            pdfTemplate.Close()
            xmlFormData.Close()
            outputStream = Nothing
            pdfTemplate = Nothing
            xmlFormData = Nothing

    Merci pour ton aide. J'espère que mes recherches aideront d'autres personnes.
    Cordialement,

  11. #11
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Oui ton code d'hier soir est du C#. C'est pas difficile à traduire en VB mais il utilise une librairie iText qui est externe à VisualStudio.
    Par contre, ton code de ce matin en VB n’utilise pas cette librairie : je vais essayer ça tout à l'heure.
    Très bonne journée ...

    Edit
    J'avais mal vu ce matin : ton code utilise bien la librairie ItextSharp ...
    Une fois la dll itextsharp référencée, ça va mieux !
    Bonne continuation

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

Discussions similaires

  1. [WD18] Importer un fichier XML vers HFSQL
    Par Devloppor dans le forum WinDev
    Réponses: 1
    Dernier message: 24/12/2014, 17h06
  2. import de fichier xml vers Excel
    Par zidenne dans le forum Excel
    Réponses: 5
    Dernier message: 30/08/2012, 14h28
  3. Import de fichiers XML vers une table
    Par Emile87 dans le forum Oracle
    Réponses: 3
    Dernier message: 29/02/2012, 17h40
  4. Réponses: 1
    Dernier message: 28/04/2006, 16h17
  5. Importation d'un fichier xml vers une BD mysql avec php
    Par naima2005 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 28/04/2006, 15h23

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