Page 1 sur 1
[R] Créér un fichier PDF et le remplir avec un GUI
Posté : ven. 05 déc. 2014 09:50
par Hugues
Bonjour,
J'ai pas mal lu de sujet sur la création de fichier pdf, mais je dois dire que c'est flou pour moi...
Avant toute chose, je ne travaillerai qu'avec ADOBE (crontrainte usine...).
Ma question est peut-on créer un fichier PDF de type formulaire (comme un page HTML)?
Remplir les champs avec les données d'un GUI?
Merci par avance pour votre aide, si quelqu'un à des liens?
Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : ven. 05 déc. 2014 12:13
par walkson
Bonjour,
Je vais, peut être, être hors sujet, mais si je devais créer un PDF, j'utiliserais Word (enregistrer sous xxx.pdf)
Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : ven. 05 déc. 2014 13:03
par Hugues
Salut,
J'ai pensé à ça aussi, mais je ne veux pas trop passer par des applications intermédiaires... Car il faudrait que je gère si elles sont installées etc...
Pour moi le plus simple serait de récupérer les données de mon gui et de créer mon pdf en fonction...
Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : ven. 05 déc. 2014 13:52
par Idrazil
Bonjour,
Il existe un UDF (lien:
http://www.autoitscript.com/forum/topic ... plication/ ) qui permet de créer ses PDF directement avec Autoit.
Perso je l'utilise pour une de mes applis et ça marche très bien (sauf certains caractères spéciaux)

Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : ven. 05 déc. 2014 14:25
par Hugues
Merci, je viens d'essayer mais ça me met l'erreur suivante:
EDIT: C'est bon j'ai pas lu dans le post US qu'il fallait ajouter la fonction:
Code : Tout sélectionner
Func _Iif($fTest, $vTrueVal, $vFalseVal)
If $fTest Then
Return $vTrueVal
Else
Return $vFalseVal
EndIf
EndFunc ;==>_Iif
Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : ven. 05 déc. 2014 21:08
par jguinch
Juste pour info, la fonction
_Iif() est l'ancêtre de l'opérateur ternaire qui a débarqué depuis peu dans les dernières versions d'AutoIt.

Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : ven. 05 déc. 2014 21:46
par walkson
Et en complément d'info _Tif se retrouve sous forme Func __Iif($fTest, $vTrue, $vFalse) dans WinApiInternals.Au3

Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : lun. 08 déc. 2014 12:56
par Hugues
Re,
Donc voilou, j'ai regardé l'UDF "MPD_UDF" qui parait bien, mais qui bug au niveau de la gestion des accents

(c'est balot).
J'ai regardé sur la toile et j'ai trouvé une fonction _StringToPDF() qui semble ne pas poser des soucis avec les accents

.
Mes questions sont:
-Qui a déja fait un mixte des 2?
-Quelqu'un à déjà utilisé cette UDF, si oui un p'tit exemple?
Je ne sais pas créer de rectangle, ni d'input sous Adobe avec cette UDF...
Je voudrais faire un PDF avec ce format suivant, est ce possible?
http://www.cjoint.com/14dc/DLincGdfniN_test.pdf
Merci par avance
Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : lun. 08 déc. 2014 13:10
par Utilisateur 3309 supprimé
walkson a écrit :Bonjour,
Je vais, peut être, être hors sujet, mais si je devais créer un PDF, j'utiliserais Word (enregistrer sous xxx.pdf)
Pareil, sauf qu'Excel est plus pratique lorsqu'il s'agit "d'écrire dans des champs".
Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : mar. 09 déc. 2014 15:55
par Hugues
Bin non lol, je ne veux pas passer par une application supplémentaire.

Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : mar. 09 déc. 2014 16:04
par Y01
Sans vouloir te faire drastiquement changer de direction, je tenais juste à préciser que tu pouvais créer tes PDF avec IE et ADOBE et qu'il est plus simple d'utiliser l'UDF IE.
Information du site d'Adobe.
Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : mar. 09 déc. 2014 22:46
par walkson
Bonsoir,
Hugues a écrit :-Qui a déja fait un mixte des 2?
Cela me parait difficile car ils sont de construction différente. La solution est peut être en résolvant le bug des accents, c'est à dire en supprimant les accents (pas terrible mais facile) avec cette fonction (de Tlem)
► Afficher le texte
Code : Tout sélectionner
Func _ChaineSansAccents($sString)
; Les caractères exotiques d'autres langues ne sont pas pris en compte.
; Complètez les tableaux si dessous pour prendre en compte d'autres types
; de caractères accentués.
Dim $Var1[27] = ["à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ò", "ó", "ô", "ö", "ù", "ú", "û", "ü", "ý", "ÿ", "œ"]
Dim $Var2[27] = ["a", "a", "a", "a", "a", "a", "ae", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "u", "u", "u", "u", "y", "y", "oe"]
For $i = 0 To UBound($Var1) - 1
$sString = StringRegExpReplace($sString, $Var1[$i], $Var2[$i])
$sString = StringRegExpReplace($sString, StringUpper($Var1[$i]), StringUpper($Var2[$i]))
Next
Return $sString
EndFunc ;==>_SansAccents
A intégrer dans l'UDF:
Code : Tout sélectionner
Func _DrawText($iX, $iY, $sText, $sFontAlias, $iFontSize, $iAlign = $PDF_ALIGN_LEFT, $iRotate = 0)
Local $PI
Local $sTeta
Local $cTeta
Local $C
Local $l
$sText = _ChaineSansAccents($sText)
.......
Cette solution permet d'utiliser MPDF_UDF pleinement comme _Draw_Rectangle pour les Inputs ou les Edits
Au sujet des Edits, il faudra incorporer des retours de ligne pourque le texte rentre dans le rectangle sans le dépasser (si le rédacteur entre son texte sans retour de ligne, le PDF aligne une ligne qui dépassera la bordure droite).
Quand à la construction du PDF, il semble que ce soit laborieux pour placer texte et rectangle à la bonne place (le haut de la page est à 28 environ et le bas vers 15 ou moins, pas testé ex: _Draw_Rectangle(9, 28, 5, 1, $PDF_STYLE_STROKED, 0, 0xFFFFFF, 0.05) pour un rectangle blanc en haut de page équivalent à un Input)
Si cela peut faire avancer ton projet...
Une idée pour formater un texte ($long = Nb de caractères avant le retour de ligne, ici 80 avec un maxi de 90) en ne coupant pas les mots.
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
;$txt = "je suis le texte" & @CRLF & "qu'il faut controler et découper en tranche"
$txt = FileRead(@ScriptDir & "\AA.txt")
$txt = StringReplace($txt,@CRLF, " ")
$txt = StringReplace($txt,@CR, " ")
$txt = StringStripWS($txt,4)
$nb = StringLen($txt)
$long = 80
Local $array[0], $TT
For $i = 1 To $nb
ConsoleWrite($i & @CRLF)
$text10 = StringMid($txt,$i,$long)
$i += $long
While 1
;MsgBox(0,"",$text10 & " " & $i)
If StringMid($txt,$i,1) = " " Then
ExitLoop
EndIf
$txt1 = StringMid($txt,$i,1)
$text10 &= $txt1
$i += 1
If StringLen($text10) > $long + 9 Then ExitLoop
If $i > $nb Then ExitLoop
WEnd
ReDim $array[UBound($array) + 1]
$array[UBound($array) - 1] = $text10
ConsoleWrite(StringLen($text10) & ">>" & $text10 & @CRLF)
$TT &= $text10 & @CRLF
$text10 = ""
Next
_ArrayDisplay($array)
MsgBox(0,"",$TT)
Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : mer. 10 déc. 2014 12:20
par walkson
Bonjour,
Une solution plus convenable pour le bug des accents (testé avec réussite). Ci-dessous, un test style "Edit"
► Afficher le texte
Code : Tout sélectionner
#include "MPDF_UDF_FR.au3";<<<<<<<<<<<<<<<<<<<<< DON'T FORGET TO CHANGE THE PATH TO THE UDF
;set the properties for the pdf
_SetTitle("Demo PDF in AutoIt")
_SetSubject("Demo PDF in AutoIt, without any ActiveX or DLL...")
_SetKeywords("pdf, demo, AutoIt")
_OpenAfter(True);open after generation
_SetUnit($PDF_UNIT_CM)
_SetPaperSize("A4")
_SetZoomMode($PDF_ZOOM_FULLPAGE)
_SetOrientation($PDF_ORIENTATION_PORTRAIT)
_SetLayoutMode($PDF_LAYOUT_CONTINOUS)
;initialize the pdf
_InitPDF(@ScriptDir & "Example justified paragraph.pdf")
;=== load resources used in pdf ===
;fonts:
_LoadFontTT("_Calibri", $PDF_FONT_CALIBRI)
;=== create objects that are used in multiple pages ===
;create a header on all pages, except the first:
_BeginPage()
_Draw_Rectangle(1.8, 22.5, 16.8, 4, $PDF_STYLE_STROKED, 0.2, 0xcafea0, 0.02)
$sText = "Anna Montes ridiculus, in pénâtibus, in âliquâm énim sâgittis pélléntésqué? Mâttis duis ét ut nunc sâgittis énim "
$sText &= "tortor urnâ, éros? Scélérisqué? Dâpibus scélérisqué vél rhoncus porttitor! Porttitor ridiculus. In âdipiscing âugué "
$sText &= "vél pélléntésqué tortor portâ hâc tristiqué turpis plâcérât scélérisqué éléméntum hâc pulvinar mid dôlôr pélléntésqué "
$sText &= "lundium mattis néc. Néc séd. ét adipiscing néc nisi éléméntum natôqué! Turpis pénatibus ést dictumst magnis intégér "
$sText &= "scêlêrisquê, sôciis, risus scêlêrisquê ultricês auctôr pôrta, ênim? Ac môntês pêllêntêsquê cum ênim auguê pênatibus "
$sText &= "pulvinar? Vêl mid, cum habitassê êtiam urna? In? êt, natôquê! Intêgêr ôdiô êgêstas! Rhôncus a vut natoquê pëllëntësquë "
$sText &= "diam lundium auguë in mus. Auctor, dictumst lacus turpis phasëllus ëtiam, proin mauris. Natoquë ultriciës turpis nisi "
$sText &= "platëa parturiënt? Nunc nascëtur ëst, adipiscing ënim turpis Mihai."
_Paragraph($sText, 2, 26, 16.5, "_Calibri", 10, 0)
_EndPage()
;then, finally, write the buffer to disk
_ClosePDFFile()
Re: [..] Créér un fichier PDF et le remplir avec un GUI
Posté : mer. 10 déc. 2014 14:25
par Hugues
Ok merci à tous, merci Walkson ^^
Sujet résolu!