~/utility/web-printer
Universal Web Printer — URL·HTML을 PDF, 이미지로 변환
스마트 스크롤 스티칭, 요소 추출, PDF 암호화, 워터마킹까지 지원하며 모든 URL이나 HTML을 PDF, PNG, JPEG, WebP로 변환합니다.
미디어
TypeScriptPlaywrightPDF-libSharp
글로벌
카테고리utility / 미디어
언어TypeScript
스택TypeScript, Playwright, PDF-lib, Sharp
마켓글로벌
출력클린한 RAG-레디 JSON
주요 기능
다중 포맷 출력 — PDF, PNG, JPEG, WebP
다양한 뷰 모드 — 뷰포트, 전체 페이지, CSS 셀렉터, 리더빌리티
정확한 전체 페이지 캡처를 위한 스마트 스크롤 스티칭
CSS 셀렉터를 통한 요소 단위 추출
페이지 조작 — 요소 제거, 버튼 클릭, CSS 주입, 고정 헤더 숨기기
PDF 암호화(RC4 128비트) 및 워터마킹
다중 페이지 문서를 위한 PDF 병합
커스텀 뷰포트 및 스케일 비율 설정
활용 사례
- 웹 대시보드로부터 자동 리포트 생성
- 웹사이트 아카이빙 및 문서화
- 비주얼 회귀 테스트 스냅샷
- 카탈로그용 이커머스 상품 페이지 스크린샷
- 법적 컴플라이언스 — 웹 콘텐츠를 증거로 캡처
- 웹 애플리케이션으로부터 PDF 생성
입력 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
sourceType | string | 선택 | url(기본값) 또는 html — startUrls 또는 htmlContent 중 무엇을 렌더링할지 지정 |
startUrls | array | 선택 | 렌더링할 URL |
htmlContent | string | 선택 | 렌더링할 원본 HTML |
outputFormat | string | 선택 | pdf, png, jpeg, webp 중 선택(기본값: pdf) |
viewMode | string | 선택 | viewport, fullPage, selector, readability 중 선택 |
targetSelector | string | 선택 | 요소 단위 캡처를 위한 CSS 셀렉터 |
viewportWidth | number | 선택 | 브라우저 뷰포트 너비(기본값: 1280) |
viewportHeight | number | 선택 | 브라우저 뷰포트 높이(기본값: 720) |
scaleFactor | number | 선택 | 더 선명한 스크린샷을 위한 디바이스 스케일 비율(기본값: 2) |
removeSelectors | array | 선택 | 캡처 전 제거할 요소의 CSS 셀렉터 |
clickSelectors | array | 선택 | 캡처 전 클릭할 요소의 CSS 셀렉터, 예: '더 보기' 버튼 |
hideFixedElements | boolean | 선택 | 캡처 중 내비게이션 바 등 고정/스티키 요소 숨기기(기본값: true) |
customCss | string | 선택 | 렌더링 전에 주입할 커스텀 CSS |
pdfPassword | string | 선택 | RC4 128비트 암호화로 PDF 보호 |
mergePdfs | boolean | 선택 | 생성된 모든 PDF를 하나의 파일로 병합 |
watermark | object | 선택 | 출력 파일에 추가할 텍스트 또는 이미지 워터마크 |
출력 예시
도구는 선택한 포맷(PDF, PNG, JPEG, WebP)으로 파일을 생성해 Apify 데이터셋에 저장합니다. 각 출력에는 메타데이터가 포함됩니다:
1{
2 "url": "https://example.com",
3 "sourceType": "url",
4 "outputFormat": "pdf",
5 "viewMode": "full-page",
6 "fileName": "example_com_2025-12-11T16-06-29-849Z.pdf",
7 "fileUrl": "https://api.apify.com/v2/key-value-stores/abc123DEF456ghi78/records/example_com_2025-12-11T16-06-29-849Z.pdf",
8 "fileSize": 41613,
9 "pageCount": 1,
10 "capturedAt": "2025-12-11T16:06:29.852Z"
11}
자주 묻는 질문
페이지의 특정 요소만 캡처할 수 있나요?
네, targetSelector 파라미터에 CSS 셀렉터를 지정하면 특정 요소만 캡처할 수 있습니다. 예를 들어 '#main-content'를 사용하면 메인 콘텐츠 영역만 캡처됩니다.
스마트 스크롤 스티칭은 어떻게 동작하나요?
전체 페이지 캡처 시, 도구가 페이지를 일정 간격으로 스크롤하면서 각 뷰포트 조각을 캡처한 뒤 이어붙입니다. 이를 통해 지연 로딩되는 콘텐츠와 애니메이션도 제대로 캡처됩니다.
캡처 전에 쿠키 배너나 광고를 제거할 수 있나요?
네, removeSelectors로 제거할 요소의 CSS 셀렉터를 지정할 수 있습니다. hideFixedElements를 사용하면 고정 헤더와 플로팅 요소도 숨길 수 있습니다.