Cómo importar varios archivos pdf a una tabla de datosAdvertencia: soy nuevo en las secuencias de comandos
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 única tabla de datos jmp.
Flujo de trabajo y problemas :
- Hice un script (ver más abajo) que me permite importar los datos tabulados desde 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 table y sobrescríbala 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í los ciclos continúan.
- Este proceso es más rápido que copiar y pegar manualmente, pero sigue siendo laborioso y casi con certeza no está automatizado en el grado típico de la informática.
Pregunta :
- ¿Es posible ejecutar un script de forma repetitiva, seleccionando cada vez un nuevo PDF para importar y agregándolo a la misma tabla hasta que se hayan importado todos los PDF de 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" ) )
Acceso a los datosRe: Cómo importar varios archivos pdf a una tabla de datosMi error........
Data table( "Final" );
debería haberse especificado
New Table( "Final" );
Re: Cómo importar varios archivos pdf a una tabla de datosLo siento, tengo que regresar con aún 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 intenté para que funcionara: Primero moví todos los archivos a mi disco duro local, porque por alguna razón estamos usando "()" en algunos de los nombres de nuestras 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 solucionar 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 cambiarlo se produce el error.
He pegado a continuación:
- Una copia del script con un nombre de directorio falso. Conservé la cantidad de carpetas y el nombre de la carpeta que contiene 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: Cómo importar varios archivos pdf a una tabla de datos@txnelson , No sé cómo expresar adecuadamente mi gratitud. Eres muy, muy amable. ¡Muchas gracias por tu ayuda nuevamente!
Re: Cómo importar varios archivos pdf a una tabla de datosTodo lo que hay que hacer es simplemente recorrer el código, leer un archivo tras otro y agregarlo a la tabla de datos finales.El JSL siguiente 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>