한국어

문서 · PDF 툴킷

브라우저 탭이 업로드하지 않고 PDF을 읽고 다시 쓰는 방법

· 작동 방식

pdf 개인정보 보호 웹 작업자

브라우저 메모리를 통해 이동하고 로컬 다운로드로 반환되는 문서
원본 ToolAcre 벡터 일러스트레이션

'브라우저에서 실행'은 이해하고 테스트할 수 있는 주장입니다. 이 게시물은 웹 워커를 통해 파일 선택기에서 메모리로 PDF를 따라갔다가 다운로드로 되돌아가며 각 단계의 기능과 서버가 관련되지 않은 이유를 설명합니다.

파일 선택기는 업로드가 아닙니다. 파일을 선택할 때 혼란스러운 순간은 보내는 것처럼 보입니다.

파일 선택기는 많은 사이트에서 선택한 파일을 즉시 보내기 때문에 업로드 컨트롤과 유사합니다. 선택만으로는 전송이 필요하지 않습니다. 이 툴킷에서 브라우저는 사용자가 선택한 File 객체에 대한 페이지 액세스 권한을 부여하고 컨트롤러는 PDF 바이트를 탭 메모리로 읽기 전에 해당 유형과 크기의 유효성을 검사합니다.

경계는 관찰 가능합니다. 문서를 선택하면 로컬 인터페이스 상태가 변경되고 해당 이름, 크기 및 페이지 수가 표시되며 작업이 활성화됩니다. 파일을 애플리케이션 엔드포인트에 게시하지 않습니다. PDF 한도는 50 MB이고 이미지 한도는 30 MB이며 비용이 많이 드는 처리가 시작되기 전에 적용됩니다.

디스크에서 메모리로 — File API가 사이트 자체 JavaScript가 읽을 수 있는 바이트 배열을 페이지에 전달하는 방법

PDF의 경우 `arrayBuffer()`은 바이트를 제공하고 `Uint8Array`은 작업자 호출을 위해 바이트를 보유합니다. 불필요한 두 번째 읽기를 피하기 위해 이미지 배치는 ​​다르게 처리됩니다. 원시 파일 객체는 브라우저 이미지가 준비될 때까지 유지됩니다. 이는 원격 저장소나 계정 기록이 아닌 현재 브라우저 컨텍스트 내의 메모리 작업입니다.

첫 번째 PDF은 작업자의 `info` 호출을 통해 검사되므로 페이지 수가 결정되는 동안 큰 문서가 그리기를 차단하지 않습니다. 탭에는 소스 바이트, 파서 상태, 준비된 자산 및 최종 출력을 임시로 함께 보관할 수 있습니다. 로컬 처리에서는 여전히 실제 장치 리소스를 사용하므로 문제를 지우거나 닫는 것이 중요합니다.

대부분의 PDF 변환은 툴킷 작업자를 사용합니다. PDF 구문 분석 및 캔버스 인코딩은 별도의 분할을 갖습니다.

전용 모듈 작업자를 통해 pdf-lib 병합, 분할, 추출, 삭제, 재정렬, 회전, 워터마크 및 최종 이미지-PDF 어셈블리 호출 pdf-lib. 진행 및 취소 메시지는 계산 작업이 기본 인터페이스 스레드에서 멀리 떨어져 있는 동안 해당 경계를 넘습니다. 파일을 지우면 가비지 수집을 기다리는 대신 작업자가 종료됩니다.

PDF-to-image는 중요한 예외입니다. pdf.js는 구문 분석을 위해 자체 작업자를 사용하지만 브라우저 캔버스 인코딩은 기본 스레드에 남아 있어야 합니다. 렌더러는 페이지 간에 양보하므로 컨트롤과 진행률을 다시 그릴 수 있습니다. 모든 변환이 전적으로 하나의 작업자에서 실행된다고 말하는 것은 출시된 구현과 모순됩니다.

구문 분석 및 쓰기는 로컬 단계이지만 이미지 준비 및 캔버스 인코딩은 기본 스레드에서 실행할 수 있습니다.

일반 파이프라인은 읽기, 해석, 변환 및 인코딩이지만 각 작업은 자체 구체적인 기계를 선택합니다. 페이지 복사 작업은 pdf-lib에 새로운 문서를 생성하도록 요청합니다. 회전은 추가 페이지 메타데이터를 변경합니다. 워터마크는 그림을 추가합니다. PDF-to-image는 페이지를 렌더링하는 반면, Images-to-PDF은 작업자 어셈블리 전에 브라우저에서 디코딩된 이미지를 준비합니다.

