¿Cómo importar varios archivos PDF a la tabla de datos?Advertencia: soy nuevo en la creación de scripts
Desafío :
- Tengo alrededor de 500 archivos pdf, cada uno de los cuales contiene una tabla de datos que quiero importar a JMP y recopilar en una sola tabla de datos jmp.
Flujo de trabajo y problemas :
- Hice un script (ver más abajo) que me permite importar los datos tabulados de un pdf y agregarlos a una tabla que llamé Final.jmp . Guardé el script como un archivo separado, es decir, no dentro de una tabla de datos. Cada pdf se adjunta a Final.jmp como una sola fila.
- Después de cada importación, tengo que cerrar el Final.jmp tabla y sobrescribirla con la nueva tabla "final" actualizada que contiene la fila adicional del pdf recién importado.
- Después de cada importación, también tengo que cerrar manualmente todas las tablas intermedias que se crean en el proceso. (aburrido)
- Luego cambio el nombre del archivo pdf en el script, presiono guardar y lo vuelvo a ejecutar para importar otro pdf. Y así continúan los ciclos.
- Este proceso es más rápido que el pegado manual de copias, pero sigue siendo laborioso y casi con certeza no está automatizado en un grado típico de la informática.
Pregunta :
- ¿Es posible ejecutar un script repetidamente, seleccionando cada vez un nuevo PDF para importar y agregarlo a la misma tabla hasta que se hayan importado todos los PDF en una carpeta?
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" ) )
Tabla de datosScriptingRe: como importar varios archivos pdf a la tabla de datosTodo lo que hay que hacer es recorrer el código, leer un archivo tras otro y agregarlo a la tabla de datos final.El JSL a continuación debería proporcionarle un buen comienzo sobre cómo hacer esto.
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: como importar varios archivos pdf a la tabla de datos@txnelson , No sé cómo expresar adecuadamente mi gratitud. Eres muy, muy amable. ¡Muchas gracias por tu ayuda nuevamente!
Re: como importar varios archivos pdf a la tabla de datosLo siento, tengo que volver con más preguntas porque de alguna manera, a pesar de años de formación académica, no puedo hacer que este bucle funcione. Esto es lo que traté de hacer que funcionara: Primero moví todos los archivos a mi disco duro local, porque por alguna razón estamos usando "()" en algunos de nuestros nombres de carpetas en el servidor y tuve la impresión de que esto estaba creando un problema . Finalmente, "cité" todo el directorio en el script usando comillas, lo que pareció convencer al script de que se ejecutara hasta el siguiente mensaje de error. Luego me dijo algo sobre "La ruta no es válida ... 'Pegamento' ...". Lo busqué en Google, pero no tengo idea de cómo abordar ese problema. Puedo ver que el nombre del archivo en el mensaje de error es el nombre de uno de los archivos en el directorio con el que quiero trabajar. Primero pensé que el guión en el nombre del archivo estaba creando un problema, pero incluso al cambiar eso ocurre el error.
Lo he pegado a continuación:
- Una copia del script con un nombre de directorio falso. Conservé el número de carpetas y el nombre de la carpeta que contenía paréntesis.
- El mensaje de error de la ventana del script
- El mensaje de error de la depuración
Además, ¿cómo incluyo el directorio Y el nombre del archivo en la tabla de datos final?
¡Muchas gracias por adelantado! (Si encuentra esto demasiado trivial para responder, lo entenderé).


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: como importar varios archivos pdf a la tabla de datosMi error........
Data table( "Final" );
debería haber sido especificado
New Table( "Final" );