Page 1 sur 1
Génération PDF: image+texte
Publié : mar. 25/août/2020 16:47
par jmg49
Bonjour,
j'utilise le module pbPDFModule pour générer du pdf,
je peux générer un pdf avec texte, un pdf avec image mais quand je veux les deux, l'image écrase le texte,
connaissez vous un paramètre à modifier pour avoir la transparence ?
Merci,
Code : Tout sélectionner
IncludeFile "pbPDFModule.pbi"
PDF::Create(0)
PDF::AddPage(0)
PDF::SetFont(0,"Arial","",28)
PDF::PlaceText(0,"test", 10,100)
PDF::Image(0,"my_img.jpg",0,0,210,250)
PDF::Save(0,"out.pdf")
PB:5.70 x32 Win10pro
Re: Génération PDF: image+texte
Publié : mar. 25/août/2020 18:37
par Naheulf
Je ne sais pas quel format de pdf est générée par ce module mais :
Donc, si le module génère du PDF/A-1, tu l'as dans l'***. Mais ça reste à confirmer.
Édit : Après un module ça peut se mettre à jour...
Re: Génération PDF: image+texte
Publié : mar. 25/août/2020 19:19
par case
as tu essayé l'inverse l'image puis le texte?
Code : Tout sélectionner
IncludeFile "pbPDFModule.pbi"
PDF::Create(0)
PDF::AddPage(0)
PDF::Image(0,"my_img.jpg",0,0,210,250)
PDF::SetFont(0,"Arial","",28)
PDF::PlaceText(0,"test", 10,100)
PDF::Save(0,"out.pdf")
Re: Génération PDF: image+texte
Publié : mer. 26/août/2020 8:32
par jmg49
case a écrit :as tu essayé l'inverse l'image puis le texte?
j'ai essayé, c'est pareil,
j'ai pu avancer en rendant le fond de l'image transparent avec paint ,
le texte est maintenant bien visible,
le but étant d'intégrer un fond de page sur une facture ,
Re: Génération PDF: image+texte
Publié : mer. 26/août/2020 20:42
par Ar-S
le but étant d'intégrer un fond de page sur une facture
Alors crées une image sur laquelle tu écris ta facture et sort cette image en pdf.
Re: Génération PDF: image+texte
Publié : jeu. 27/août/2020 7:42
par jmg49
je vais faire comme ça oui , car c'est une galère sans nom pour pouvoir placer le texte correctement dans le fond de page avec PDF::write() ou PDF::placetext()
c'est du test, je vois mal comment je vais pouvoir automatiser et standardiser tout ça ...
de plus, les factures sont générées en format PDF en sortie d'un soft de facturation d'un serveur IBM i .... que je transforme en .txt et où je récupère le texte avec readfile() readstring() ça va faire une usine à gaz , tous les logiciels d'intégration de fond de page sont payants, y compris sur Ibm i , alors on tente...
Re: Génération PDF: image+texte
Publié : jeu. 03/sept./2020 16:30
par jmg49
ça peut être utile donc je continue...
il existe un utilitaire gratuit pour utilisation perso en ligne de commande qui fait très bien le travail :coherent pdf , trouvable sur Git etc ....
je vais donc le mettre en includebinary et l'utiliser mais !!!
pourriez-vous me rappeler comment utiliser les paramètres avec RunProgram() quand il y a des "" dans les paramètres ? je ne me rappelle plus s'il faut rajouter des simple quotes ou des ()
exemple :
ligne cmd d'origine : cpdf.exe -stamp-under FACT_2017.pdf -pos-left "-10 10" fact.PDF -o result.pdf
Code : Tout sélectionner
genPDF = RunProgram("c:\cpdf.exe" ,"-stamp-under FACT_2017.pdf" + "-pos-left "-10 10" +"fact.PDF -o res.pdf","", #PB_Program_Open | #PB_Program_Read | PB_Program_Hide)
le problème est avec le "-10 10" on doit les passer avec les quotes du 3 ,
Merci bien,
Re: Génération PDF: image+texte
Publié : jeu. 03/sept./2020 16:52
par Marc56
jmg49 a écrit :
pourriez-vous me rappeler comment utiliser les paramètres avec RunProgram() quand il y a des "" dans les paramètres ? je ne me rappelle plus s'il faut rajouter des simple quotes ou des ()
Au choix: Chr(34), #DQUOTE$ ,ou ~"\"\""
Code : Tout sélectionner
RunProgram( "cpdf.exe",
"-stamp-under FACT_2017.pdf -pos-left " +
Chr(34) +
"-10 10" +
Chr(34) +
"fact.PDF -o result.pdf", "")
RunProgram( "cpdf.exe",
"-stamp-under FACT_2017.pdf -pos-left " +
#DQUOTE$ +
"-10 10" +
#DQUOTE$ +
"fact.PDF -o result.pdf", "")
RunProgram( "cpdf.exe",
~"-stamp-under FACT_2017.pdf -pos-left \"-10 10\" fact.PDF -o result.pdf", "")
j'ai pu avancer en rendant le fond de l'image transparent avec paint ,
le texte est maintenant bien visible,
le but étant d'intégrer un fond de page sur une facture
Tu sais que tu peux créer des PNG transparents depuis PB

Re: Génération PDF: image+texte
Publié : lun. 07/sept./2020 8:24
par jmg49
j'avais complètement oublié , merci du rafraichissement, en rajoutant des espaces pour que la syntaxe soit respectée :
Code : Tout sélectionner
RunProgram("cpdf.exe" ,"-stamp-under FACT_2017.pdf " + "-pos-left " + Chr(34) + " -10 10" + Chr(34) + " fact.PDF -o final.pdf","", #PB_Program_Open | #PB_Program_Wait | #PB_Program_Hide)
on peut imaginer passer le nom de la facture et le fichier de sortie en paramètres, le fond de page étant toujours le même, bon, ça ne fonctionne pas encore comme prévu mais tant qu'on avance y'a de l'espoir, je vais reprendre la doc concernant les procédures et les paramètres ....
Code : Tout sélectionner
EnableExplicit
Define File
Global fact$
Global result$
File = CreateFile(#PB_Any, "cpdf.exe")
If File
WriteData(File, ?cpdf, ?endcpdf - ?cpdf)
CloseFile(File)
Else
MessageRequester("Erreur", "Impossible d'écrire le fichier")
EndIf
Procedure genPDF(fact$, result$)
RunProgram("cpdf.exe" ,"-stamp-under FACT_2017.pdf " + "-pos-left " + Chr(34) + " -10 10" + Chr(34) +" "+ fact$ + " -o " + result$,"", #PB_Program_Open | #PB_Program_Wait | #PB_Program_Hide )
DeleteFile("cpdf.exe")
EndProcedure
genPDF(fact$, result$)
DataSection
cpdf:
IncludeBinary "cpdf.exe"
endcpdf:
même avec la doc je suis nul !!! ou alors je regarde pas au bon endroit , c'est rageant de bloquer sur es trucs simples comme ça ,
mon but est d'utiliser le fichier compilé et lui spécifier les fichiers à traiter . test.exe fichier1.pdf final.pdf => pas d'erreur mais pas de final.pdf généré...
j'ai refait mon code avec des gadgets et buttons qui me récupèrent les noms de fichiers dans des variables string, la procédure génère bien le fichier final ,
Re: Génération PDF: image+texte
Publié : lun. 07/sept./2020 17:36
par case
si tu passe des paramètres lors du lancement de ton programme
tu dois récupérer l'information avec
ProgramParameter()
exemple:
compiler en : "param.exe" dans un dossier
Code : Tout sélectionner
source.s=ProgramParameter()
dest.s=ProgramParameter()
main=OpenConsole()
If main
PrintN("fichier source:"+source)
PrintN("fichier destination:"+dest)
Input()
EndIf
a sauver et executer dans le meme dossier que "param.exe"
Code : Tout sélectionner
RunProgram("param.exe","fichiersource.tst fichierdestination.tst","")
Re: Génération PDF: image+texte
Publié : mar. 08/sept./2020 7:50
par jmg49
et voilà ce qu'il me manquait , programparameter()
mon .exe compilé me génère bien le pdf final passé en paramètres avec le fichier facture
Merci à tous ,