Question Renommer un fichier PDF grâce aux métadonées

Plus d'informations
il y a 12 ans 1 mois #16880 par Laurent Dardenne
Salut,
rocokoco2 écrit:

mais j'ai toujours des difficulter pour ma boucle ..

C'est à dire ?
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.

Plus d'informations
il y a 12 ans 2 semaines #17103 par monsanto
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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 2 semaines #17104 par monsanto
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 ».

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 2 semaines #17105 par Laurent Dardenne
Salut,
rocokoco2 écrit:

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

Oui, c'est ce que je te disais, dans un de mes derniers post.
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.

Plus d'informations
il y a 12 ans 2 semaines #17106 par monsanto
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,

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 2 semaines #17107 par Laurent Dardenne
rocokoco2 écrit:

tous mes tests ne fonctionne pas je ne sais pas pourquoi je n'arrives pas à récupérer la variable du Titre ..

Dans ta boucle, utilise ceci :
[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
Propulsé par Kunena