Pour un projet personnel, j'ai du chercher un moyen d'extraire des dates dans une centaine de fichiers pdf.
Ayant déjà eu l'occasion de toucher un peu à itextsharp (une bibliothèque .Net permettant la création / manipulation de fichiers pdf), j'ai cherché comment faire pour récupérer les informations de ces fichiers sans pour autant aller manuellement dans chaque lire les informations (ils faisaient tous entre 2 et 5 pages).
Pour les curieux, voici un rapide exemple / mémo de la manière de faire pour parcourir le texte inclus dans un fichier pdf depuis Powershell.
Tout d'abord, vous devrez télécharger itextsharp, débloquer le fichier (clic droit > Propriétés > Débloquer), puis décompresser le tout. (Dans cet exemple, uniquement la dll itextsharp.dll est utilisée, les autres n'ont pas leur utilité dans cet exemple).
Modifiez ensuite les chemins pour qu'ils correspondent aux endroits ou vous avez stocké le tout.
Set-location C:\chemin\vers\dll\itextsharp-all-5.5.10
Add-type -Path "itextsharp.dll"
$pdfobject = [iTextSharp.text.pdf.PdfReader]("C:\chemin\vers\document\test.pdf")
for ($page = 1; $page -le $pdfobject.NumberOfPages;$page++)
{
$extractor = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($pdfobject,$page)
$text = $extractor.split("`n")
$text | % { if ($_ -as [datetime] -is [datetime]){$_}}
}
Dans cet exemple, le script recherche un élement qui pourrait être compris par Powershell comme une date dans le document test, et retourne cette valeur lorsqu'elle est trouvée.
À vous de jouer désormais :)