Donnez vie à vos documents numériques !
 

Un Script (petit)

abracadabraPDF Forums PDF – Général Un Script (petit)

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45544
    Crevette54
    Participant

    Bonsoir,

    je me permets de vous solliciter car ma spécialité est plutôt la programmation dans office.

    Grace à la discussion sur developpez.com (j’ai donné le lien dans l’autre discussion) j’arrive à piloter Acrobat depuis du code vba.

    Ma dernière idée est d’aplatir un formulaire pdf depuis du code vba, actuellement je lance un impression en pdf mais le rendu n’est pas très beau.

    Il y a un code qui explique comment lancer un script depuis vba mais il faut que le script soit dans le répertoire des scripts d’acrobat.

    Voilà mon besoin  :Ooops:, un fichier script qui aplatie…

    Un grand merci pour votre aide.  :priere:

    Crevette

Affichage de 15 réponses de 1 à 15 (sur un total de 15)
  • Auteur
    Réponses
  • #61752
    bebarth
    Maître des clés

    bonsoir,
    Pour aplatir toutes les pages d’un document, il faut lancer :
    this.flattenPages();
    @+
    :bonjour:

    #61753
    Merlin
    Maître des clés

    Bonjour.

    Ma dernière idée est d’aplatir un formulaire pdf depuis du code vba, actuellement je lance un impression en pdf mais le rendu n’est pas très beau.

    As-tu vérifié le résultat ?
    Parce-que logiquement l’aplatissement ne devrait rien changer au rendu imprimé…  :doute:

    #61754
    Crevette54
    Participant

    Bonsoir,

    oui il y a une différence  voir image jointe avec à gauche la version aplatit et à droite la version imprimé en pdf.

    Merci pour vos réponses, j’arrive à mettre un bouton sur le formulaire pour lancer la commande d’aplatissement, mais j’ai besoin de la mettre dans un fichier script pour pouvoir le lancer depuis access.

    Merci par avance.

    Crevette

    #61755
    bebarth
    Maître des clés

    Bonjour,
    Veux-tu aplatir ton document sans l’ouvrir ? Est-ce possible ?  :Euuuh:
    @+
    :bonjour:

    #61756
    Crevette54
    Participant

    Bonsoir,

    en fait depuis vba, j’utilise les bibliothèques d’acrobat pour pouvoir le piloter.
    Cela permet facilement d’ouvrir un objet acrobat et de le manipuler comme enlever une page défini, remplir directement les champs d’un formulaire et aussi les lire, de lire dles commentaire lire et inserer des métadonnées, manipuler les signets…

    Je mets un exemple de code qui permet d’insérer un pdf dans un autre :

    Code:
    ‘Insert les pages de NomSlave dans NomMaster.

    Sub Fusion_PDF(NomMaster As String, NomSlave As String, ou_ As Integer, NbrePage As Integer)
    Dim oPDDoc1 As Object
    Dim oPDDoc2 As Object
    Dim oPDDoc3 As Object
    Dim Num As Long

    Set oPDDoc1 = CreateObject(“AcroExch.PDDoc”)
    Set oPDDoc2 = CreateObject(“AcroExch.PDDoc”)

    oPDDoc1.Open (NomMaster)
    oPDDoc2.Open (NomSlave)
     
       
    ‘  Pour connaitre le nombre de pages
    Num = oPDDoc2.GetNumPages()
    ‘Debug.Print Num
    ‘  Paramètres :
    ‘  1 Page du document en cours après laquelle l’insertion sera faite. La 1ere page est 0.
    ‘  2 Document contenant les pages à insérer.
    ‘  3 La 1ere page à être insérée dans le document en cours à partir du Document contenant les pages à insérer.
    ‘  4 Le nombre de pages à insérer.
    ‘  5 Si nombre > 0 les bookmarks sont copiés, si 0 ils ne le sont pas.

    oPDDoc1.InsertPages ou_, oPDDoc2, 0, Num, 0
    oPDDoc1.Save 1, NomMaster

    oPDDoc2.Close
    oPDDoc1.Close

    Set oPDDoc2 = Nothing
    Set oPDDoc1 = Nothing

    Kill (NomSlave)
       
    End Sub

    Dans le cas ou il n’y a pas ce qu’il faut on peut aussi envoyer des commandes ‘sendkey’.

    Bref, tout cela pour en revenir à mes moutons  :siffle:

    Merci par avance.

    Crevette

    #61757
    bebarth
    Maître des clés

    bonsoir,
    Je crois que je ne comprends pas tout : que sont les commandes que tu peux envoyer via sendkey ? des commandes javascripts ?
    J’ai trouvé ça sur le web, je ne sais pas si ça peut t’être utile…
    http://www.planetpdf.com/forumarchive/155334.asp
    @+
    :bonjour:

    #61758
    Crevette54
    Participant

    Bonsoir,

    Merci pour le lien, effectivement le code est la même pratique.
    Je te mets le lien de la discussion sur developpez, tu pourras y jeter un coup d’œil.
    Voici le lien du code que je veux utiliser pour lancer l’aplatissement d’un formulaire :
    http://www.developpez.net/forums/d431662-2/logiciels/microsoft-office/excel/contribuez/excel-word-pdf-adobe-acrobat-pro-pdfcreator/#post6820394

    Pour cela il me faut un fichier script avec la commande d’aplatissement qui fonctionne un peu comme la fonction rajoutée grace aux outils de abracadabrapdf.

    Merci.
    Crevette

    #61759
    bebarth
    Maître des clés

    bonsoir,
    Ci-joint le fichier .js à placer dans le dossier JavaScripts d’Adobe Acrobat (à décompresser avant !!!).
    Puis tu appelles la fonction avec …Aplatir(), donc si j’ai compris :
    Debug.Print JSO.Aplatir()
    Tu me diras !
    @+
    :bonjour:

    #61760
    Crevette54
    Participant

    Bonsoir,

    Cela ne fonctionne pas !!!  :mur:

    Bon, bizarrement ou pas en fait vu que je ne connais pas les rouages d’Acrobat, il faut que le fichier soit ouvert pour que cela fonctionne.

    Normalement, lors de l’ouverture des objets Acrobat, il s’ouvre en arrière plan, mais ce soir avec mes essais cela ne veut pas.

    Donc avant une intégration fonctionnelle dans Access, voici le code fonctionnel sans avoir pousser plus loin :

    Code:
    Sub Tst_JScript()
    Dim PDDoc As Object
    Dim JSO As Object
    Dim sFichier As String

        Set PDDoc = CreateObject(“AcroExch.PDDoc”)

        sFichier = “C:UsersjeromeDocumentsFI_BD_FO.pdf”
       
        ShellExec (“C:UsersjeromeDocumentsFI_BD_FO.pdf”)
       
        If PDDoc.Open(sFichier) Then
            Set JSO = PDDoc.GetJSObject
            Debug.Print JSO.Aplatir()
            PDDoc.Close
            Set JSO = Nothing
        End If

        Set PDDoc = Nothing
     
    End Sub

    Encore merci à tous et surtout à bebarth.

    :bonjour:

    #61761
    Chnoirhomme
    Participant

    Bonjour,

    J’ai vu dans cette conversation qu’il existait un code pour enlever des pages d’un formulaire PDF via un codage VBA Excel.

    Merci pour votre aide

    #61762
    Merlin
    Maître des clés

    Bonjour

    Je te conseille le lien ci-dessus vers le forum developpez.com car ici on parle PDF et JavaScript.
    VBA Excel c’est un autre monde.
    :joker:

    #61763
    Chnoirhomme
    Participant

    Oui, je sais et c’est pour cela, comme pour le publipostage de valeur valeur via Excel, je voulais savoir si je pouvais supprimer des page d’un PDF.
    Cela pourrais aussi me convenir par un code JAVASCRIT qui suivant la valeur d’une cellule supprimerais les pages X, XY, ou encore XYZ ou plus encore.

    Merci pour votre aide.

    #61764
    Merlin
    Maître des clés
    #61765
    Chnoirhomme
    Participant

    Merci Merlin pour le support,
    J’ai trouvé et adapté un code qui a l’air de marcher.

    Une petite contribution pour les autres, j’ai déjà eu énormément du site, merci :

    Les pages doivent être incriminées dans le sens opposé la dernière en premier et la première en dernier.
    Bonne soirée

    Code:
    Sub DeletePDFPages()
    Dim strSourceFullPath As String, strDestinationFullPath As String
    Dim iStartPage As Long, iNumPages As Long
    Dim PDDocSource As Object, PDDocTarget As Object
    Dim Cell As Range, Cell1 As Range, Rng As Range
    Application.ScreenUpdating = False
        Set PDDocSource = CreateObject(“AcroExch.PDDoc”)
        Set PDDocTarget = CreateObject(“AcroExch.PDDoc”)

        Set Rng = Range(“a1”, ActiveSheet.Range(“a” & ActiveSheet.Rows.Count).End(xlUp)) ‘ Selection
     
        strSourceFullPath = Application.GetOpenFilename(“PDF Files (*.pdf), *.pdf”)
        strDestinationFullPath = StripFilename(strSourceFullPath) & InputBox(“Output FileName”) & “.pdf”
         
        ‘ Create a new PDDoc
      If PDDocTarget.Create <> True Then
            MsgBox “Unable to create a new PDF”
            Exit Sub
        End If
       
            ‘ Open the PDF source file (the file we are going to take pages from)
        If PDDocSource.Open(strSourceFullPath) <> True Then
            MsgBox “Unable to open the source PDF”
            Exit Sub
        End If
           
        For Each Cell In Rng

        ‘ Set the page range you wish to delete
        ‘ Don’t forget that this is zero based
        iStartPage = Cell – 1
     
        ‘ Set the number of pages you wish to delete
        iNumPages = 0
         
            ‘ Insert the pages from the source PDF file to the target PDF
      If PDDocSource.DeletePages(iStartPage, iStartPage) <> True Then
          MsgBox “Unable to Delete”
          Exit Sub
      End If
         
     

        Next Cell
       
            ‘ Save the new file
        If PDDocSource.Save(&H1, strDestinationFullPath) <> True Then
            MsgBox “Unable to save the pdf”
            Exit Sub
        End If
       
        ‘Close the PDF files
        PDDocSource.Close
        PDDocTarget.Close
       
        ‘ Clean up
        Set PDDocSource = Nothing
        Set PDDocTarget = Nothing
        Application.ScreenUpdating = True
      MsgBox “File Saved to ” & strDestinationFullPath
    End Sub
    Function StripFilename(sPathFile As String) As String
    ‘given a full path and file, strip the filename off the end and return the path
    Dim filesystem As Object

    Set filesystem = CreateObject(“Scripting.FilesystemObject”)

    StripFilename = filesystem.GetParentFolderName(sPathFile) & “”

    Exit Function

    End Function

    #61766
    Merlin
    Maître des clés

    Merci

Affichage de 15 réponses de 1 à 15 (sur un total de 15)
  • Vous devez être connecté pour répondre à ce sujet.