콘텐츠로 이동
getnextpdf.com

Pro 에디션

양식

NextPDF Pro는 대화형 양식 데이터를 읽고 씁니다. AcroForm 필드 값, XFDF 데이터 파일, 그리고 XFA(XML Forms Architecture) 템플릿이 담는 데이터입니다. 오픈 소스 Core 양식 리더를 데이터 바인딩, 추출, 직렬화로 보완합니다.

이 기능은 NextPDF Pro(nextpdf/pro)에서 제공되며 Pro 등급 라이선스 봉투로 활성화됩니다. 해당 엔타이틀먼트가 없는 배포는 이 기능의 클래스를 로드하지 않습니다. 에디션 비교 및 라이선스 받기.

양식은 Pro 에디션의 일부입니다. 기능별 별도의 라이선스 플래그는 없습니다.

Terminal window
composer require nextpdf/pro:^3

양식 기능에는 유효한 NextPDF Pro 라이선스가 필요합니다. 제공 여부 및 라이선스를 참조하십시오.

PDF 대화형 양식 — 때로 AcroForm이라고 불립니다 —은 ISO 32000-2 §12.7에 정의된 대로 각 필드를 필드 딕셔너리에 저장합니다. NextPDF Pro는 Core 양식 리더 위에 세 가지 기능을 더합니다.

  • AcroForm 라운드트립. FormDataExtractor는 파싱된 양식 필드에서 필드 이름/값 쌍을 읽어 XfdfData 객체 또는 일반 name → value 맵을 생성합니다. XfdfWriter는 그 반대를 수행하여 XFDF 문서를 생성합니다.
  • XFDF 읽기 및 쓰기. XFDF는 ISO 19444-1:2019이 설명하는 양식 값용 XML 데이터 교환 형식입니다. XfdfParser는 XFDF 파일을 구조화된 데이터로 읽습니다. XfdfWriter는 필드 값을 XFDF로 직렬화하며, 소스 PDF로 되돌아가는 선택적 참조를 포함합니다.
  • XFA 데이터 추출. XfaParser는 문서에서 XFA 패킷을 찾고, XML 조각을 연결하며, 템플릿 및 데이터셋 패킷을 구조화된 필드 데이터로 파싱합니다.

NextPDF Pro의 XFA 지원은 데이터 지향적이며, 완전한 XFA 렌더링 또는 스크립팅 엔진이 아닙니다. 파서는 템플릿 및 데이터셋 패킷을 추출하고 구조화하여 필드 정의와 값을 읽을 수 있게 합니다. XFA 양식 계산 스크립트를 실행하거나, 동적 XFA 레이아웃을 렌더링하거나, 모든 XFA 패킷 유형을 라운드트립하지는 않습니다. 특정 XFA 양식 집합에 의존하기 전에 해당 문서로 파서를 테스트하십시오. 모든 XML 파싱은 외부 엔티티 로딩을 비활성화합니다(XXE 안전).

XFA 지원은 의도적으로 렌더링이 아닌 데이터로 범위를 한정합니다. ISO 32000-2는 양식 딕셔너리의 XFA 엔트리를 PDF 2.0에서 지원 중단으로 표시합니다(§12.7). 완전한 XFA 레이아웃 및 스크립팅 엔진은 대부분의 워크로드가 더 이상 필요로 하지 않는 레거시 표면을 좇게 됩니다. 대신 NextPDF Pro는 지속적인 필드 데이터가 있는 템플릿 및 데이터셋 패킷을 추출하고 나머지는 다루지 않습니다. 양식 입력은 흔히 신뢰할 수 없는 당사자로부터 도착하므로, 같은 태도가 XXE 비활성화 파싱과 스캔 상한을 이끕니다. 이는 Pro 양식 표면을 Core AcroForm 모델의 얇고 예측 가능한 확장으로 유지합니다.

설계 배경: 채울 수 있는 양식에서 고정된 레코드로: AcroForm 채우기와 평탄화.

