Playwright 및 pdf2json을 사용하여 PDF 내용 확인
이 예제에서 사용할 pdf 파일은 6페이지가 포함된 평범한 오래된 텍스트 기반 pdf입니다. 간단히 하기 위해 이 파일
pdf_sample.pdf
을 프로젝트의 루트 폴더에 저장했습니다.우리의 목표는 다음과 같습니다.
먼저 원사(또는 npm)를 사용하여 프로젝트에
pdf2json
를 추가해야 합니다.yarn add pdf2json -D
pdf2json
를 사양 파일로 가져오고 테스트를 위한 초기 스캐폴딩을 만듭니다.import PDFParser from 'pdf2json';
import { test, expect } from '@playwright/test';
test.describe('assert PDF contents using Playwright', () => {
test.beforeAll(async () => {
})
test('pdf file should have 6 pages', async () => {
});
test('contains the correct subheading text', async () => {
});
test('shows the correct meta information (keywords)', async () => {
});
});
pdf 콘텐츠를 변수로 구문 분석하고 로드하는 어려운 작업을 수행하는 간단한 도우미 함수를 만듭니다.
async function getPDFContents(pdfFilePath: string): Promise<any> {
let pdfParser = new PDFParser();
return new Promise((resolve, reject) => {
pdfParser.on('pdfParser_dataError', (errData: {parserError: any}) =>
reject(errData.parserError)
);
pdfParser.on('pdfParser_dataReady', (pdfData) => {
resolve(pdfData);
});
pdfParser.loadPDF(pdfFilePath);
});
}
describe 블록 내에서 범위가 지정된
pdfContents
라는 변수를 만듭니다.let pdfContents: any
beforeAll
를 업데이트하여 pdf의 내용을 변수로 읽습니다. test.beforeAll(async ({}) => {
pdfContents = await getPDFContents('./pdf_sample.pdf')
})
pdfContents
의 모양을 디버깅하고 검사하는 경우 처음 2개의 테스트가 어설션하기 매우 쉽다는 것을 알 수 있습니다. test('pdf file should have 6 pages', async () => {
expect(pdfContents.Pages.length, 'The pdf should have 6 pages').toEqual(6);
});
test('shows the correct meta informaion (keywords)', async () => {
expect(pdfContents.Meta.Keywords, 'PDF keyword was incorrect').toEqual('Standard Fees and Charges, 003-750, 3-750');
});
그러나 마지막 테스트(파일에 "수수료를 청구할 수 있는 경우"가 포함되어 있는지 확인)는 조금 더 복잡합니다.
Pages
배열을 확장하고 텍스트가 있을 것으로 예상되는 페이지를 찾아야 합니다. 그런 다음 Texts
배열을 검사하여 찾고 있는 텍스트를 찾아야 합니다. 이 예에서는 네 번째 줄의 첫 번째 페이지에서 발견되었습니다. 이는 pdfContents.Pages[0].Texts[3].R[0].T
에 해당합니다.마지막 복잡한 문제가 남아 있습니다. "When%20we%20may%20charge%20fees"가 필요한 원시 텍스트가 인코딩된 것 같습니다.
decodeURI
함수를 사용하여 인코딩을 쉽게 제거할 수 있습니다. test('contains the correct subheading text', async () => {
const rawText = pdfContents.Pages[0].Texts[3].R[0].T
expect(decodeURI(rawText), 'The subheading text was incorrect').toEqual('When we may charge fees');
});
최종 테스트
결론
Playwright 및 pdf2json을 사용하여 pdf의 내용을 쉽게 확인할 수 있는 방법을 시연했습니다. 우리는 텍스트 정보가 포함된 매우 기본적인 PDF로 작업했습니다. 안타깝게도 pdf2json은 더 복잡한 PDF 파일을 처리하지 못할 수 있습니다. YMMV 🥳🚀
Reference
이 문제에 관하여(Playwright 및 pdf2json을 사용하여 PDF 내용 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ryanroselloog/verify-pdf-contents-using-playwright-and-pdf2json-1dob텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)