PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → mettre un tampon ou filigrane sur un pdf
mettre un tampon ou filigrane sur un pdf
Débuté par BBF, 04 déc. 2013 12:32 - 19 réponses
Membre enregistré
148 messages
Popularité : +3 (3 votes)
Posté le 04 décembre 2013 - 12:32
bonjour
auparavant j'utilisais pdftk (piloté par windev) pour insérer des filigranes ou tampon sur des pdf.
fonctionnait très bien.
Cet outil n'est plus gratuit, puis il y a une une licence à respecter bien évidemment.

serait il possible de faire cela en windev?

filigrane ou tampon sur une ou toutes les pages d'un document.

merci
Membre enregistré
87 messages
Posté le 06 janvier 2015 - 12:42
bonjour

ceci m'interresse aussi j'ai exactement le même besoin, est-ce que quelqu'un à un moyen de le faire ?

cordialement
Posté le 06 janvier 2015 - 14:05
Bonjour

oui, ca doit être possible

UN champ image pour lire le pdf d'origine page par page
Une image qui contient le filigrane sur fond transparent
Superposition des deux images par dcopyImage
Sauvegarde de l'image résultante
et finalement une boucle sur ces images avec un dImprimeImage

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXReplication, votre système de réplication open source est
disponible sur mon site web !!!
WXShowroom.com : Montrez vos projets !
Plus d'information sur http://fabriceharari.com

On 1/6/2015 6:42 AM, Sylvere72 wrote:
bonjour

ceci m'interresse aussi j'ai exactement le même besoin, est-ce que
quelqu'un à un moyen de le faire ?

cordialement
Membre enregistré
46 messages
Popularité : +4 (4 votes)
Posté le 06 janvier 2015 - 14:08
Bonjour,
Je ne crois pas qu'il est possible de le faire directement avec windev.
Personnellement, je le fais avec une ancienne version gratuite de pdftk...
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 06 janvier 2015 - 15:13
hello,
voici ce que je répondez il y a quelque temps dans le forum developpez.net à cette question :
Je cherche à ajouter à un pdf existant un filigrane (du genre "APPROUVE")

cela semble possible en utilisant l'assemblage dotnet itextSharp. En partant d'un PDF de plusieurs pages, voici 2 exemples de pages que j'obtiens dans un nouveau PDF en ayant ajouté le texte en filigrane "Approuvé Developpez windev" par itextSharp avec une procédure qui fait une vingtaine de lignes :
Procedure FiligranePDF(fichierSource est une chaîne,fichierDestination est une chaîne,monTexte est une chaîne)
// J.P mai 2014
pageindex est un entier
MonFichierPDF est un PdfReader(fichierSource)
fluxSortie est un FileStream(fichierDestination, FileMode.OpenOrCreate)
//create pdfstamper object which is used to add addtional content to source pdf file
pdfStamper est un PdfStamper(MonFichierPDF,fluxSortie)
//iterate through all pages in source pdf
POUR pageindex = 1 _A_ MonFichierPDF.NumberOfPages
//Rectangle class in iText represent geometric representation... in this case, rectangle object would contain page geometry
pageRectangle est un "itextsharp.text.rectangle" dynamique = MonFichierPDF.GetPageSizeWithRotation(pageindex)
//pdfcontentbyte object contains graphics and text content of page returned by pdfstamper
pdfData est un PdfContentByte dynamique = pdfStamper.GetOverContent(pageindex)
//create fontsize for watermark
pdfData.SetFontAndSize(BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 40);
//create new graphics state and assign opacity
graphicsState est un PdfGState()
graphicsState.FillOpacity = 0.4
//set graphics state to pdfcontentbyte
pdfData.SetGState(graphicsState);
//set color of watermark
pdfData.SetColorFill(Color.BLUE)
//indicates start of writing of text
pdfData.BeginText();
//show text as per position and rotation
pdfData.ShowTextAligned(Element.ALIGN_CENTER, monTexte, pageRectangle.Width / 2, pageRectangle.Height / 2, 45);
//call endText to invalid font set
pdfData.EndText()
FIN
//close stamper and output filestream
pdfStamper.Close()
fluxSortie.Close()