이러한 구별은 충실도에 영향을 미칩니다. 페이지를 복사하면 선택 가능한 콘텐츠가 유지됩니다. PNG 또는 JPEG로 렌더링하면 페이지가 픽셀로 바뀌고 텍스트 레이어가 손실됩니다. PNG/JPEG가 아닌 이미지는 PDF 어셈블리 전에 PNG로 디코딩되고 다시 인코딩될 수 있습니다. "로컬"은 하나의 범용 변환 알고리즘이 아닌 데이터 이동을 설명합니다.

다운로드는 로컬 개체입니다. Blob 및 개체 URL이 어떤 서버에도 존재하지 않는 파일을 제공하는 방법

각 작업은 인터페이스가 적절한 미디어 유형을 사용하여 Blob에 래핑하는 바이트 또는 ZIP을 반환합니다. 결과 작업은 서버 파일로 이동하는 대신 브라우저 다운로드를 생성하는 공유 `downloadBlob` 도우미를 호출합니다. 생성된 아티팩트는 사용자가 일반 기기 저장소에 저장하기 전에 메모리에 존재했습니다.

구성 도우미 축소판도 Blob 개체 URL을 사용하지만 해당 수명 주기는 명시적입니다. 이전 URL은 새 로드 전에 취소되고 삭제 또는 삭제 시 모두 취소됩니다. 이러한 구별은 로컬 개인 정보 보호 주장이 메모리 누수를 숨기는 것을 방지합니다. 다운로드되면 파일은 일반적인 장치 백업 및 공유 규칙을 따릅니다.

장치의 메모리가 제한되는 이유 — 원본, 구문 분석된 구조 및 다시 작성된 복사본이 모두 RAM에 동시에 저장됩니다.

로컬 작업은 RAM 및 브라우저 정책은 물론 명시적인 입력 한도에 의해 제한됩니다. PDF은 소스 바이트, 구문 분석된 개체 모델, 전송된 작업자 버퍼, 미리 보기 및 직렬화된 출력으로 동시에 존재할 수 있습니다. 래스터 페이지는 큰 캔버스를 추가하므로 렌더러는 픽셀 예산을 측정하고 할당 전에 크기를 줄일 수 있습니다.

압축된 파일 크기는 디코딩된 페이지 이미지에 대해 거의 알려주지 않기 때문에 50 MB 아래에서도 데스크톱보다 휴대폰이 더 빨리 어려움을 겪을 수 있습니다. 관련 없는 탭을 닫고, 더 적은 수의 페이지를 처리하거나, 까다로운 작업에 더 큰 장치를 사용하십시오. 하드 캡은 PDF당 50 MB, 이미지당 30 MB로 유지됩니다. 기억력은 고정된 한계가 없다고 주장하는 변명이 될 수 없습니다.

다른 ToolAcre 제품은 네트워크를 사용할 수 있습니다. 동의된 생산 분석도 별개입니다.

저장소에는 두 개의 다른 ToolAcre 제품이 설계상 네트워크에 연결되므로 로컬 동작은 사이트 전체에 일반화되기보다는 제품별로 확인되어야 한다고 명시되어 있습니다. PDF 작업 코드에는 문서를 전달하는 엔드포인트가 없으며 자동화된 격리 테스트는 처리 중에 해당 불변성을 확인합니다.

사이트 전체 분석은 동의 후 정식 프로덕션 호스트에서만 실행할 수 있습니다. ToolAcre 이벤트 허용 목록은 파일 이름, 내용, 붙여넣은 텍스트, URL 및 정확한 파일 크기를 제외하는 반면, Google 스크립트는 개인정보 보호정책에 설명된 타사 코드로 유지됩니다. 정적 자산 또는 분석 요청은 문서 업로드와 다릅니다.

요점 — 모든 단계는 장치에서 발생하며 PDF 툴킷 페이지와 네트워크 패널을 통해 이를 확인할 수 있습니다.

전체 수명 주기가 표시됩니다. 파일을 선택하고, 유효성을 검사하고 읽고, 적절한 작업자 또는 렌더링 경로를 사용하여 로컬로 변환하고, 출력을 Blob으로 래핑하고, 다운로드한 다음, 버퍼와 객체 URL을 지웁니다. 해당 페이지 작업을 수행하는 데 애플리케이션 서버가 필요하지 않습니다.

"브라우저에서"를 슬로건이 아닌 검사할 수 있는 아키텍처로 취급하십시오. 요청을 관찰하고, 작업별 메모를 읽고, 완료되면 파일 지우기와 여유 메모리를 사용하세요. 해당 컨트롤은 Organizer 이미지를 해제하고, 참조를 삭제하고, 작업자를 종료하여 메모리 부담과 탭에 있는 민감한 문서 자료의 수명을 모두 줄입니다. 먼저 다운로드하고 저장된 파일을 확인한 다음 삭제하세요. 로컬 처리는 너무 일찍 폐기된 결과에 대해 의도적으로 원격 폴백을 제공하지 않습니다.