複数の PDF ファイルのデータを、PDF ファイル名でタグ付けされた 1 つのテーブルにインポートするにはどうすればよいですか?やあ、
100 を超える PDF を含むフォルダーがあり、すべて一貫した形式で設定されています。 各 PDF のファイル名は利用したいバッチ番号を表しており、各 PDF には抽出したいデータの特定のテーブルがあります。
私の目的は、すべての PDF から同じデータ テーブルを抽出し、抽出されたすべてのデータ テーブルを PDF ファイル名 (バッチ番号) でタグ付けして連結することです。 最後に、連結テーブルの列を分割し、PDF ファイル名でグループ化して、最終的なテーブルを完成させたいと思います。
これを手動で試してみたところ、必要な最終テーブルに到達することができましたが、各 PDF のテーブルを個別に開いて選択する必要があるため、非常に時間がかかります。
したがって、これを支援できる JSL はあるのでしょうか。
私はスクリプト作成に非常に慣れていませんが、最初の 2 つの PDF ファイルに必要なものを正確に提供するスクリプトを作成することができました。
//Opening up the first two files (Batch Number 1 & Batch Number 2) from the folder
Open(
"C:\Example folder\Batch 1.pdf",
PDF Tables(
Table(
table name( "Batch 1" ),
add rows( page( 1 ), Rect( 0.4143, 5.3995, 7.5889, 6.6781 ) )
)
)
)
;
Open(
"C:\Example folder\Batch 2.pdf",
PDF Tables(
Table(
table name( "Batch 2" ),
add rows( page( 1 ), Rect( 0.4143, 5.3995, 7.5889, 6.6781 ) )
)
)
)
;
//Concatenating the data for the first 2 batches into one table and adding a source column:
Data Table( "Batch 1" ) << Concatenate(
Data Table( "Batch 2" ),
Create source column,
Output table("Concat")
)
;
//Splitting by the concatenated table by the Characteristic column and grouping by source column (batch number) to create a Final table:
Data Table( "Concat" ) << Split(
Split By( :Characteristic ),
Split( :Value ),
Group( :Source Table ),
Remaining Columns( Drop All ),
Sort by Column Property,
Output table("Final")
)
;
//Close all other tables
Close("Batch 1", no save)
;
Close("Batch 2", no save)
;
Close("Concat", no save)このスクリプトを調整して、(最初の 2 つだけでなく) すべての PDF ファイルを開いて、PDF ファイル名でタグ付けされたデータの最終テーブルを作成する必要があります。
私を助けてくれる人はいますか?
どうもありがとう、
アリシア
データのブレンディングとクリーンアップRe: 複数の PDF ファイルのデータを、PDF ファイル名でタグ付けされた 1 つのテーブルにインポートするにはどうすればよいですか?とても感謝しています@Craige_Halesそして@ゲオルグあなたの助けに。 スクリプトを調整できるかどうか試してみます。 本当に感謝!
Re: 複数の PDF ファイルのデータを、PDF ファイル名でタグ付けされた 1 つのテーブルにインポートするにはどうすればよいですか?必要な手順を含む例を次に示します。 の投稿@Craige_Halesこれらがどのように機能するかを理解するのに役立ちます。
Names Default To Here( 1 );
// Prepare a directory
tempdir = "$TEMP\pdf_test";
If( !Directory Exists( tempdir ),
Create Directory( tempdir ),
file_lst = Files In Directory( tempdir );
For( i = 1, i <= N Items( file_lst ), i++,
Delete File( tempdir || "/" || file_lst[i] )
);
);
// Open sample Table
cdt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Prepare PDF's
For( i = 1, i <= 10, i++,
jrn = cdt << Journal;
jrn << save pdf( tempdir || "/" || Char( i ) || "_Big Class.pdf" );
jrn << close window;
);
// Read PDF's
file_lst = Files In Directory( tempdir );
table_lst = {};
For( i = 1, i <= N Items( file_lst ), i++,
Insert Into( table_lst, Open( tempdir || "/" || file_lst[i], PDF All Tables() ) )
);
// Concat PDF's
If( N Items( table_lst ) > 1,
result_table = table_lst[1] << concatenate( table_lst[2 :: N Items( table_lst )], Output Table( "ResultTable" ), Create Source Column )
);
// Close single PDF's
For( i = 1, i <= N Items( table_lst ), i++,
Close( table_lst[i], noSave )
);
split_table = result_table << Split(
Split By( :sex ),
Group( :Source Table ),
Split( :age ),
Remaining Columns( Drop All ),
Sort by Column Property, output table("Split_Result")
);Re: 複数の PDF ファイルのデータを、PDF ファイル名でタグ付けされた 1 つのテーブルにインポートするにはどうすればよいですか?2 つが動作している場合、次のコードはデータテーブルを連結するおそらくそこにたどり着くでしょう。 FilesInDirectory() が必要な関数かもしれません。
同様の例は数多くあります。ディレクトリ内のファイルを検索すると、おそらく見つかるでしょう。
それでも解決しない場合は、もう一度質問してください。ほぼ解決していると思います。