Question
Renommer un fichier PDF grâce aux métadonées
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 1 mois #16880
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
Salut,
rocokoco2 écrit:
Que donne le dernier exemple de code proposé ?
Je viens d'y corriger une coquille.
rocokoco2 écrit:
C'est à dire ?mais j'ai toujours des difficulter pour ma boucle ..
Que donne le dernier exemple de code proposé ?
Je viens d'y corriger une coquille.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- monsanto
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 12 ans 2 semaines #17103
par monsanto
Réponse de monsanto sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
Bonjour Laurent,
alors lorsque que je test ta boucle, il m'affiche une phrase en me disant bien qu'il va renommer mais il ne modifie rien dans mon dossier PDF je t'envoie en pièce jointe la capture du message.
voila mon script entier :
[code:1]
#Charger ITextSHarp.dll (Lien)
$path=\"C:\Users\INFOSUP\Desktop\itextsharp-all-5.5.0\itextsharp-dll-core\"
[System.Reflection.Assembly]::LoadFrom(\"$path\itextsharp.dll\"«»)
function New-PDFDocumentInformation{
param(
[ValidateNotNullOrEmpty()]
[Parameter(Position=0,Mandatory=$true,ValueFromPipeline = $true,ValueFromPipelineByPropertyName= $true)]
[Alias(\"PSPath\"«»)]
#Référence un chemin d'un système de fichiers ou une url : file://, http://, https://
[String] $Path
)
begin {$isForceToReadAll=$False}
process {
try
{
if (-not [Uri]::IsWellFormedUriString($Path,[UriKind]::Absolute))
{
$Path=$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($Path)
}
$AccessFile = New-object iTextSharp.text.pdf.RandomAccessFileOrArray($Path)
Write-debug \"`tWait load Pdf : $path\"
$reader = New-object iTextSharp.text.pdf.PdfReader($AccessFile, $isForceToReadAll)
Write-debug \"Next pdf file\"
$PDFDocument=New-Object PSObject -Property @{
FileName=$_.FullName
NumberOfPages=$reader.NumberOfPages;
#Pas de méthode Clone sur un dictionnaire générique.
Info=$(
$hCopy=@{}
$reader.Info.GetEnumerator()|
Foreach {$hCopy.Add($_.Key,$_.Value) }
$hCopy
)
Tampered=$reader.Tampered;
PdfVersion=$reader.PdfVersion;
Permissions=$reader.Permissions;
Appendable=$reader.Appendable;
MetaData=New-Object String(,$Reader.Metadata);
PageSize=$reader.GetPageSize(1)
}
$PDFDocument.PsObject.TypeNames[0] = \"PDFDocumentInfo\"
$PDFDocument
} catch {
$PSCmdlet.WriteError(
(New-Object System.Management.Automation.ErrorRecord(
$_.Exception,
\"PDFDocumentInfoUriOrPath\",
\"InvalidOperation\",
(\"{0} : {1}\" -f $MyInvocation.Mycommand.Name,$_.Exception.Message))
)
)
}
finally {
if ($reader -ne $null)
{ $reader.Close() }
if ($AccessFile -ne $null)
{ $AccessFile.Close() }
}
}
}
New-Alias New-PdfInfo New-PDFDocumentInformation -description \"Construit un objet contenant les metadonnées d'un fichier PDF.\"
$files=\"C:\Users\INFOSUP\Desktop\pdf\"
$PDFInfos=gci $files *.pdf -recurse | New-PDFDocumentInformation
$PDFInfos|Select Filename, @{n=\"Title\";e={$_.info.Title}}|Out-GridView
$oldname=$PDFInfos|Select Filename
$name =$PDFInfos|Select @{n=\"Title\";e={$_.info.Title}}
echo $oldname
$files=\"C:\Users\INFOSUP\Desktop\pdf\"
$PDFInfos=gci $files *.pdf -recurse | New-PDFDocumentInformation
$newName=\"Test\"
$i=0
foreach ($PDFDocument in $PDFInfos)
{
$i++
Rename-Item $PDFDocument.FileName \"$newName$i.pdf\" -whatif
}
[/code:1]
J'ai toujours un soucis à récupérer le nom de départ et à le modifier ensuite.
Merci de ton aide,
Cordialement
alors lorsque que je test ta boucle, il m'affiche une phrase en me disant bien qu'il va renommer mais il ne modifie rien dans mon dossier PDF je t'envoie en pièce jointe la capture du message.
voila mon script entier :
[code:1]
#Charger ITextSHarp.dll (Lien)
$path=\"C:\Users\INFOSUP\Desktop\itextsharp-all-5.5.0\itextsharp-dll-core\"
[System.Reflection.Assembly]::LoadFrom(\"$path\itextsharp.dll\"«»)
function New-PDFDocumentInformation{
param(
[ValidateNotNullOrEmpty()]
[Parameter(Position=0,Mandatory=$true,ValueFromPipeline = $true,ValueFromPipelineByPropertyName= $true)]
[Alias(\"PSPath\"«»)]
#Référence un chemin d'un système de fichiers ou une url : file://, http://, https://
[String] $Path
)
begin {$isForceToReadAll=$False}
process {
try
{
if (-not [Uri]::IsWellFormedUriString($Path,[UriKind]::Absolute))
{
$Path=$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($Path)
}
$AccessFile = New-object iTextSharp.text.pdf.RandomAccessFileOrArray($Path)
Write-debug \"`tWait load Pdf : $path\"
$reader = New-object iTextSharp.text.pdf.PdfReader($AccessFile, $isForceToReadAll)
Write-debug \"Next pdf file\"
$PDFDocument=New-Object PSObject -Property @{
FileName=$_.FullName
NumberOfPages=$reader.NumberOfPages;
#Pas de méthode Clone sur un dictionnaire générique.
Info=$(
$hCopy=@{}
$reader.Info.GetEnumerator()|
Foreach {$hCopy.Add($_.Key,$_.Value) }
$hCopy
)
Tampered=$reader.Tampered;
PdfVersion=$reader.PdfVersion;
Permissions=$reader.Permissions;
Appendable=$reader.Appendable;
MetaData=New-Object String(,$Reader.Metadata);
PageSize=$reader.GetPageSize(1)
}
$PDFDocument.PsObject.TypeNames[0] = \"PDFDocumentInfo\"
$PDFDocument
} catch {
$PSCmdlet.WriteError(
(New-Object System.Management.Automation.ErrorRecord(
$_.Exception,
\"PDFDocumentInfoUriOrPath\",
\"InvalidOperation\",
(\"{0} : {1}\" -f $MyInvocation.Mycommand.Name,$_.Exception.Message))
)
)
}
finally {
if ($reader -ne $null)
{ $reader.Close() }
if ($AccessFile -ne $null)
{ $AccessFile.Close() }
}
}
}
New-Alias New-PdfInfo New-PDFDocumentInformation -description \"Construit un objet contenant les metadonnées d'un fichier PDF.\"
$files=\"C:\Users\INFOSUP\Desktop\pdf\"
$PDFInfos=gci $files *.pdf -recurse | New-PDFDocumentInformation
$PDFInfos|Select Filename, @{n=\"Title\";e={$_.info.Title}}|Out-GridView
$oldname=$PDFInfos|Select Filename
$name =$PDFInfos|Select @{n=\"Title\";e={$_.info.Title}}
echo $oldname
$files=\"C:\Users\INFOSUP\Desktop\pdf\"
$PDFInfos=gci $files *.pdf -recurse | New-PDFDocumentInformation
$newName=\"Test\"
$i=0
foreach ($PDFDocument in $PDFInfos)
{
$i++
Rename-Item $PDFDocument.FileName \"$newName$i.pdf\" -whatif
}
[/code:1]
J'ai toujours un soucis à récupérer le nom de départ et à le modifier ensuite.
Merci de ton aide,
Cordialement
Connexion ou Créer un compte pour participer à la conversation.
- monsanto
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 12 ans 2 semaines #17104
par monsanto
Réponse de monsanto sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
Mon image ne sait pas envoyer je t'envois ici :
PS C:\Users\INFOSUP\Desktop> .\script.ps1
GAC Version Location
---
False v2.0.50727 C:\Users\INFOSUP\Desktop\itextsharp-all-5.5.0\itextsharp-dll-core\itextsharp.dll
FileName : C:\Users\INFOSUP\Desktop\pdf\rbafz.pdf
FileName : C:\Users\INFOSUP\Desktop\pdf\sg247972.pdf
WhatIf : Opération « Renommer le fichier » en cours sur la cible « Élément : C:\Users\INFOSUP\Desktop\pdf\rbafz.pdf De
ination : C:\Users\INFOSUP\Desktop\pdf\Test1.pdf ».
WhatIf : Opération « Renommer le fichier » en cours sur la cible « Élément : C:\Users\INFOSUP\Desktop\pdf\sg247972.pdf
estination : C:\Users\INFOSUP\Desktop\pdf\Test2.pdf ».
PS C:\Users\INFOSUP\Desktop> .\script.ps1
GAC Version Location
---
False v2.0.50727 C:\Users\INFOSUP\Desktop\itextsharp-all-5.5.0\itextsharp-dll-core\itextsharp.dll
FileName : C:\Users\INFOSUP\Desktop\pdf\rbafz.pdf
FileName : C:\Users\INFOSUP\Desktop\pdf\sg247972.pdf
WhatIf : Opération « Renommer le fichier » en cours sur la cible « Élément : C:\Users\INFOSUP\Desktop\pdf\rbafz.pdf De
ination : C:\Users\INFOSUP\Desktop\pdf\Test1.pdf ».
WhatIf : Opération « Renommer le fichier » en cours sur la cible « Élément : C:\Users\INFOSUP\Desktop\pdf\sg247972.pdf
estination : C:\Users\INFOSUP\Desktop\pdf\Test2.pdf ».
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 2 semaines #17105
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
Salut,
rocokoco2 écrit:
Le paramètre -whatif permet de vérifier si le nouveau nom correspondant au résultat attendu.
Si c'est le cas supprime le de la ligne de commande.
rocokoco2 écrit:
Oui, c'est ce que je te disais, dans un de mes derniers post.alors lorsque que je test ta boucle, il m'affiche une phrase en me disant bien qu'il va renommer mais il ne modifie rien dans mon dossier PDF
Le paramètre -whatif permet de vérifier si le nouveau nom correspondant au résultat attendu.
Si c'est le cas supprime le de la ligne de commande.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- monsanto
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 12 ans 2 semaines #17106
par monsanto
Réponse de monsanto sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
Merci cela fonctionne très bien.
Par contre j'aimerai récupérer le titre et je n'arrives pas à récupérer la variable ..
Il faudrait que je fasse :
Rename-Item $PDFDocument.FileName n.\"$i.pdf\" ??
Rename-Item $PDFDocument.FileName Title\"$i.pdf\" ??
tous mes tests ne fonctionne pas je ne sais pas pourquoi je n'arrives pas à récupérer la variable du Titre ..
Merci,
Cordialement,
Par contre j'aimerai récupérer le titre et je n'arrives pas à récupérer la variable ..
Il faudrait que je fasse :
Rename-Item $PDFDocument.FileName n.\"$i.pdf\" ??
Rename-Item $PDFDocument.FileName Title\"$i.pdf\" ??
tous mes tests ne fonctionne pas je ne sais pas pourquoi je n'arrives pas à récupérer la variable du Titre ..
Merci,
Cordialement,
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 2 semaines #17107
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
rocokoco2 écrit:
[code:1]$PDFDocument.Info.Title[/code:1]
Dans ta boucle, utilise ceci :tous mes tests ne fonctionne pas je ne sais pas pourquoi je n'arrives pas à récupérer la variable du Titre ..
[code:1]$PDFDocument.Info.Title[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.061 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Renommer un fichier PDF grâce aux métadonées