콘텐츠로 이동
getnextpdf.com

Enterprise 에디션

Document E-Filing — 심층 참조

  • EFilingOptimizer는 하나의 고정 순서 패스로 전자 법원 신고용 PDF를 준비합니다: 정제, 선형화, 크기 분할.
  • EFilingProfile은 관할권 제약을 인코딩합니다. 내장 팩토리는 US PACER, EU e-Justice, Taiwan Judicial Yuan을 지원합니다.
  • SizeAwareSplitter는 검증 후 보정 재분할 방식으로 세그먼트당 바이트 상한을 강제합니다.
  • 출력은 전달 아티팩트입니다. 서명 또는 보관 파이프라인에 다시 진입해서는 안 됩니다.
  • 이 모듈은 어떠한 암호화 연산도 수행하지 않으며 아웃바운드 네트워크 호출을 하지 않습니다.

이 기능은 NextPDF Enterprise(nextpdf/enterprise)에 포함되며 Enterprise 등급 라이선스 봉투로 활성화됩니다. 해당 사용 권한이 없는 배포는 이 기능의 클래스를 로드하지 않습니다. 에디션 비교 및 라이선스 받기.

nextpdf/enterprise 패키지 경계가 이 표면을 게이트하며, 별도의 기능별 기능 코드는 없습니다. Core나 Pro 에디션은 전자 신고 최적화기를 제공하지 않습니다.

Terminal window
composer require nextpdf/enterprise:^3
심볼매개변수기본 동작반환던지거나 실패하는 경우비고
EFilingOptimizer::optimize()string $pdfData, ?EFilingProfile $profile = null프로필은 기본적으로 EFilingProfile::pacer()이며, 정제·선형화·크기 분할을 고정 순서로 실행EFilingResult초과 크기 입력이 유효한 PDF가 아닐 때 분할 단계에서 InvalidArgumentException; 정제 및 선형화 실패는 경고로 완화됨출력은 전달 아티팩트
EFilingProfile::__construct()$name, $maxFileSizeBytes = 26_214_400, $flattenForms = true, $removeJavaScript = true, $imageQuality = 75, $linearize = true, $compressObjectStreams = true불변 관할권 프로필EFilingProfile던지지 않음내장 팩토리가 없는 포털을 위한 사용자 정의 상한
EFilingProfile::pacer()없음25 MiB 상한, 이미지 품질 75EFilingProfile던지지 않음US PACER
EFilingProfile::euJustice()없음10 MiB 상한, 이미지 품질 70EFilingProfile던지지 않음EU e-Justice Portal
EFilingProfile::taiwan()없음10 MiB 상한, 이미지 품질 70EFilingProfile던지지 않음Taiwan Judicial Yuan
SizeAwareSplitter::splitByMaxSize()string $pdfData, int $maxBytes입력이 들어맞으면 단일 세그먼트; 그렇지 않으면 추정, 검증, 재분할list<EFilingSegment>초과 크기 입력에 %PDF 헤더가 없을 때 InvalidArgumentException한도 미만 입력은 검증 없이 하나의 세그먼트로 반환됨
EFilingResult::isSplit()없음세그먼트가 하나보다 많으면 truebool던지지 않음
EFilingResult::segmentCount()없음세그먼트 총 개수int던지지 않음
EFilingResult::compressionRatio()없음optimizedTotalSize / originalSizefloat던지지 않음; 빈 원본 입력에 대해 0.0낮을수록 좋음
EFilingSegment$pdfData, $pageRange, $sizeBytes, $segmentIndex불변 출력 세그먼트value object던지지 않음1-25all 같은 페이지 범위 문자열
public function optimize(string $pdfData, ?EFilingProfile $profile = null): EFilingResult
public function __construct(
public string $name,
public int $maxFileSizeBytes = 26_214_400,
public bool $flattenForms = true,
public bool $removeJavaScript = true,
public int $imageQuality = 75,
public bool $linearize = true,
public bool $compressObjectStreams = true,
) {}
public static function pacer(): self
public static function euJustice(): self
public static function taiwan(): self
public function splitByMaxSize(string $pdfData, int $maxBytes): array
public function __construct(
public array $segments,
public int $originalSize,
public int $optimizedTotalSize,
public array $optimizations = [],
public array $warnings = [],
) {}
public function isSplit(): bool
public function segmentCount(): int
public function compressionRatio(): float

EFilingOptimizer::optimize()는 입력 바이트에 대해 고정 순서 파이프라인을 실행합니다. 첫 단계는 removeJavaScript가 설정되면 활성 콘텐츠를 제거합니다. 이 단계는 신고 전용 정책으로 콘텐츠 무장 해제 및 재구성(CDR) 엔진에 위임합니다: JavaScript, 명명된 JavaScript, launch 액션, 양식 제출, 데이터 가져오기 액션은 제거되고, URI 액션은 신고서에 적법한 링크가 포함될 수 있으므로 유지되며(allowUriActions), 증분 업데이트는 하나의 리비전으로 평탄화됩니다(flattenIncrementalUpdates). 두 번째 단계는 linearize가 설정되면 Core NextPDF\Writer\Linearizer를 통해 정제된 바이트를 선형화합니다. 세 번째 단계는 SizeAwareSplitter를 통해 프로필의 maxFileSizeBytes를 강제합니다.

분할기는 평균 페이지 크기로부터 세그먼트당 페이지 수를 추정하여 분할한 다음, 생성된 모든 세그먼트를 상한과 대조하여 검증합니다. 여전히 한 페이지를 초과하는 초과 크기 세그먼트는 각 패스마다 자신의 페이지 범위를 반으로 줄이며, 모든 자식이 들어맞거나 단일 페이지가 될 때까지 재귀적으로 재분할됩니다. 유계 재분할 깊이가 병적인 비수렴을 방지합니다. 출력 인덱스는 연속적이고 0 기반을 유지하도록 재정규화됩니다.

