Forms Data Format(FDF)

Forms Data Format(FDF)

PDF 문서 안의 폼(form)을 프로그램으로 채워야 하는 상황이 있어요. 이것을 가능하게 해 주는 형태가 바로 FDF(Forms Data Format)예요. PHP의 fdf 함수로 FDF 문서를 만들고 값을 채워 넣을 수 있어요.

출처: Forms Data Format

본문

FDF(Forms Data Format)는 PDF 문서 안에서 폼을 다루기 위한 형식이에요. FDF가 무엇이고 일반적으로 어떻게 쓰이는지에 대한 더 자세한 설명은 » http://www.adobe.com/devnet/acrobat/fdftoolkit.html 의 문서를 참고하세요.

FDF의 기본 개념은 HTML 폼과 비슷해요. 차이점은, 제출(submit) 버튼을 눌렀을 때 서버로 데이터가 전달되는 형식(이것이 바로 Form Data Format, FDF)과, 폼 자체의 형식(이것은 Portable Document Format, PDF)이 다르다는 점이에요. FDF 데이터를 처리하는 것은 fdf 함수가 제공하는 기능 중 하나예요. 여기서 끝이 아니에요. 기존 PDF 폼을 수정하지 않고 입력 필드에 데이터를 채워 넣을 수도 있어요. 이런 경우 FDF 문서를 만들고(fdf_create()) 각 입력 필드의 값을 설정한 다음(fdf_set_value()), 그것을 PDF 폼과 연결해요(fdf_set_file()). 마지막으로 application/vnd.fdf MimeType으로 브라우저에 보내면 돼요. 브라우저의 Acrobat reader 플러그인이 이 MimeType을 인식해 관련 PDF 폼을 읽고, FDF 문서의 데이터로 필드를 채워요.

FDF 문서를 텍스트 편집기로 열어 보면 FDF라는 이름의 카탈로그 객체를 발견할 수 있어요. 이런 객체는 Fields, F, Status 등의 여러 항목을 담을 수 있어요. 가장 흔히 쓰이는 항목은 입력 필드 목록을 가리키는 Fields와, 이 데이터가 속한 PDF 문서의 파일명을 담는 F예요. FDF 문서에서는 이 항목들을 /F-Key 또는 /Status-Key라고 부르기도 해요. 이 항목들을 수정하는 작업은 fdf_set_file(), fdf_set_status() 같은 함수로 해요. 필드는 fdf_set_value(), fdf_set_opt() 등으로 수정해요.

FDF 함수들

  • fdf_add_doc_javascript — FDF 문서에 자바스크립트 코드 추가
  • fdf_add_template — FDF 문서에 템플릿 추가
  • fdf_close — FDF 문서 닫기
  • fdf_create — 새 FDF 문서 생성
  • fdf_enum_values — 각 문서 값에 대해 사용자 정의 함수 호출
  • fdf_errno — 마지막 fdf 작업의 오류 코드 반환
  • fdf_error — FDF 오류 코드에 대한 오류 설명 반환
  • fdf_get_ap — 필드의 외형(appearance) 가져오기
  • fdf_get_attachment — FDF에 포함된 업로드 파일 추출
  • fdf_get_encoding — /Encoding 키의 값 가져오기
  • fdf_get_file — /F 키의 값 가져오기
  • fdf_get_flags — 필드의 플래그 가져오기
  • fdf_get_opt — 필드의 opt 배열에서 값 가져오기
  • fdf_get_status — /STATUS 키의 값 가져오기
  • fdf_get_value — 필드의 값 가져오기
  • fdf_get_version — FDF API 또는 파일의 버전 번호 가져오기
  • fdf_header — FDF 전용 출력 헤더 설정
  • fdf_next_field_name — 다음 필드 이름 가져오기
  • fdf_open — FDF 문서 열기
  • fdf_open_string — 문자열에서 FDF 문서 읽기
  • fdf_remove_item — 폼의 대상 프레임 설정
  • fdf_save — FDF 문서 저장
  • fdf_save_string — FDF 문서를 문자열로 반환
  • fdf_set_ap — 필드의 외형 설정
  • fdf_set_encoding — FDF 문자 인코딩 설정
  • fdf_set_file — FDF 데이터를 표시할 PDF 문서 설정
  • fdf_set_flags — 필드의 플래그 설정
  • fdf_set_javascript_action — 필드의 자바스크립트 동작 설정
  • fdf_set_on_import_javascript — Acrobat이 FDF를 열 때 실행할 자바스크립트 코드 추가
  • fdf_set_opt — 필드의 옵션 설정
  • fdf_set_status — /STATUS 키의 값 설정
  • fdf_set_submit_form_action — 필드의 폼 제출 동작 설정
  • fdf_set_target_frame — 폼 표시용 대상 프레임 설정
  • fdf_set_value — 필드의 값 설정
  • fdf_set_version — FDF 파일의 버전 번호 설정

더 알아보기

  • FDF는 브라우저 플러그인과 함께 동작한다는 점을 기억해야 해요. 서버에서는 FDF 문서를 만들어 내려주고, 채워 넣기는 클라이언트의 Acrobat reader가 담당해요.