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

Plus d'informations
il y a 12 ans 11 mois #15009 par monsanto
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

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

Plus d'informations
il y a 12 ans 11 mois #15010 par monsanto
<br><br>Message édité par: rocokoco2, à: 3/06/13 13:33

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

Plus d'informations
il y a 12 ans 11 mois #15012 par xyz
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.

Tutoriels PowerShell

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

Plus d'informations
il y a 12 ans 10 mois #15281 par monsanto
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

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

Plus d'informations
il y a 12 ans 10 mois #15283 par xyz
Essaie déjà ce type de construction :
[code:1]
$files=\&quot;C:\Users\INFOSUP\Desktop\PDF\&quot;

$PDFInfos=gci $files *.pdf -recurse | New-PDFDocumentInformation

$newName=\&quot;Test\&quot;
$i=0
foreach ($PDFDocument in $PDFInfos)
{
$i++
Rename-Item $PDFDocument.FileName \&quot;$newName$i.pdf\&quot; -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.

Plus d'informations
il y a 12 ans 3 mois #16879 par monsanto
Bonjour Laurent,

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.046 secondes
Propulsé par Kunena