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

Plus d'informations
il y a 12 ans 9 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 9 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 9 mois #15012 par Laurent Dardenne
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 8 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 8 mois #15283 par Laurent Dardenne
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 1 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.062 secondes
Propulsé par Kunena