optimize()는 세 개의 프로필 필드를 사용합니다: maxFileSizeBytes, removeJavaScript, linearize. flattenForms, imageQuality, compressObjectStreams 필드는 선언된 프로필 제약이지만 3.1.0에서 optimize()가 작동시키지 않습니다.

전자 신고 출력은 문서 수명 주기 상태가 아니라 전달 아티팩트입니다. 최적화 또는 분할된 PDF는 전송용 최종본이며 서명 또는 보관 파이프라인에 다시 진입해서는 안 됩니다. 재처리는 해시 체인과 증거적 무결성을 손상시킵니다.

이 모듈은 구성된 대로 전자 법원 / 정부 신고용 형식을 준비합니다. 어떤 법원, 등록소, 심판소, 신고 포털의 수용도 보장하지 않습니다. 내장 프로필 상한은 편의를 위해 일반적으로 공표된 제약을 인코딩한 것이며, 각 포털의 실시간 피드가 아닙니다. 포털 규칙은 관할권에 따라 다르고 변경됩니다. 이를 대상 등록소의 현행 규칙에 대조하여 확인하는 것은 신고자의 책임입니다.

처리는 인프로세스이며 로컬에서 이루어집니다. 법원, 등록소, 신고 포털로의 전송은 이 모듈의 외부입니다.

  • 상한 이하 또는 동일한 입력: 페이지 범위 all인 하나의 세그먼트; 분할 단계는 바이트를 변경하지 않고 둡니다.
  • 정제 거부(예: 파싱할 수 없는 입력): 경고 CDR sanitization rejected: <reason>가 기록되고 파이프라인은 원본 바이트로 계속됩니다.
  • 위협이 발견되지 않은 정제 패스: 바이트는 여전히 재구성된 PDF로 교체되며, 클린 패스를 기록하는 최적화 항목이 남습니다.
  • 선형화 실패: 경고 Linearization skipped: <message>가 기록되고 파이프라인은 선형화되지 않은 바이트로 계속됩니다.
  • 상한을 초과하는 단일 페이지: 진정으로 분할 불가능하며, 변경 없이 하나의 초과 크기 세그먼트로 반환됩니다. 이 경우에는 경고가 기록되지 않습니다; 신고 전에 각 세그먼트의 sizeBytes를 프로필 상한과 대조하십시오.
  • 재분할 깊이 상한 도달: 초과 크기 세그먼트는 반복하지 않고 변경 없이 통과합니다.
  • compressionRatio()는 원본 입력이 비어 있을 때 0.0을 반환합니다.
  • 이 모듈은 어떠한 암호화 연산도 수행하지 않으며, FIPS 모드는 적용되지 않습니다.
동작참조상태
선형화된 출력 구성(첫 페이지 데이터가 파일 시작에 위치)ISO 32000-2:2020 Annex F / Annex G부합 대상
연관 파일 관계 시맨틱ISO 19005-3:2012 §6.7.8캐리어가 적용되는 곳에서 준수
임베디드 파일 캐리어 요구 사항ISO 19005-4:2020 Annex A캐리어가 적용되는 곳에서 준수

선형화는 Linearized PDF 구성을 목표로 하며, 이는 효율적인 증분 접근을 위해 첫 페이지 표시에 필요한 모든 데이터를 파일 시작 부분에 배치합니다.

이 행들은 인용된 조항에 대해 부합하도록 구축된 기능을 설명합니다. 부합은 적합성이 아니며, 적합성은 인증이 아닙니다; NextPDF는 어떠한 인증도 보유하지 않습니다. 이 페이지의 어떤 진술도 신고 포털의 수용을 보장하지 않습니다.

이 페이지는 export_control_class: legal-review-required를 담고 있습니다. NextPDF는 법률 자문을 제공하지 않습니다. 신고 규칙은 관할권에 따라 다르고 변경됩니다; 이를 충족하는 것은 신고자의 책임입니다. 변호사와 대상 등록소의 현행 안내를 참고하십시오.

use NextPDF\Enterprise\Document\EFiling\EFilingOptimizer;
use NextPDF\Enterprise\Document\EFiling\EFilingProfile;
$optimizer = new EFilingOptimizer();
$result = $optimizer->optimize($pdfBytes, EFilingProfile::euJustice());
foreach ($result->segments as $segment) {
// Persist $segment->pdfData; confirm $segment->sizeBytes fits the cap.
}
  • 신고 전에 $result->warnings를 검사하십시오. 거부된 정제나 건너뛴 선형화는 예외가 아니라 여기에 나타납니다.
  • 원본 문서를 먼저 서명하고 보관한 다음, 전달용 사본을 최적화하십시오. 최적화된 세그먼트를 다시 서명, 다시 스탬프, 또는 보관하지 마십시오.
  • 모든 세그먼트의 sizeBytes를 프로필 상한과 대조하여 검증하십시오. 분할 불가능한 초과 크기 페이지는 조용히 출력에 도달합니다.
  • 내장 팩토리가 없는 포털의 경우, 포털이 공표한 상한으로 사용자 정의 EFilingProfile을 구성하십시오.

이 페이지는 외부에서 관찰 가능한 동작과 지원되는 공개 API 표면만을 문서화합니다. 내부 네임스페이스 경로, 헬퍼 클래스, 메커니즘 테이블, 런북 파일명, 티켓 접두사는 범위 밖입니다.