클래스책임
FormDataExtractorAcroForm 필드 값을 XfdfData 또는 배열로 추출합니다.
XfdfParserXFDF 문서를 구조화된 데이터로 파싱합니다.
XfdfWriter필드 값을 XFDF로 직렬화하며, 선택적 PDF 참조를 포함합니다.
XfaParserXFA 템플릿 및 데이터셋 패킷을 추출하고 파싱합니다.
FormDataBinder데이터 맵을 양식 필드에 다시 바인딩합니다.

전체 메서드 수준 참조는 양식 심층 참조에 있습니다.

use NextPDF\Pro\Form\FormDataExtractor;
use NextPDF\Pro\Form\XfdfWriter;
$values = FormDataExtractor::toArray($fields);
$xfdf = XfdfWriter::fromFields($fields, 'invoice.pdf');
use NextPDF\Pro\Form\XfaParser;
use NextPDF\Pro\Form\Exception\XfaParseException;
try {
$formData = (new XfaParser())->parse($pdfBytes);
$logger->info('xfa.parsed', ['fields' => count($formData->fields)]);
} catch (XfaParseException $e) {
$logger->warning('xfa.parse_failed', ['reason' => $e->getMessage()]);
}
  • XfaParser는 무한 데이터를 읽는 대신 스캔 상한보다 큰 PDF 입력을 거부합니다.
  • 문서는 대화형 양식과 비대화형 양식을 모두 담을 수 있습니다. 추출은 단말 필드 딕셔너리를 대상으로 합니다.
  • XFDF는 평면 필드 구조를 라운드트립합니다. 깊게 중첩된 필드 계층은 명시적 처리가 필요할 수 있습니다.

추출과 직렬화는 양식 필드 수에 선형적입니다. XFA 파싱 비용은 임베드된 XML 패킷 크기에 따라 확장됩니다.

모든 XML 파싱은 XXE를 방지하기 위해 외부 엔티티 해석을 비활성화합니다. 신뢰할 수 없는 출처의 XFDF 및 XFA 입력은 적대적인 것으로 취급하고, 문서에 다시 바인딩하기 전에 파싱된 필드 집합을 검증하십시오.

동작참조상태
대화형 양식 / 필드 딕셔너리 모델ISO 32000-2 §12.7부합 (의역됨)
XFDF 데이터 교환 형식ISO 19444-1:2019부합

이 표는 NextPDF Pro가 구축 대상으로 삼는 사양을 기록합니다. 정식 인증에 대한 진술이 아닙니다.

  • FormDataExtractor는 파싱된 단말 필드 딕셔너리에서 이름/값 쌍을 읽어 XfdfData 객체 또는 일반 name → value 배열을 반환합니다.
  • XfdfParser는 XFDF 문서를 구조화된 데이터로 파싱합니다. XfdfWriter는 소스 PDF로 되돌아가는 선택적 참조와 함께 필드 값을 XFDF로 직렬화합니다.
  • XfaParser는 XFA 패킷을 찾고, XML 조각을 연결하며, 템플릿 및 데이터셋 패킷을 구조화된 필드 데이터로 파싱합니다. 무한 데이터를 읽는 대신 스캔 상한보다 큰 PDF 입력을 거부합니다.
  • XFA 지원은 데이터 지향적입니다. 파서는 템플릿 및 데이터셋 패킷을 추출하고 구조화합니다. XFA 양식 계산 스크립트를 실행하거나, 동적 XFA 레이아웃을 렌더링하거나, 모든 XFA 패킷 유형을 라운드트립하지 않습니다.
  • 모든 XML 파싱은 외부 엔티티 해석을 비활성화합니다(XXE 안전).

Enterprise는 양식 동작을 변경하지 않습니다. Enterprise는 별도로 문서화된 상위 등급 규정 준수 및 보관 기능을 더합니다. 그것들은 AcroForm 라운드트립, XFDF 읽기/쓰기, 또는 XFA 데이터 추출에 필요하지 않습니다.

NextPDF Core의 오픈 소스 양식 리더는 양식 필드를 읽습니다. XFDF 읽기/쓰기, XFA 데이터 추출, 필드 바인딩은 Pro 추가 기능입니다. /modules/form/를 참조하십시오.

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