PDF Filler는 기존 PDF 기반 양식의 완성을 지원하고 웹 개발자가 브라우저 기반 양식과 최신 웹 표준을 사용하여 정보 수집을 용이하게 하는 RESTful 서비스(API)입니다.
PDF Filler는 사실상 모든 암호화되지 않은 PDF와 작동하며, 채울 수 있는(예: 사전 정의된 입력 필드가 있는 PDF) 양식과 채울 수 없는(예: 스캔한 PDF) 양식을 모두 지원합니다. 공개적으로 호스팅되는 PDF의 URL을 전달하기만 하면 됩니다. PDF Filler는 기존 웹 페이지에 HTML 양식을 삽입하는 데 필요한 마크업을 자동으로 생성할 수도 있습니다.
이 프로젝트는 pdftk와 새우의 양식 작성 논리를 추상화합니다.
PDF 필러는 필드 이름과 값의 키 => 값 쌍을 허용하여 작동합니다. 이러한 필드는 채울 수 있는 PDF 양식 필드이거나 채울 수 없는 필드의 임의의 x/y 좌표일 수 있습니다. 채울 수 있는 PDF의 경우 키는 필드 이름을 나타내야 합니다. 채울 수 없는 PDF에서 키는 아래 설명된 대로 필드 좌표를 나타내야 합니다(예: 100,100
). 두 경우 모두 필드 값에는 해당 필드에 대한 사용자 입력이 포함되어야 합니다.
필드 이름은 오픈 소스 PDF 유틸리티 pdftk를 사용하여 로컬로 검색하거나 서비스를 사용하여 동적으로 검색할 수 있습니다.
특정 PDF 내의 모든 필드 목록을 얻으려면
/fields?pdf={URL to the PDF}
특정 PDF 내의 모든 필드에 대한 JSON 표현을 얻으려면
/fields.json?pdf={URL to the PDF}
PDF를 작성하려면 /fill
에 POST
요청을 발행하세요. POST 데이터는 key => value 형식이어야 합니다. 여기서 key는 필드 이름을 나타내고 value는 필드 값을 나타냅니다. 채울 PDF의 URL과 함께 "pdf" 키를 전달해야 합니다. 이 서비스는 채워진 PDF를 다운로드로 반환합니다.
참고: HTML이 양식을 처리하는 방식으로 인해 대괄호와 같은 특정 특수 문자는 서비스에 제대로 게시되지 않습니다. PDF 필드에 예약된 문자가 포함된 경우 게시하기 전에 필드 이름을 urlencode하면 됩니다.
채울 수 있는 PDF 양식의 일반 HTML 표현을 얻으려면
/form?pdf={URL To PDF}
채울 수 없는 PDF(예: 구조화된 양식이 없는 스캔 또는 기타 PDF)에는 X, Y 좌표 및 (선택적으로) 페이지 번호를 전달해야 합니다. 이 데이터는 필드에 대해 x,y,page
(또는 간단히 x,y
) 명명 규칙을 사용하여 전달됩니다. 여기서 X와 Y는 문서 왼쪽 하단 모서리의 포인터 좌표를 나타냅니다. 페이지가 지정되지 않으면 첫 번째 페이지로 간주됩니다.
데이터는 프로그래밍 방식(예: API를 통해)으로 제출하거나 표준 웹 기반 양식으로 제출할 수 있습니다. 예를 들어 HTML 양식을 구성하려면 다음과 같이 할 수 있습니다.
< form method =" post " action =" /fill " >
<!-- A standard, fillable field, simply pass the field name -->
< label > First Name: < input type =" text " name =" first_name " /> < label >
<!-- A non-fillable field for which we pass coordinates -->
< label > Last Name: < input type =" text " name =" 100,100,1 " /> < label >
< input type =" submit " value =" Submit " />
</ form >
$ curl -L https://get.rvm.io | bash -s stable --ruby
).gem install bundler
).git clone [email protected]:GSA-OCSIT/pdf-filler.git
및 cd
대상 디렉터리에 넣습니다(대부분 pdf-filler
).bundle install
실행하려면 프로젝트 디렉터리에서 ruby app.rb
명령을 실행하면 됩니다. 서비스는 기본적으로 포트 4567
에 노출됩니다.
PDF Filler를 웹 서비스로 자유롭게 사용할 수 있습니다. 그러나 소스 코드를 가져와 로컬로 호스팅하려는 경우 실제로는 매우 쉽습니다.
PDF Filler는 pdftk를 사용하여 작업 양식 작성을 처리합니다. pdftk는 대부분의 시스템에 무료로 다운로드하여 설치할 수 있습니다. /usr/local/bin/pdftk
이외의 위치에 설치한 경우 환경 변수 PATH_TO_PDFTK
적절한 경로로 설정하여 구성을 업데이트해야 합니다.
PDF Filler는 Ruby로 작성되었으며 Sinatra를 사용하여 RESTful API를 생성합니다.
PDF Filler는 서버에 백엔드 서비스로 배포하기 쉽습니다. 배포 및 설정 방법의 예는 http://www.kalzumeus.com/2010/01/15/deploying-sinatra-on-ubuntu-in-which-i-employ-a-secretary/의 지침을 따르십시오. 앱을 컴퓨터의 백엔드 서비스로 설정하세요. 이 목적을 위해 앱의 일부인 daemon.rb라는 파일이 있습니다.
이 앱은 heroku와 같은 호스팅 서비스에서 호스팅되도록 설계되었습니다. Heroku를 사용하는 경우 "Bamboo" 빌드(pdftk로 컴파일되어 제공됨)를 선택하고 PATH_TO_PDFTK
에 대한 환경 구성을 /usr/bin/pdftk
로 설정하십시오.
누구나 끌어오기 요청을 포크하고 제출하여 프로젝트에 기여하도록 권장됩니다. (GitHub을 처음 사용하는 경우 기본 튜토리얼부터 시작할 수 있습니다.)
이 프로젝트에 기여함으로써 귀하는 MIT 라이선스 조건에 따라 전 세계적이고 로열티가 없으며 영구적이고 취소할 수 없으며 비독점적이고 양도 가능한 라이선스를 모든 사용자에게 부여하게 됩니다.
이 프로젝트는 17 USC 105에 따라 미국 정부 작업으로 구성되며 MIT 라이센스 조건에 따라 배포됩니다.