Importer plusieurs fichiers PDFAttention: je suis nouveau dans le codage!
J'ai environ 500 fichiers pdf contenant des données tabulées que je souhaite importer. J'ai réussi à créer un script qui extraira, empilera et transposera les données ainsi que les ajoutera / concaténera dans une table (que j'ai appelée " final.jmp "). Chaque pdf est représenté par une ligne dans final.jmp . Maintenant, voici le workflow et problèmes J'ai identifié:
- Comme je ne pouvais pas comprendre comment importer plusieurs fichiers PDF, j'ai dû recourir à l'importation de chaque pdf individuellement en modifiant le nom du fichier * .pdf à importer dans le script (qui est intégré dans final.jmp) .
- Après chaque importation, je dois fermer toutes les tables intermédiaires créées et ouvertes dans le processus, et enregistrer la table résultante comme nouvelle final.jmp .
- Je rouvre ensuite final.jmp , modifiez le script avec le nouveau nom de fichier pdf, importez un nouveau pdf et ainsi de suite.
Ma question :
Est-il possible d'exécuter le script de manière répétitive, en sélectionnant à chaque fois un nouveau pdf jusqu'à ce que tous les fichiers PDF d'un dossier aient été importés et rassemblés dans une table finale?
Open(
"C:\example folder\example.pdf",
PDF Tables(
Table(
table name( "1" ),
add rows( page( 1 ), Rect( 2.0419, 0.9776, 3.1993, 1.1726 ) ),
add rows( page( 1 ), Rect( 1.2137, 3.7819, 6.3603, 3.9069 ) ),
add rows( page( 1 ), Rect( 0.8717, 3.9636, 3.0796, 4.0886 ) ),
add rows(
page( 1 ),
Rect( 0.9853, 4.1436, 3.0029, 4.2686 ),
column borders( 0.9853, 2.5172, 3.0029 )
),
add rows( page( 1 ), Rect( 4.581, 4.1436, 7.297, 4.2686 ) ),
add rows(
page( 1 ),
Rect( 0.8883, 4.4136, 4.6374, 4.5386 ),
column borders( 0.8883, 1.9603, 4.6374 )
),
add rows( page( 1 ), Rect( 0.7556, 4.7979, 7.5908, 8.2654 ) )
)
)
);
Data Table( "1" ) << Stack(
columns( :Column 3, :Column 4, :Column 5, :Column 6 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output table("2")
);
Data Table( "2" ) << Transpose(
columns( :Data ),
Output Table( "Final" )
)
Tableau de donnéesScriptingRe: Importer plusieurs fichiers PDFFlux possible:
- Créer une fonction pour gérer un seul fichier pdf
- Obtenez tous les fichiers dans le répertoire pdf du répertoire
- Utilisez le premier fichier du répertoire pour créer une table de données "collector"
- Boucle sur le reste des fichiers
- Concaténer les tables transposées dans la table de données du collecteur créée et fermer après
Peut-être que quelque chose comme ça pourrait fonctionner:
Names Default To Here(1);
//directory where .pdf files exist
pdfDirectory = "C:\example folder\";
//function to open stack and transpose pdf file
stackTransposePdfFile = function({filePath}, {Default Local},
dtTemp = Open(
filePath,
PDF Tables(
Table(
table name("1"),
add rows(page(1), Rect(2.0419, 0.9776, 3.1993, 1.1726)),
add rows(page(1), Rect(1.2137, 3.7819, 6.3603, 3.9069)),
add rows(page(1), Rect(0.8717, 3.9636, 3.0796, 4.0886)),
add rows(page(1), Rect(0.9853, 4.1436, 3.0029, 4.2686), column borders(0.9853, 2.5172, 3.0029)),
add rows(page(1), Rect(4.581, 4.1436, 7.297, 4.2686)),
add rows(page(1), Rect(0.8883, 4.4136, 4.6374, 4.5386), column borders(0.8883, 1.9603, 4.6374)),
add rows(page(1), Rect(0.7556, 4.7979, 7.5908, 8.2654))
)
)
);
//stack data table from pdf
dtTemp_stacked = dtTemp << Stack(
columns(:Column 3, :Column 4, :Column 5, :Column 6),
Source Label Column("Label"),
Stacked Data Column("Data"),
invisible
);
Close(dtTemp, no save); //close table created directly from pdf
//transpose table
dtTemp_transposed = dtTemp_stacked << Transpose(columns(:Data), invisible);
Close(dtTemp_stacked no save); //close stacked table
//return transposed table
return(dtTemp_transposed);
);
//list of files in directory (this assumes that there are only .pdf files)
pdfFile_list = Files In Directory(pdfDirectory);
//use the first table as "collection table"
finalDt = stackTransposePdfFile(pdfDirectory||pdfFile_list[1]);
//loop over files in pdfFile_list starting from second file
For(i = 2, i <= N Items(pdfFile_list), i++,
pdfDt = stackTransposePdfFile(pdfDirectory||pdfFile_list[i]);
finalDt << Concatenate(pdfDt, Append to first table);
Close(pdfDt, no save); //close transposed table
);
Re: Importer plusieurs fichiers PDFMerci - Je ne sais pas où je serais sans ce forum. Super truc!