Comment importer plusieurs fichiers PDF dans la table de donnéesAvertissement: je suis nouveau dans le script
Défi :
- J'ai environ 500 fichiers pdf, chacun contenant une table de données que je veux importer dans JMP et les rassembler dans une seule table de données jmp.
Flux de travail et problèmes :
- J'ai créé un script (voir ci-dessous) qui me permet d'importer les données tabulées d'un pdf et de les ajouter à un tableau que j'ai appelé Final.jmp . J'ai conservé le script dans un fichier séparé, c'est-à-dire pas dans une table de données. Chaque pdf est annexé à Final.jmp comme une seule ligne.
- Après chaque importation, je dois fermer le Final.jmp table et écrasez-la avec la nouvelle table "finale" mise à jour qui contient la ligne supplémentaire du pdf nouvellement importé.
- Après chaque importation, je dois également fermer manuellement toutes les tables intermédiaires en cours de création dans le processus. (ennuyeuse)
- Ensuite, je change le nom du fichier pdf dans le script, j'appuie sur Enregistrer et je le relance pour importer encore un autre pdf. Et ainsi les cycles continuent.
- Ce processus est plus rapide que le copier-coller manuel, mais reste laborieux et avec une quasi-certitude non automatisé à un degré typique de l'informatique.
Question :
- Est-il possible d'exécuter un script de manière répétitive, à chaque fois en sélectionnant un nouveau fichier PDF à importer et en l'ajoutant à la même table jusqu'à ce que tous les fichiers PDF d'un dossier aient été importés?
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.5416, 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( 6.0143, 4.6569, 7.2498, 4.7819 ),
column borders( 6.0143, 6.5817, 7.2498 )
),
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( "3" )
);
Data Table( "Final" ) << Concatenate( Data Table( "3" ) )
Tableau de donnéesScriptingRe: Comment importer plusieurs fichiers pdf dans un tableau de donnéesTout ce qui doit être fait est de faire une boucle sur le code, de lire un fichier après l'autre et de l'ajouter à la table de données finale.Le JSL ci-dessous devrait vous fournir un bon début sur la façon de procéder.
Names default to here(1);
// Here is an example where the first thing that is done, is to create
// the list of the files to be processed
// Many different methods can be used to do this, but for this example
// the file names are read in from a directory
theFilesList = Files in directory( <PATH to="" your="" folder="" that="" has="" the="" .pdf="" files=""> );
// Create the Final data table that will have all of the processed files
// concatenated to it
Data Table( "Final" );
// Loop across all of the files and read them in one at a time and add them
// to the Final data table
For( i = 1, i <= N Items( theFilesList ), i++,
Open(
theFilesList[i],
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.5416, 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( 6.0143, 4.6569, 7.2498, 4.7819 ), column borders( 6.0143, 6.5817, 7.2498 ) ),
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( "3" ) );
// Concatenate the processed data to the Final data table
Data Table( "Final" ) << Concatenate( Data Table( "3" ), Append to first table( 1 ) );
// Cleanup the environment
Close( Data Table( "1" ), nosave );
Close( Data Table( "2" ), nosave );
Close( Data Table( "3" ), nosave );
);</PATH>Re: Comment importer plusieurs fichiers pdf dans un tableau de données@txnelson , Je ne sais pas comment exprimer adéquatement ma gratitude. Vous êtes très, très gentil. Merci encore beaucoup pour votre aide!
Re: Comment importer plusieurs fichiers pdf dans un tableau de donnéesDésolé, je dois revenir avec encore plus de questions car d'une manière ou d'une autre, malgré des années de formation académique, je ne parviens pas à faire fonctionner cette boucle. Voici ce que j'ai essayé de faire fonctionner: J'ai d'abord déplacé tous les fichiers sur mon disque dur local, car pour une raison quelconque, nous utilisons "()" dans certains de nos noms de dossiers sur le serveur et j'ai eu l'impression que cela créait un problème . Finalement, j'ai "cité" tout le répertoire dans le script en utilisant des guillemets, ce qui a semblé convaincre le script de s'exécuter jusqu'au prochain message d'erreur. Ensuite, il m'a dit quelque chose à propos de "Path is invalid ... 'Glue' ...". Je l'ai googlé, mais je n'ai aucune idée de la façon de résoudre ce problème. Je peux voir que le nom de fichier dans le message d'erreur est le nom de l'un des fichiers dans le répertoire avec lequel je souhaite travailler. Tout d'abord, je pensais que le trait d'union dans le nom du fichier créait un problème, mais même lors du changement, l'erreur se produit.
J'ai collé ci-dessous:
- Une copie du script avec un faux nom de répertoire. J'ai conservé le nombre de dossiers ainsi que le nom du dossier contenant des parenthèses.
- Le message d'erreur de la fenêtre de script
- Le message d'erreur du débogage
Aussi, comment puis-je inclure le répertoire ET le nom de fichier dans la table de données finale?
Merci beaucoup d'avance! (Si vous trouvez cela trop trivial pour répondre, je comprendrai.)


Names default to here(1);
// Here is an example where the first thing that is done, is to create
// the list of the files to be processed
// Many different methods can be used to do this, but for this example
// the file names are read in from a directory
theFilesList = Files in directory( "C:\directory1\subdirectory1\subdirectory2\subdirectory3 (nameof aperson)\subdirectory4\subdirectory5\subdirectory6\subdirectory7\subdirectory8\subdirectory9\subdirectory10" );
// Create the Final data table that will have all of the processed files
// concatenated to it
Data Table( "Final" );
// Loop across all of the files and read them in one at a time and add them
// to the Final data table
For( i = 1, i <= N Items( theFilesList ), i++,
Open(
theFilesList[i],
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.5416, 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( 6.0143, 4.6569, 7.2498, 4.7819 ), column borders( 6.0143, 6.5817, 7.2498 ) ),
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( "3" ) );
// Concatenate the processed data to the Final data table
Data Table( "Final" ) << Concatenate( Data Table( "3" ), Append to first table( 1 ) );
// Cleanup the environment
Close( Data Table( "1" ), nosave );
Close( Data Table( "2" ), nosave );
Close( Data Table( "3" ), nosave );
);
Re: Comment importer plusieurs fichiers pdf dans la table de donnéesMon erreur ........
Data table( "Final" );
aurait dû être spécifié
New Table( "Final" );