여러 PDF 파일의 데이터를 PDF 파일 이름으로 태그가 지정된 하나의 테이블로 어떻게 가져오나요?안녕하세요,
100개가 넘는 PDF가 포함된 폴더가 있는데 모두 일관된 형식으로 설정되어 있습니다. 각 PDF의 파일 이름은 활용하려는 배치 번호를 나타내며 각 PDF에는 추출하려는 특정 데이터 테이블이 있습니다.
내 목표는 모든 PDF에 대해 동일한 데이터 테이블을 추출한 다음 PDF 파일 이름(배치 번호)으로 태그가 지정된 모든 추출된 데이터 테이블을 연결하는 것입니다. 마지막으로 연결된 테이블의 열을 분할하고 PDF 파일 이름으로 그룹화하여 최종 테이블을 만들고 싶습니다.
나는 이 작업을 수동으로 수행해 보았고 필요한 최종 테이블에 도달할 수 있지만 모든 PDF에서 개별적으로 테이블을 열고 선택해야 하므로 시간이 많이 걸립니다.
따라서 이를 도울 수 있는 JSL이 있는지 궁금합니다.
저는 스크립팅이 처음이지만 처음 두 개의 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)PDF 파일 이름으로 태그가 지정된 최종 데이터 테이블을 생성하기 위해 모든 PDF 파일(처음 두 개가 아닌)을 열려면 이 스크립트를 조정해야 합니다.
나를 도울 수 있는 사람이 있습니까?
감사합니다.
알리시아
데이터 테이블스크립팅Re: 여러 PDF 파일의 데이터를 PDF 파일 이름으로 태그가 지정된 하나의 테이블로 어떻게 가져오나요?큰 감사 @Craige_Hales 그리고 @게오르그 너의 도움으로. 스크립트를 적용할 수 있는지 확인하겠습니다. 정말 감사합니다!
Re: 여러 PDF 파일의 데이터를 PDF 파일 이름으로 태그가 지정된 하나의 테이블로 어떻게 가져오나요?다음은 필요한 단계가 포함된 예입니다. 의 게시물 @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 파일 이름으로 태그가 지정된 하나의 테이블로 어떻게 가져오나요?두 개가 작동하는 경우 코드는 데이터 테이블 연결 아마 당신을 거기에 데려다 줄 것입니다. FilesInDirectory()가 필요한 기능일 수 있습니다.
유사한 예가 많이 있습니다. Files In Directory를 검색하면 찾을 수 있을 것입니다.
그것이 당신을 거기에 데려가지 않는지 다시 물어보십시오, 나는 당신이 가까이 있다고 생각합니다.