여러 PDF 파일 가져 오기경고 : 코딩이 처음입니다!
가져 오려는 표 데이터가 포함 된 약 500 개의 pdf 파일이 있습니다. 데이터를 추출, 스택 및 전치하고 테이블에 추가 / 연결하는 스크립트를 만들었습니다 ( " final.jmp "). 각 pdf는 final.jmp . 이제 여기에 워크 플로 및 문제 나는 확인했다 :
- 여러 pdf를 가져 오는 방법을 알 수 없었기 때문에 스크립트에서 가져올 * .pdf 파일 이름을 변경하여 각 pdf를 개별적으로 가져와야했습니다. final.jmp) .
- 가져올 때마다 프로세스에서 생성하고 연 모든 중간 테이블을 닫고 결과 테이블을 새 테이블로 저장해야합니다. final.jmp .
- 그런 다음 다시 엽니 다 final.jmp , 스크립트를 새 pdf 파일 이름으로 편집하고 새 pdf를 가져 오는 등의 작업을 수행합니다.
내 질문 :
폴더의 모든 pdf를 가져 와서 최종 테이블로 분류 할 때까지 새 pdf를 선택할 때마다 스크립트를 반복적으로 실행할 수 있습니까?
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" )
)
데이터 테이블스크립팅Re : 여러 PDF 파일 가져 오기가능한 흐름 :
- 단일 pdf 파일을 처리하는 함수 생성
- 디렉토리 pdf 디렉토리의 모든 파일 가져 오기
- 디렉토리의 첫 번째 파일을 사용하여 "수집기"데이터 테이블 생성
- 나머지 파일에 대해 반복
- 전치 된 테이블을 생성 된 수집기 데이터 테이블에 연결하고 이후에 닫습니다.
아마도 다음과 같이 작동 할 수 있습니다.
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
);
Re : 여러 PDF 파일 가져 오기고마워요-이 포럼 없이는 내가 어디에 있을지 모르겠습니다. 좋은 물건!