Importazione di più file pdfAvvertenza: sono nuovo nella programmazione!
Ho circa 500 file pdf contenenti dati tabulati che voglio importare. Sono riuscito a creare uno script che estrarrà, impilerà e trasporrà i dati oltre ad aggiungerli / concatenarli a una tabella (che ho chiamato " final.jmp "). Ogni pdf è rappresentato da una riga in final.jmp . Ora ecco il file flusso di lavoro e problemi Ho identificato:
- Dal momento che non riuscivo a capire come importare più PDF, ho dovuto ricorrere all'importazione di ogni pdf individualmente cambiando il nome del file * .pdf da importare nello script (che è incorporato in final.jmp) .
- Dopo ogni importazione devo chiudere tutte le tabelle intermedie create e aperte nel processo e salvare la tabella risultante come nuova final.jmp .
- Quindi riapro final.jmp , modifica lo script con il nuovo nome del file pdf, importa un nuovo pdf e così via.
La mia domanda :
È possibile eseguire lo script in modo ripetitivo, selezionando ogni volta un nuovo pdf fino a quando tutti i pdf di una cartella non sono stati importati e raccolti in una tabella 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" )
)
Tabella datiScriptingRi: Importazione di più file pdfPossibile flusso:
- Crea una funzione per gestire un singolo file pdf
- Ottieni tutti i file nella directory pdf directory
- Usa il primo file nella directory per creare un "collector" datatable
- Ripeti il resto dei file
- Concatena le tabelle trasposte ai dati del raccoglitore creato e chiudi dopo
Forse qualcosa del genere potrebbe funzionare:
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
);
Ri: Importazione di più file pdfGrazie, non so dove sarei senza questo forum. Roba fantastica!