Page 1 sur 1
[R] FilePrint : imprimer un texte enrichi
Posté : jeu. 27 juin 2013 17:28
par aulus
Bonjour,
Existe-t-il des solutions pour que le texte créé par les fonctions FileWrite et FileWriteLine, puis imprimé par la fonction FilePrint soit enrichi (mis en gras, italique, souligné, type et taille de la police, etc ...) autrement que par le passage dans un traitement texte où il serait enrichi manuellement par l'utilisateur ?
Je vous remercie.
Re: [..]FilePrint : imprimer un texte enrichi
Posté : jeu. 27 juin 2013 18:57
par mikell
Une solution simple (?) est de formater le texte (police, couleur etc) au format html, genre
Code : Tout sélectionner
<p><center><font face="Comic Sans Ms" color=red size=+4><u>Test</u></font></center></p>
puis FileWrite le résultat dans un fichier htm et _FilePrint le htm
Re: [..]FilePrint : imprimer un texte enrichi
Posté : jeu. 27 juin 2013 20:13
par aulus
Merci Mikell.
Avec la fonction FilePrint, l'impression du fichier html ne se lance pas. J'ai pris garde de débuter le fichier par <html><body> et de le terminer par </body></html>, de nommer le fichier avec l'extension .html
Par contre j'ai réussi à imprimer avec la fonction :
Code : Tout sélectionner
RunWait(@ComSpec & ' /c rundll32.exe ' & @SystemDir & '\mshtml.dll,PrintHTML "' & $filetoprint, @TempDir, @SW_HIDE)
Une petite chose qui m'enquiquine : l'en-tête ("Page 1 sur 1") et le pied de page ("file:///C:/autoit/programme/impression.html"). Si je pouvais les faire disparaître ! ...
Re: [R]FilePrint : imprimer un texte enrichi
Posté : jeu. 27 juin 2013 21:07
par mikell
Effectivement, sur mon pc _FilePrint ne marche pas non plus avec un fichier .html mais marche avec un .htm (faut pas me demander pourquoi...)
Par exemple ce code fonctionne très bien
► Afficher le texte
Code : Tout sélectionner
#include <File.au3>
$text = "Tralala"
$text2 = _SetFont($text, "Comic Sans Ms", "red", 5, 1)
msgbox(0,"", $text2)
FileWrite("test.htm", $text2)
_FilePrint("test.htm")
Func _SetFont($txt, $font = default, $color = "black", $size = default, $underline = 0)
If $underline<>0 Then $txt = '<u>' & $txt & '</u>'
$txt = '<font face="' & $font & '" color=' & $color & ' size=' & $size & '>' & $txt & '</font>'
Return $txt
EndFunc
Re: [R] FilePrint : imprimer un texte enrichi
Posté : jeu. 27 juin 2013 22:17
par jguinch
Salut.
J'arrive un peu après la guerre...
Perso j'ai déjà eu besoin d'imprimer des fichier HTML, j'ai utilisé l'UDF IE avec _IEAction($oIE, "printdefault")
On retombe sur le même problème d'entêtes et pieds de page, mais il suffit de les supprimer dans le script :
► Afficher le texte
Code : Tout sélectionner
#include <IE.au3>
$file = @DesktopDir & "\test.html"
; Récupère la mise en page actuelle
Global $footer = RegRead("HKCU\Software\Microsoft\Internet Explorer\PageSetup", "footer")
Global $header = RegRead("HKCU\Software\Microsoft\Internet Explorer\PageSetup", "header")
; Modifie la mise en page : supprime l'entete et le pied de page
RegWrite("HKCU\Software\Microsoft\Internet Explorer\PageSetup", "footer", "REG_SZ", "")
RegWrite("HKCU\Software\Microsoft\Internet Explorer\PageSetup", "header", "REG_SZ", "")
; Ouvre le fichier PDF et l'imprime
$oIE = _IECreate($file, 0, 0)
_IEAction($oIE, "printdefault")
; Petite pause pour ne pas fermer avant le lancement de l'impression
Sleep(2000)
; Applique la mise en page d'origine
RegWrite("HKCU\Software\Microsoft\Internet Explorer\PageSetup", "footer", "REG_SZ", $footer)
RegWrite("HKCU\Software\Microsoft\Internet Explorer\PageSetup", "header", "REG_SZ", $header)
_IEQuit($oIE)
L'avantage, c'est qu'on peut s'en servir pour imprimer des fichiers contenants des images par exemple (ou même des images toutes seules)
Re: [R] FilePrint : imprimer un texte enrichi
Posté : ven. 28 juin 2013 12:00
par aulus
@ Mikell
Chez moi, l'extension "htm" ne permet pas l'impression non plus.
@ jguinch
Merci pour votre code. Son exécution ouvre une fenêtre affichant le texte, mais l'impression ne se fait pas.
J'obtiens l'erreur :
>Running:(3.3.8.1):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\autoIt\imprimeIE.au3"
C:\Program Files (x86)\AutoIt3\Include\IE.au3 (560) : ==> The requested action with this object has failed.:
WEnd
WEnd^ ERROR
Re: [R] FilePrint : imprimer un texte enrichi
Posté : ven. 28 juin 2013 13:45
par jguinch
Bizarre...
Tu peux essayer avec $file = "file://" & @DesktopDir & "\test.html" pour le nom du fichier ?
Re: [R] FilePrint : imprimer un texte enrichi
Posté : ven. 28 juin 2013 13:51
par mikell
Ou alors il s'agit encore une fois d'une cagade de _IELoadWait
Dans ce cas tu peux essayer comme ça
Code : Tout sélectionner
$oIE = _IECreate($file, 0, 0, 0)
While $oIE.busy
Sleep(100)
Wend
_IEAction($oIE, "printdefault")
Re: [R] FilePrint : imprimer un texte enrichi
Posté : ven. 28 juin 2013 22:19
par aulus
J'ai essayé vos dernières propositions. Mais rien ne s'imprime.
Erreur :
>Running:(3.3.8.1):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\autoIt\imprimeIE.au3"
C:\Program Files (x86)\AutoIt3\Include\IE.au3 (2488) : ==> The requested action with this object has failed.:
$o_object.execWB(6, 2)
$o_object.execWB(6, 2)^ ERROR
Re: [R] FilePrint : imprimer un texte enrichi
Posté : ven. 28 juin 2013 23:07
par mikell
Est-ce que tu as aussi une erreur avec _IEAction($oIE, "print") ?
Re: [R] FilePrint : imprimer un texte enrichi
Posté : sam. 29 juin 2013 08:33
par aulus
Bonjour Mikell,
Avec "print" j'obtiens l'erreur :
>Running:(3.3.8.1):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\autoIt\imprimeIE.au3"
C:\Program Files (x86)\AutoIt3\Include\IE.au3 (2481) : ==> The requested action with this object has failed.:
$o_object.document.parentwindow.Print()
$o_object.document^ ERROR
Observation peut-être utile : J'ai testé l'exemple de l'aide autoit (fonction IEcreate), et j'obtiens pas mieux :
>Running:(3.3.8.1):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Program Files (x86)\AutoIt3\Examples\Helpfile\_IECreate.au3"
--> IE.au3 V2.4-0 Warning from function _IEAttach, $_IEStatus_NoMatch
--> IE.au3 V2.4-0 Warning from function _IEAttach, $_IEStatus_NoMatch
--> IE.au3 V2.4-0 Warning from function _IEGetObjByName, $_IEStatus_NoMatch (Name: sfmarquee, Index: 0)
C:\Program Files (x86)\AutoIt3\Examples\Helpfile\_IECreate.au3 (56) : ==> Variable must be of type "Object".:
MsgBox(0, "SourceForge Information", $oMarquee.innerText)
MsgBox(0, "SourceForge Information", $oMarquee^ ERROR
->08:10:51 AutoIT3.exe ended.rc:1
>Exit code: 1 Time: 31.609
Quant à la fonction _IEAction, je n'ai pas d'avertissements en lançant l'exemple de l'aide autoit.
----------------------------
J'ai ajouté la fonction _IEBodyWriteHTML , ... et là ça marche : impression sans en-tête ni pied de page !
#include <IE.au3>
$oIE = _IECreate()
Local $sHTML = "<h1>Salut tout le monde !</h1>"
_IEBodyWriteHTML($oIE, $sHTML)
_IEAction($oIE, "print")