A partir de la version 5, iText est passé en licence AGPL ( c'est à dire très restrictive pour un projet commercial). Par contre l'ancienne version la 4.1.6 est en licence MPL/LGPL (beaucoup moins restrictive). Pour faire le test, j'ai utilisé la version 4.1.6 disponible ici :
http://pdfviewernet.googlecode.com/svn-history/r55/trunk/PDFView/PDFView/lib/itextsharp.dll

un exemple d'appel :
FiligranePDF("F:\mergedPDF.pdf","F:\PDFavecFiligrane.pdf","Approuvé Developpez.net windev")

Le texte est mis au dessus grâce à pdfStamper.GetOverContent. Pour le mettre en fond de page utiliser pdfStamper.GetUnderContent.

voici ce que cela donne :





--
Ami calmant, J.P
Posté le 20 janvier 2015 - 15:20
Bonjour Jurassic Pork, très bel exemple. n'ayant jamais intégré une Dll extérieur comment fait-on. pourriez-vous me donner un exemple ? Par avance merci
Membre enregistré
1 message
Posté le 20 janvier 2015 - 15:29
Bonjour à tous
Très bel exemple de Jurassic Pork, débutant avec les DLL extérieur, avez-vous un exemple pour intégrer / déclarer la DLL itextSherp ?
Par avance merci
Posté le 20 janvier 2015 - 18:59
Bonsoir,

moi j'utilise la structure Filigrane de WinDev et ça marche très bien... je ne sais pas si ça répond à ce que vous souhaitez faire ...

http://doc.pcsoft.fr/fr-FR/?9000129&name=Imprimer_un_texte_en_filigrane
Posté le 22 janvier 2015 - 09:10
Bonjour à tous, cela répond parfaitement au problème du filigrane.
Mon interrogation est plutôt sur l'utilisation des DLL externes.
Comment les déclarer et comment y accéder.
Bon développement à tous
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 22 janvier 2015 - 09:42
hello,
itextsharp n'est pas vraiment une dll mais plutôt un assemblage dotnet. Pour intégrer un assemblage dotnet dans un projet windev, il faut passer par le menu d'importation d'assemblage dotnet. Voir ici : http://doc.pcsoft.fr/fr-FR/?2012002

--
Ami calmant, J.P
Membre enregistré
148 messages
Popularité : +3 (3 votes)
Posté le 22 janvier 2015 - 10:04
bonjour
@J.Fernandez
non ta méthode ne fonctionne qu'avec les états windev.

La méthode proposée par Jurassic Pork est fonctionnelle. un grand merci à lui!
Posté le 22 janvier 2015 - 10:42
Effectivement, je confirme que la méthode décrite par Jurassic Pork fonctionne super bien.
Grand merci à tous
Bon developpement
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 16 juin 2015 - 12:02
Super, ça m'a bien dépanné ! ;-)

--
Vincent
Posté le 29 décembre 2015 - 13:29
Bonjour JP,

je débute vraiment avec .NET de itextsharp dans windev et je vous avoue qu'un petit coup de main de votre part serait plus que bienvenu.

l'objet de l'exercice est de lire les champs de saisie text d'un formulaire PDF. Je pourrais me contenter d'un eventuel:
sFichier est une chaîne

// Ouvre le sélecteur de fichiers
sFichier = fSélecteur("", "", "Sélectionnez un fichier...", "Tous les fichiers (*.*)" + TAB + "*.*", "*.*")

MonFichierPDF est un PdfReader(sFichier)
my_formulaire est un AcroFields dynamique = MonFichierPDF.get_AcroFields()

POUR TOUT MONFieldElement DE my_formulaire.fields
my_Field est un Variant = my_formulaire.GetField(MONFieldElement.Key)
Trace(my_Field )
FIN


mais le soucis est que j'ai besoin d'également récupérer le libellé dans son intégralité. En effet, je cache un identifiant de table dans ce libellé. Auriez-vous une suggestion ?

merci
Membre enregistré
3 messages
Posté le 07 juillet 2017 - 15:47
Bonjour,

je débute avec iTextSharp et je tentais de reproduire l'exemple ce Tarte Vardor ci dessous mais j'ai 2 erreurs.
La ligne de commande :
my_formulaire est un AcroFields dynamique=MonFichierPDF.get_AcroFields() est en erreur (surligné dans le code)





Après de multiples recherches je ne trouve pas de solution. Quelqu'un peut-il me briffer pour cette correction.

Merci de votre aide

--
Windows 10 / Windev 20
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 08 juillet 2017 - 08:37
hello,
pour répondre à Tarte Vador avec un peu de retard ;( . Si tu veux visualiser les libellés de champ et la valeur remplie de champ d'un formulaire PDF à remplir tu peux faire comme ceci par exemple :
MonFichierPDF est un PdfReader("F:\temp\interactiveform_filled.pdf")
formulaire est un AcroFields dynamique
formulaire = MonFichierPDF.get_AcroFields()
POUR TOUT MONFieldElement de formulaire.Fields
Trace(MONFieldElement.Key," -> ",formulaire.GetField(MONFieldElement.Key))
FIN

résultat :




Quand au souci de DevWin :
1 - Quel message d'erreur sur les variables surlignées ?
2 - Quelle version de itextSharp ?
3 - L'assemblage itextsharp a-t-il bien été ajouté au projet ?

d'autre part je rappelle ceci concernant itextsharp :
iText, et par extension, iTextSharp, est sous licence AGPL. Cela signifie qu’elle est gratuite sous certaines conditions dont la publication du code source de son projet. La version commerciale permet de s’affranchir de ces contraintes. Si toutefois vous ne souhaitez pas débourser un centime, il reste la possibilité d’utiliser la version 4.1.6 qui est sous licence LGPL/MPL.


moi j'utilise toujours la version 4.1.6

--
Ami calmant, J.P
Membre enregistré
3 messages
Posté le 08 juillet 2017 - 21:44
Bonjour,

J'ai installé la version 4.1.6 de iTextSharp un reboot de pc et c'est OK.

Merci JP pour tes exemples.

--
Windows 10 / Windev 20
Posté le 17 novembre 2018 - 11:23
Utiliser une solution tierce que je voudrais suggérer, essayez softaken pdf watermark. Lien de téléchargement: - https://www.softaken.com/fr/ajouter-un-filigrane-pdf
Posté le 13 juillet 2020 - 10:20
Je ne sais pas si c'est toujours d'actualité, mais il y a une solution simple

MonPdf est un pdfDocument
MonFiligrane est un Filigrane
MonFiligrane..Texte = "DUPLICATA TEST 54 "

MonPdf = PDFOuvre(SAI_pdf)

iParamètreFiligrane(iFiligraneImpression+iFiligraneDuplicata,MonFiligrane)

iDestination(iPDF,"D:\TRAVAIL QC\Test PDF\Test4.pdf")

SI PAS iImprimePDF(MonPdf) ALORS
Erreur("Pb impression")
FIN

En tout cas avec la version 25 de windev
Membre enregistré
1 message
Posté le 01 décembre 2020 - 08:19
Thank you so much Arnaud Garlan for share the helpful information
try it : http://balindra.com/blog/best-free-web-design-software/