PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Création de signets dans un pdf fusionné
Création de signets dans un pdf fusionné
Débuté par ccariou, 06 mai 2014 12:51 - 2 réponses
Posté le 06 mai 2014 - 12:51
Bonjour,

J'essaie désespérément de recréer des signets dans un fichier PDF fusionné.
J'ai utilisé PDFTK, GHOSTSCRIPT et mbPDFAsm et rien n'y fait.
Je ne comprend pas pourquoi cela ne fonctionne pas.

Quelqu'un aurait-il déjà fait ça ?

Merci
Membre enregistré
962 messages
Posté le 07 mai 2014 - 09:09
hello,
si en fait tu veux remettre les signets des fichiers PDF que tu fusionnes tu peux utiliser l'assemblage dotnet itextSharp.

Voici un exemple en windev qui fusionne deux PDF en remettant les signets d'origine :
mesFichiersPDF est un tableau de chaînes
Ajoute(mesFichiersPDF,"F:\pdf_with_bookmarks_1.pdf")
Ajoute(mesFichiersPDF,"F:\pdf_with_bookmarks_2.pdf")
MergeFichiersPDF(mesFichiersPDF,"F:\mergedPDF.pdf")


et voici la procédure MergeFichiersPDF
Procedure MergeFichiersPDF(tabFichiers est un tableau de chaînes,FichierDest est une chaîne)
// J.P Mai 2014
n est un entier = 0
pagesTotales est un entier = 0
offsetPage est un entier = 0
page est un PdfImportedPage dynamique
signets est une ArrayList
premier est un booléen = Vrai
monFLux est un FileStream(FichierDest,FileMode.Create)
POUR TOUT fichierPDF DE tabFichiers
MonFichierPDF est un PdfReader(fichierPDF)
MonFichierPDF.ConsolidateNamedDestinations()
n = MonFichierPDF.get_NumberOfPages()
signetsTemp est une ArrayList dynamique = SimpleBookmark.GetBookmark(MonFichierPDF )
SI premier ALORS
monDocument est un "iTextSharp.text.Document"(MonFichierPDF.GetPageSizeWithRotation(1))
monPdfCpy est un PdfCopy(monDocument, monFLux)
monDocument.Open()
SimpleBookmark.ShiftPageNumbers(signetsTemp,offsetPage, Null)
offsetPage += n
SI signetsTemp <> Null ALORS signets.AddRange(signetsTemp)
pagesTotales = n
premier = Faux
SINON
SimpleBookmark.ShiftPageNumbers(signetsTemp,offsetPage, Null)
SI signetsTemp <> Null ALORS signets.AddRange(signetsTemp)
offsetPage += n
pagesTotales += n
FIN
POUR j=1 _A_ n
page = monPdfCpy.GetImportedPage(MonFichierPDF, j);
monPdfCpy.AddPage(page)
FIN
MonFichierPDF.Close()
FIN
monPdfCpy.Outlines = signets
monDocument.Close()


Ami calmant, J.P
Posté le 04 décembre 2017 - 20:18
Bonjour,
Très instructif et très intéressant. J'ai aussi lu ton code pour obtenir les champs d'un formulaire PDF mais comment les modifier le contenu ou les remplir par programmation ?
Merci