2P by GN⁺ | ★ favorite | 댓글 1개
  • Stirling PDF는 문서를 외부 서비스로 보내지 않고 PDF 편집·서명·가림·변환·자동화를 수행할 수 있는 오픈소스 PDF 편집 플랫폼임
  • 개인 데스크톱 앱, 브라우저 UI, 자체 서버 배포와 private API를 지원해 작업 환경에 맞게 실행할 수 있음
  • 50개 이상의 PDF 도구를 제공하며, 병합·분할·OCR·압축 같은 기능과 UI 기반 노코드 파이프라인 및 API 자동화를 포함함
  • 엔터프라이즈 용도로 SSO, 감사, 온프레미스 배포를 제공하며, 대부분의 도구에 REST API가 있어 기존 시스템과 통합 가능함
  • 빠른 시작은 Docker로 docker run -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf를 실행한 뒤 ` 여는 방식임

Stirling PDF가 제공하는 것

  • Stirling PDF는 오픈소스 PDF 편집 플랫폼으로, 개인 데스크톱 앱·브라우저 UI·자체 호스팅 서버에서 실행할 수 있음
  • 자체 서버 배포 시 private API를 사용할 수 있으며, 문서를 외부 서비스로 보내지 않고 PDF 작업을 처리할 수 있음
  • 주요 작업은 편집, 서명, 가림 처리, 변환, 자동화임

주요 기능 범위

  • 50개 이상 PDF 도구를 제공함
    • 편집
    • 병합
    • 분할
    • 서명
    • 가림 처리
    • 변환
    • OCR
    • 압축
  • 자동화와 워크플로를 지원함
    • UI에서 노코드 파이프라인을 만들 수 있음
    • API로 수백만 개 PDF를 처리할 수 있음
  • 개발자 플랫폼 성격도 포함함
    • 거의 모든 도구에 REST API가 제공됨
    • 기존 시스템에 통합할 수 있음
  • UI는 40개 이상 언어로 제공됨
  • 전체 기능 목록은 Documentation에서 확인할 수 있음

배포와 실행 방식

  • 지원 실행 환경은 데스크톱 클라이언트, 브라우저 UI, 자체 호스팅 서버임
  • 빠른 시작은 Docker 명령으로 가능함
docker run -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf

엔터프라이즈와 운영 기능

  • 엔터프라이즈급 기능으로 SSO, 감사, 유연한 온프레미스 배포를 제공함
  • Server Plan과 Enterprise 관련 정보는 Server Plan & Enterprise에 있음

개발·기여·지원

  • 주요 리소스
  • 지원 채널
  • 기여 가이드는 CONTRIBUTING.md를 따름
  • 빌드·개발·테스트 명령은 Task를 통합 명령 실행기로 사용함
    • task dev로 에디터 실행을 시작함
    • task로 자주 쓰는 명령을 확인함
    • 전체 내용은 DeveloperGuide.md에 있음
  • 번역 추가는 devGuide/HowToAddNewLanguage.md를 참고함
  • 라이선스는 open-core이며 세부 사항은 LICENSE에 있음

댓글과 토론

Hacker News 의견들
  • PDF 생태계에서 정말 부족한 건 서명 관련 오픈소스 도구라고 봄
    PDF 서명은 eIDAS 같은 규제 때문에 세계 여러 지역에서 법적으로 중요하지만, Adobe나 수상한 독점 도구 말고는 PDF 문서에 암호학적으로 서명하기가 너무 어렵다. LibreOffice나 poppler로 서명하는 법을 알아내도, 큰돈을 쓰지 않고 검증되는 인증서를 얻기가 힘듦
    누군가 PDF와 S/MIME 인증서의 Let's Encrypt 같은 역할을 해주면 공적 신뢰가 크게 좋아질 것 같음

    • 검증되는 인증서가 필요하다고 하지만, macOS Preview에서 서명 이미지 붙여넣기만 해도 의외로 꽤 멀리 갈 수 있음
    • 완전히 동의함. eIDAS 용어로 TRA이자 QTSP인 회사에서 관련된 것을 만들고 있음
      PDF와 디지털 서명, PDF 서명까지 다루는 훌륭한 오픈소스 라이브러리: https://github.com/MatthiasValvekens/pyHanko
      European Commission의 DSS Tool도 유용함. PDF 하나만 제출하면 되고, 원본과 서명본을 둘 다 넣을 필요는 없음: https://ec.europa.eu/digital-building-blocks/DSS/webapp-demo...
      회사는 https://www.zealid.com/en/이고, https://my.zealid.com/en에서 무료로 원격 온보딩 후 적격 인증서를 내려받아 업로드, QES 서명, PDF 다운로드까지 무료로 할 수 있음. API 연동도 가능함
    • 정말 맞는 말임. Windows Server에 능한 사내 IT 담당자에게 내부 문서 서명을 위한 기본 PKI 구현이 얼마나 걸릴지 물어봤더니, 머리가 둘 달린 사람을 보는 듯한 표정이었음
    • macOS Preview로는 이 요구를 충족하지 못하나?
  • 이걸 집에서 호스팅하고 있음. 직접 쓰지는 않고, 기반이 되는 Linux CLI 도구를 쓰면 됨
    다만 아내가 PDF 변환이나 분할을 아무 웹사이트나 앱에 올려서 하지 않고, 이걸로 처리하는 편이 더 낫다고 봄. 어차피 그런 사이트들도 같은 명령줄 도구를 쓰는 경우가 많음
    아내도 어느 쪽이든 크게 신경 쓰지 않고, 사용 사례에는 충분히 잘 맞는 듯함

    • 기반이 되는 Linux CLI 도구 부분이 궁금함. 찾아본 건 이쪽임: https://pdfbox.apache.org/2.0/commandline.html
      PDFBox는 Java 애플리케이션이라 Linux뿐 아니라 크로스플랫폼으로 동작해야 함. 다른 걸 말한 거라면 알려주면 좋겠음
    • 그냥 영구 라이선스 PDF 도구를 70달러에 사는 게 나음. 정말 돈값을 함. 휴대용 exe 버전도 같이 구하면 좋음
  • README에 “Stirling PDF는 기록 보관이나 추적 목적으로 외부 호출을 시작하지 않는다”고 되어 있는데, 그럼 결론이 난 셈인가 봄

    • 제작자임. 문서에 약간 혼동이 있는 것 같음. 완전히 ChatGPT로 만든 건 아님
      처음에는 작년에 ChatGPT 3.0이 어떤지 시험하려고, 제한 시간 안에 ChatGPT로 전체 앱을 만드는 24시간 챌린지로 시작했음
      Reddit에 올렸더니 수요가 많아서 전체 앱으로 발전시켰고, 완전히 ChatGPT만 쓴 건 첫 24시간뿐임. 지금은 1년 넘게 지난 상태임
    • 그 문장이 무슨 의미인지 궁금함. HN에 잡히려고 넣은 건가? 데이터와 조금이라도 관련 있는 제품이나 서비스가 갑자기 랜딩 페이지 어딘가에 “그런데 AI도 함”을 붙이는 것과 비슷해 보임
      README에 “IntelliSense를 사용해 개발됨”이라고 쓰지는 않잖음
    • 내게는 두 가지 의미임. 공개 인터넷에 노출하지 말 것, 그리고 신뢰할 수 없는 입력을 넣지 말 것
      그래서 내 기준에서는 유용성이 크게 줄어듦
    • 놀랍다. 정말 대단한 시대에 살고 있음
    • 그럼 이걸 신뢰해도 되는 건가?
  • 이 기능이 Paperless에 통합되면 좋겠음. 가끔 스캔한 문서가 거꾸로 들어가서 다시 스캔해야 함
    회전 버튼을 누르고, 필요하면 순서를 바꾼 뒤 다시 처리되게 할 수 있으면 좋겠음

    • paperless-ngx의 지난 마이너 릴리스에서 병합, 분할, 회전이 추가됨
      출처: https://docs.paperless-ngx.com/changelog/#paperless-ngx-270
    • 최신 paperless-ngx는 문서 회전을 지원함. 확인해보면 됨
    • 아야. PDF 리더에서 문서를 회전한 다음 PDF로 인쇄하면 됨
  • Firefox의 비교적 최근 업데이트에 PDF 편집기가 추가됐음
    Firefox에 대한 인식이 몇 버전 전 기준에 머물러 있는 사람이 많은 것 같음. 역사 내내 매일 써온 입장에서는, Firefox가 수년 동안 꽤 많이 발전했다고 봄
    한동안 안 써봤다면 다시 한번 써볼 만함

  • README의 “Stirling PDF does not initiate any outbound calls for record-keeping or tracking purposes”라는 문장을 보고, 잠재 사용자가 코드 감사 말고 사전에 검증할 방법이 있을지 궁금함
    특히 앱이 동작하려면 일부 웹 요청은 필요하지만, 예컨대 Content-Security-Policy 같은 매니페스트에 적힌 제한된 URL 목록으로만 요청해야 하는 경우 웹 기반 앱이 이런 주장을 어떻게 뒷받침할 수 있을까?
    사용자가 민감한 콘텐츠를 “업로드”해야 하는 앱을 배포할 때 꽤 구체적인 문제임

    • 직접 호스팅한다면 Little Snitch가 도움이 될 수 있음. 직접 호스팅하지 않는다면 보장할 수 없고, 기본 입장은 “최악을 예상하라”임
      https://www.obdev.at/products/littlesnitch/index.html
      Little Snitch는 macOS 중심 도구임. 다른 것도 있겠지만 잘 알지는 못함. 이런 건 운영체제 수준 기능이어야 한다고 느낌
    • Kubernetes에서 직접 호스팅한다면, 해당 배포나 파드에 대해 deny-all egress 네트워크 정책을 설정할 수 있음. 그러면 모든 외부 네트워크 호출이 차단됨
    • 웹 앱이 동작하기 위해 외부 웹 요청을 할 필요는 없음. 웹과 상호작용하는 사용자가 요청을 시작하는 쪽임
      HTTP 프록시를 통해 앱 접근을 제공하고, 웹 앱의 외부 요청을 필터링하거나 아예 그 앱을 호스팅하는 서버의 네트워크 라우팅을 설정하지 않을 수도 있음. 그러면 남는 건 렌더링된 페이지 안에서 JavaScript가 시작하는 요청뿐임
    • 결국 사용하는 거의 모든 패키지, 라이브러리, 시스템에 있는 문제임
      오픈소스는 상당한 수준의 신뢰 위에서 돌아가고, 우리 모두 그 구조에 참여하고 있음
    • 중간에 Wireshark 같은 스니퍼나 네트워크 캡처 도구를 두면 됨. 추가로 앱의 네트워크 접근을 로컬 홈 네트워크로만 완전히 제한할 수도 있음
  • 비슷하게 설명할 수 있는 제품을 작업 중임
    CxReports: 직접 호스팅하는 웹 기반 PDF 보고서 도구
    https://www.cx-reports.com

  • 몇 달 전에 이 프로젝트를 봤을 때 바로 마음에 들었음. 설치해서 실제로 쓰기 시작했는데 버그가 많았고, 일부 도구는 사용할 수 없을 정도였음
    지금은 더 좋아졌기를 바람

  • 스캔한 텍스트 양식이 들어 있는 PDF 파일의 대비를 높이려고 이걸 써본 적이 있음. 스캔이 거의 보이지 않아서, 기본적으로 어두운 부분을 더 어둡게 만들고, 가능하면 조금 두껍게 해서 더 잘 보이게 하는 정도가 필요했음
    그렇게 사소해 보이는 작업도 도구가 제대로 도와주지 못했고, 개선 폭이 매우 작았음. 여러 번 반복해봤지만 두 번째 이후로는 시각적 차이가 더 이상 없었고, 파일 크기만 계속 바뀌었음

    • 그건 사실 PDF 자체의 문제가 아님. 그 경우 PDF는 래스터 이미지를 감싼 얇은 래퍼일 뿐임
      이미지를 추출한 뒤 GIMP나 ImageMagick으로 대비를 높이고 새 PDF를 만들면 됨. 파일이 많다면 스크립트로 처리할 수도 있음
  • 목록을 보고 있는데, PDF에서 텍스트를 추출하는 API가 있는지 찾는 중임
    혹은 벡터나 임베딩 형태로 가져올 수 있는지도 궁금함