PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → PDFusionne avec signets de titres
PDFusionne avec signets de titres
Iniciado por THIERRY TILLIER, 06,jul. 2020 21:05 - 3 respuestas
Miembro registrado
1.173 mensajes
Publicado el 06,julio 2020 - 21:05
Bonsoir,

Et, oui la question qui suit mon dernier post est celle-ci :
Comment fusionner 2 PDF dont l'un contient des signets que je souhaite conserver.

J'ai vu pas mal de sujets évoquant le problème mais aucun ne le résout (hormis peut-être avec iTexteSharp qui est payant).

Avez-vous d'autres inspirations sur le sujets ?

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Miembro registrado
1.173 mensajes
Publicado el 06,julio 2020 - 21:06
*sur le sujet ?

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Miembro registrado
962 mensajes
Publicado el 07,julio 2020 - 07:13
hello,
THIERRY TILLIER a écrit :
> J'ai vu pas mal de sujets évoquant le problème mais aucun ne le résout (hormis peut-être avec iTexteSharp qui est payant).

itextsharp qui est devenu itext 7 n'est pas vraiment payant, il a une licence AGPL c'est à dire que :
Si vous souhaitez commercialiser votre projet F/OSS, vous devez obligatoirement acheter une licence commerciale pour supprimer les restrictions de copyleft. Vous serez alors autorisé à vendre ou à utiliser votre application en code source propriétaire.
Pour une utilisation interne, il n'y pas alors de restriction.

Toutefois on peut toujours utiliser l'ancienne version 4.1.6 qui elle est de licence LGPL/MPL c'est à dire sans restriction même en utilisation commerciale.

Voici comment fusionner deux documents PDF (avec ou sans signet) en utilisant la version 4.1.6 d'itextsharp
A - Récupérer la version 4.1.6 de itextsharp
1 - page de téléchargement : https://www.nuget.org/packages/itextsharp.4.1.6.0
2 - Télécharger le paquet nuget (.nupkg) - décompresser le (avec 7zip par exemple) et extraire le fichier itextsharp.dll qui se trouve dans le répertoire lib du nupkg
3 - Ajouter l'assemblage dotnet itextsharp à son projet

Procédure de fusion de fichiers PDF (avec ou sans signet) :
PROCEDURE FusionFichiersPDF(tabFichiers est un tableau de chaînes,FichierDest est une chaîne)
// J.P Juillet 2020
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()
SI signetsTemp <> Null ALORS
SimpleBookmark.ShiftPageNumbers(signetsTemp,offsetPage, Null)
signets.AddRange(signetsTemp)
FIN
offsetPage += n
pagesTotales = n
premier = Faux
SINON
SI signetsTemp <> Null ALORS
SimpleBookmark.ShiftPageNumbers(signetsTemp,offsetPage, Null)
signets.AddRange(signetsTemp)
FIN
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()


Exemple d'utilisation :
mesFichiersPDF est un tableau de chaînes
Ajoute(mesFichiersPDF,"M:\test\pdf_avec_signets.pdf")
Ajoute(mesFichiersPDF,"M:\test\pdf_sans_signet.pdf")
FusionFichiersPDF(mesFichiersPDF,"M:\test\fusionPDF.pdf")


--
Ami calmant, J.P
Miembro registrado
1.173 mensajes
Publicado el 07,julio 2020 - 08:09
Merci JP,
Je regarde ça.

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net