Question
Imprimer une image avec son titre
- Zedd
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 45
- Remerciements reçus 0
il y a 13 ans 2 mois #14337
par Zedd
Imprimer une image avec son titre a été créé par Zedd
Bonjour,
J'ai quelques petits soucis pour imprimer des images, et encore plus pour incrémenter en tête de page le nom du fichier.
On reçoit via FTP des images au format TIF.
En fonction du dossier source sur le FTP, je balance ces images sur telle ou telle imprimante de la société.
Ces images sont en portrait ou en paysage, selon leur contenu.
Ensuite, une fois l'image imprimée, je la déplace dans un dossier d'archive, dossier sélectionné en fonction du répertoire source du FTP.
En gros :
- récupérer sur FTP les images dans les différents répertoires -> pas de problème
- Imprimer les images (ça pose problème) sur la bonne imprimante (ce n'est pas un soucis)
- les déplacer ensuite dans le dossier d'archive -> aucun problème.
Les problèmes d'impression sont les suivants :
J'ai utilisé dans un premier temps le soft IrFanview.
Il me permet de gérer le portrait paysage (avec la commande /aspect ratio), et d'inclure le nom image.tif en tête de la page imprimée.
-> La gestion du portrait/paysage est très mauvaise, ca marche une fois sur 10. du coup les impressions sont rognées, inutilisables.
J'ai utilisé la commande print de DOS, -> mauvais pour du tif ou du jpg. ca sort 36000 feuilles avec des caractères chinois.
J'ai utilisé également la commande get-content $Monfichier | out-printer -name \"monimprimante\" -> idem, du chinois en 36000 pages
Au final j'utilise ceci : rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo \"$Monfichier\" \"monImprimante\"
Ca marche très très bien, bonne gestion du portrait Paysage, aucun soucis.
Sauf que je ne peux pas incrémenter le nom du fichier en haut de la feuille imprimée..
Il semblerait d'après les quelques recherches faites, que seul IrFanView réponde à mes attentes, pour faire apparaître le nom du fichier.tif sur l'impression, mais il gère mal le paysage.
Donc j'ai imaginer comparer la hauteur et la largeur de l'image, pour éventuellement faire une rotation si la largeur est plus grande, et du coup n'imprimer QUE du \"portrait\", mais sans succès non plus..
Si quelqu'un a une idée, une piste à fouiller, vous êtes les bienvenus !
pour info, et même si je reprend tout de zéro, voici mes 2 scripts. Le principal, et le morceau où j'essaye de faire une comparaison H/L (mais il n'y a rien dans $Image.name, du coup ca marche pas
)
Cdt,
zedd
[code:1]############Declaration variables############
#############################################
$date=(get-date).tostring('yyyyMMdd')
$dateold=(get-date).AddDays(-180).tostring('yyyyMMdd')
set-alias rundll32 \"C:\windows\system32\rundll32.exe\"
$Cheminsource = \"C:\IFaxNetToAS\TIF\IN\\"
$Cheminarchive = \"C:\IFaxNetToAS\TIF\Archives\\"
$Cheminzero = \"C:\IFaxNetToAS\TIF\Zero\\"
$Mega = \"Mega\"
$Nova = \"Nova\"
$Avec = \"Av_forme\"
$Sans = \"Ss_forme\"
$TIF = \"*.TIF\"
$Dir = \"DIR.txt\"
$Zero = \"Zero.txt\"
$DiffZero = \"DiffZero.txt\"
$NVPRN0293 = \"\\nvprnsvr02\NVPRN0293\"
$NVPRN0272 = \"\\nvprnsvr02\NVPRN0272\"
$NVPRNCC02 = \"\\nvprnsvr02\NVPRNCC02\"
$DossierMega = \"M:\\"
#Fonction DIR du répertoire d'arrivée des fax
function Lecture_Des_dossiers($Societe,$Forme,$Imprimante){
#Creation variables temporaires
$Chemin = $Cheminsource+$Societe+\"\\"+$Forme+\"\\"
$chemindesTif = $Chemin+$TIF
$cheminDir = $Cheminsource+$Societe+$Forme+$Dir
$DossierArchive = $Cheminarchive+$Societe+\"\\"+$Forme+\"\\"
$DossierArchiveDate = $Cheminarchive+$Societe+\"\\"+$Forme+\"\\"+$date
$DossierZero = $Cheminzero+$Societe+\"\\"+$Forme+\"\\"
#debut exécution
#création des dossiers d'archivages
if(!(test-path -path \"$DossierArchiveDate\"«»)){md $DossierArchiveDate}
#création des fichiers DIR
$fichiersTIF = ls $ChemindesTif | select -exp name
#Création des listes de fichiers a zero octets et remplis
foreach ($file in $fichiersTIF)
{
$TifAFaire = $Chemin + $file
$TailleFichier=Get-ChildItem $TifAFaire
$Nomfichier = $TailleFichier | select -exp name
echo $nomfichier
if (!$nomfichier)
{
echo \"Pas de fichier à traiter chez $societe - $forme\"
}
else{
#Si le fichier pese 0, il est envoyé dans un dossier à part
if ($TailleFichier.length -eq '0') {
$FichierZero = $TailleFichier | select -exp name
move-item $Chemin$FichierZero $DossierZero -force
}
#S'il ne pèse pas 0 octet, il est imprimé dans le bureau correspondant puis envoyé vers le dossier d'archive
else {
$FichierDiffZero = $TailleFichier | select -exp name
$AImprimer = $Chemin + $FichierDiffZero
if ($Imprimante)
{
rundll32 C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo \"$AImprimer\" \"$Imprimante\"
ping 127.0.0.1
move-item $AImprimer $DossierArchiveDate -force
}
else{
xcopy $AImprimer $DossierArchiveDate /C /Y
move-item $AImprimer $DossierMega -force
}
}
}
}
#Suppression des archives de plus de 6 mois (180 jours exactement)
$ListeDossiersArchives = ls $DossierArchive | select -exp name
foreach ($dossier in $ListeDossiersArchives) {
if ($dossier -lt $dateold)
{$DossierASupprimer = $DossierArchive + $dossier
Remove-Item -path $DossierASupprimer -force -recurse}
}
}
Lecture_Des_dossiers -Societe \"$Mega\" -Forme \"$Avec\" -Imprimante \"$NVPRN0293\"
Lecture_Des_dossiers -Societe \"$Mega\" -Forme \"$Sans\"
Lecture_Des_dossiers -Societe \"$Nova\" -Forme \"$Avec\" -Imprimante \"$NVPRN0272\"
Lecture_Des_dossiers -Societe \"$Nova\" -Forme \"$Sans\" -Imprimante \"$NVPRNCC02\"
exit[/code:1]
[code:1]set-alias i_view \"C:\Program Files\IrfanView\i_view32.exe\"
#appel de la dll du framework
Add-Type -Assembly System.Drawing
Get-ChildItem -Path C:\test -Recurse -Include *.tif |
ForEach-Object {
$Image = [System.Drawing.Image]::FromFile($_.FullName)
New-Object -TypeName System.Management.Automation.PSObject -Property @{
Name = $_.Name
Length = $_.Length
Width = $Image.Width
Height = $Image.Height
}
if ($Image.Width -gt $Image.Height)
{
i_view $Image /rotate_l
}
$Image.Dispose()
}
[/code:1]
J'ai quelques petits soucis pour imprimer des images, et encore plus pour incrémenter en tête de page le nom du fichier.
On reçoit via FTP des images au format TIF.
En fonction du dossier source sur le FTP, je balance ces images sur telle ou telle imprimante de la société.
Ces images sont en portrait ou en paysage, selon leur contenu.
Ensuite, une fois l'image imprimée, je la déplace dans un dossier d'archive, dossier sélectionné en fonction du répertoire source du FTP.
En gros :
- récupérer sur FTP les images dans les différents répertoires -> pas de problème
- Imprimer les images (ça pose problème) sur la bonne imprimante (ce n'est pas un soucis)
- les déplacer ensuite dans le dossier d'archive -> aucun problème.
Les problèmes d'impression sont les suivants :
J'ai utilisé dans un premier temps le soft IrFanview.
Il me permet de gérer le portrait paysage (avec la commande /aspect ratio), et d'inclure le nom image.tif en tête de la page imprimée.
-> La gestion du portrait/paysage est très mauvaise, ca marche une fois sur 10. du coup les impressions sont rognées, inutilisables.
J'ai utilisé la commande print de DOS, -> mauvais pour du tif ou du jpg. ca sort 36000 feuilles avec des caractères chinois.
J'ai utilisé également la commande get-content $Monfichier | out-printer -name \"monimprimante\" -> idem, du chinois en 36000 pages
Au final j'utilise ceci : rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo \"$Monfichier\" \"monImprimante\"
Ca marche très très bien, bonne gestion du portrait Paysage, aucun soucis.
Sauf que je ne peux pas incrémenter le nom du fichier en haut de la feuille imprimée..
Il semblerait d'après les quelques recherches faites, que seul IrFanView réponde à mes attentes, pour faire apparaître le nom du fichier.tif sur l'impression, mais il gère mal le paysage.
Donc j'ai imaginer comparer la hauteur et la largeur de l'image, pour éventuellement faire une rotation si la largeur est plus grande, et du coup n'imprimer QUE du \"portrait\", mais sans succès non plus..
Si quelqu'un a une idée, une piste à fouiller, vous êtes les bienvenus !
pour info, et même si je reprend tout de zéro, voici mes 2 scripts. Le principal, et le morceau où j'essaye de faire une comparaison H/L (mais il n'y a rien dans $Image.name, du coup ca marche pas
Cdt,
zedd
[code:1]############Declaration variables############
#############################################
$date=(get-date).tostring('yyyyMMdd')
$dateold=(get-date).AddDays(-180).tostring('yyyyMMdd')
set-alias rundll32 \"C:\windows\system32\rundll32.exe\"
$Cheminsource = \"C:\IFaxNetToAS\TIF\IN\\"
$Cheminarchive = \"C:\IFaxNetToAS\TIF\Archives\\"
$Cheminzero = \"C:\IFaxNetToAS\TIF\Zero\\"
$Mega = \"Mega\"
$Nova = \"Nova\"
$Avec = \"Av_forme\"
$Sans = \"Ss_forme\"
$TIF = \"*.TIF\"
$Dir = \"DIR.txt\"
$Zero = \"Zero.txt\"
$DiffZero = \"DiffZero.txt\"
$NVPRN0293 = \"\\nvprnsvr02\NVPRN0293\"
$NVPRN0272 = \"\\nvprnsvr02\NVPRN0272\"
$NVPRNCC02 = \"\\nvprnsvr02\NVPRNCC02\"
$DossierMega = \"M:\\"
#Fonction DIR du répertoire d'arrivée des fax
function Lecture_Des_dossiers($Societe,$Forme,$Imprimante){
#Creation variables temporaires
$Chemin = $Cheminsource+$Societe+\"\\"+$Forme+\"\\"
$chemindesTif = $Chemin+$TIF
$cheminDir = $Cheminsource+$Societe+$Forme+$Dir
$DossierArchive = $Cheminarchive+$Societe+\"\\"+$Forme+\"\\"
$DossierArchiveDate = $Cheminarchive+$Societe+\"\\"+$Forme+\"\\"+$date
$DossierZero = $Cheminzero+$Societe+\"\\"+$Forme+\"\\"
#debut exécution
#création des dossiers d'archivages
if(!(test-path -path \"$DossierArchiveDate\"«»)){md $DossierArchiveDate}
#création des fichiers DIR
$fichiersTIF = ls $ChemindesTif | select -exp name
#Création des listes de fichiers a zero octets et remplis
foreach ($file in $fichiersTIF)
{
$TifAFaire = $Chemin + $file
$TailleFichier=Get-ChildItem $TifAFaire
$Nomfichier = $TailleFichier | select -exp name
echo $nomfichier
if (!$nomfichier)
{
echo \"Pas de fichier à traiter chez $societe - $forme\"
}
else{
#Si le fichier pese 0, il est envoyé dans un dossier à part
if ($TailleFichier.length -eq '0') {
$FichierZero = $TailleFichier | select -exp name
move-item $Chemin$FichierZero $DossierZero -force
}
#S'il ne pèse pas 0 octet, il est imprimé dans le bureau correspondant puis envoyé vers le dossier d'archive
else {
$FichierDiffZero = $TailleFichier | select -exp name
$AImprimer = $Chemin + $FichierDiffZero
if ($Imprimante)
{
rundll32 C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo \"$AImprimer\" \"$Imprimante\"
ping 127.0.0.1
move-item $AImprimer $DossierArchiveDate -force
}
else{
xcopy $AImprimer $DossierArchiveDate /C /Y
move-item $AImprimer $DossierMega -force
}
}
}
}
#Suppression des archives de plus de 6 mois (180 jours exactement)
$ListeDossiersArchives = ls $DossierArchive | select -exp name
foreach ($dossier in $ListeDossiersArchives) {
if ($dossier -lt $dateold)
{$DossierASupprimer = $DossierArchive + $dossier
Remove-Item -path $DossierASupprimer -force -recurse}
}
}
Lecture_Des_dossiers -Societe \"$Mega\" -Forme \"$Avec\" -Imprimante \"$NVPRN0293\"
Lecture_Des_dossiers -Societe \"$Mega\" -Forme \"$Sans\"
Lecture_Des_dossiers -Societe \"$Nova\" -Forme \"$Avec\" -Imprimante \"$NVPRN0272\"
Lecture_Des_dossiers -Societe \"$Nova\" -Forme \"$Sans\" -Imprimante \"$NVPRNCC02\"
exit[/code:1]
[code:1]set-alias i_view \"C:\Program Files\IrfanView\i_view32.exe\"
#appel de la dll du framework
Add-Type -Assembly System.Drawing
Get-ChildItem -Path C:\test -Recurse -Include *.tif |
ForEach-Object {
$Image = [System.Drawing.Image]::FromFile($_.FullName)
New-Object -TypeName System.Management.Automation.PSObject -Property @{
Name = $_.Name
Length = $_.Length
Width = $Image.Width
Height = $Image.Height
}
if ($Image.Width -gt $Image.Height)
{
i_view $Image /rotate_l
}
$Image.Dispose()
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.033 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Imprimer une image avec son titre