Question
Renommer un fichier PDF grâce aux métadonées
- monsanto
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 12 ans 9 mois #15009
par monsanto
Réponse de monsanto sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
J'ai bien testé merci mais il y a un problème car il repère comme un objet et non un string ..
Et je n'arrive toujours pas a faire une boucle foreach pour renommer les fichiers pdf .
Merci pour votre aide ..
Cordialement
[code:1]
#Charger ITextSHarp.dll (Lien)
$path=\"C:\Users\INFOSUP\Desktop\itextsharp-all-5.4.1\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
echo $name
foreach( )
[/code:1]<br><br>Message édité par: rocokoco2, à: 3/06/13 13:32
Et je n'arrive toujours pas a faire une boucle foreach pour renommer les fichiers pdf .
Merci pour votre aide ..
Cordialement
[code:1]
#Charger ITextSHarp.dll (Lien)
$path=\"C:\Users\INFOSUP\Desktop\itextsharp-all-5.4.1\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
echo $name
foreach( )
[/code:1]<br><br>Message édité par: rocokoco2, à: 3/06/13 13:32
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 9 mois #15010
par monsanto
Réponse de monsanto sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
<br><br>Message édité par: rocokoco2, à: 3/06/13 13:33
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 9 mois #15012
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
La construction de la liste d'objet de 'type' PDFDocumentInfo se fait-elle correctement ?
Pour ta boucle un appel au cmdlet Rename-Item devrait suffire.
Pour ta boucle un appel au cmdlet Rename-Item devrait suffire.
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 8 mois #15281
par monsanto
Réponse de monsanto sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
Oui la construction de la liste d'objet de 'type' PDFDocumentInfo se fait correctement.
Mais ensuite je ne sais pas comment transformer le type Objet au Type String car la conversion ne fonctionne pas ..
voici ma boucle que j'ai effectué :
[code:1]
foreach ($PDFDocument in $oldname)
{
Rename-Item C:\Users\INFOSUP\Desktop\PDF\$oldname $name.pdf
}
[/code:1]
Merci de ton aide
Cordialement
Mais ensuite je ne sais pas comment transformer le type Objet au Type String car la conversion ne fonctionne pas ..
voici ma boucle que j'ai effectué :
[code:1]
foreach ($PDFDocument in $oldname)
{
Rename-Item C:\Users\INFOSUP\Desktop\PDF\$oldname $name.pdf
}
[/code:1]
Merci de ton aide
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 8 mois #15283
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
Essaie déjà ce type de construction :
[code:1]
$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]
Cette approche ne modifie rien sur ton filesystème.
Et elle ne répond pas à ton besoin, c'est juste un premier jet...<br><br>Message édité par: Laurent Dardenne, à: 3/02/14 16:45
[code:1]
$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]
Cette approche ne modifie rien sur ton filesystème.
Et elle ne répond pas à ton besoin, c'est juste un premier jet...<br><br>Message édité par: Laurent Dardenne, à: 3/02/14 16:45
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 1 mois #16879
par monsanto
Réponse de monsanto sur le sujet Re:Renommer un fichier PDF grâce aux métadonées
Bonjour Laurent,
je reviens sur ce sujet mais j'ai toujours des difficulter pour ma boucle ..
je reviens sur ce sujet mais j'ai toujours des difficulter pour ma boucle ..
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.069 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Renommer un fichier PDF grâce aux métadonées