abracadabraPDF › Forums › PDF – Général › Un Script (petit)
- Ce sujet est vide.
-
CréateurSujet
-
4 décembre 2016 à 21:31 #45544Crevette54Participant
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
-
CréateurSujet
-
AuteurRéponses
-
4 décembre 2016 à 22:03 #61752bebarthMaître des clés
bonsoir,
Pour aplatir toutes les pages d’un document, il faut lancer :
this.flattenPages();
@+
:bonjour:5 décembre 2016 à 09:00 #61753MerlinMaître des clésBonjour.
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:6 décembre 2016 à 20:54 #61754Crevette54ParticipantBonsoir,
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
7 décembre 2016 à 17:13 #61755bebarthMaître des clésBonjour,
Veux-tu aplatir ton document sans l’ouvrir ? Est-ce possible ? :Euuuh:
@+
:bonjour:7 décembre 2016 à 20:15 #61756Crevette54ParticipantBonsoir,
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 LongSet 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, NomMasteroPDDoc2.Close
oPDDoc1.CloseSet oPDDoc2 = Nothing
Set oPDDoc1 = NothingKill (NomSlave)
End SubDans 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
7 décembre 2016 à 20:42 #61757bebarthMaître des clésbonsoir,
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:10 décembre 2016 à 23:02 #61758Crevette54ParticipantBonsoir,
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/#post6820394Pour 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.
Crevette11 décembre 2016 à 22:07 #61759bebarthMaître des clésbonsoir,
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:13 décembre 2016 à 21:38 #61760Crevette54ParticipantBonsoir,
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 StringSet 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 IfSet PDDoc = Nothing
End SubEncore merci à tous et surtout à bebarth.
:bonjour:
14 décembre 2020 à 12:47 #61761ChnoirhommeParticipantBonjour,
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
14 décembre 2020 à 15:11 #61762MerlinMaître des clésBonjour
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:14 décembre 2020 à 15:36 #61763ChnoirhommeParticipantOui, 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.
14 décembre 2020 à 17:53 #61764MerlinMaître des clésTout est là, attention deletePages ne fonctionne pas avec Acrobat Reader (Pro ou Standard uniquement) :
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJS/Doc_methods.htm?rhhlterm=deletepage&rhsyns=%20#XREF_99469_deletePages14 décembre 2020 à 18:15 #61765ChnoirhommeParticipantMerci 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éeCode: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 ObjectSet filesystem = CreateObject(“Scripting.FilesystemObject”)
StripFilename = filesystem.GetParentFolderName(sPathFile) & “”
Exit Function
End Function
14 décembre 2020 à 18:37 #61766MerlinMaître des clésMerci
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.