2 điểm bởi GN⁺ 2024-05-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Stirling PDF là một nền tảng chỉnh sửa PDF mã nguồn mở cho phép chỉnh sửa, ký, che nội dung, chuyển đổi và tự động hóa PDF mà không cần gửi tài liệu ra dịch vụ bên ngoài
  • Hỗ trợ ứng dụng desktop cá nhân, giao diện trình duyệt, triển khai trên máy chủ tự host và private API, cho phép chạy theo môi trường làm việc phù hợp
  • Cung cấp hơn 50 công cụ PDF, bao gồm các chức năng như gộp, tách, OCR, nén, cùng pipeline no-code dựa trên UI và tự động hóa qua API
  • Cho mục đích enterprise, cung cấp SSO, audit, triển khai on-premise; hầu hết công cụ đều có REST API nên có thể tích hợp với hệ thống hiện có
  • Cách bắt đầu nhanh là chạy bằng Docker với docker run -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf, sau đó mở http://localhost:8080

Stirling PDF cung cấp gì

  • Stirling PDF là nền tảng chỉnh sửa PDF mã nguồn mở, có thể chạy dưới dạng ứng dụng desktop cá nhân, giao diện trình duyệt hoặc máy chủ tự host
  • Khi triển khai trên máy chủ riêng, có thể dùng private API và xử lý tác vụ PDF mà không gửi tài liệu ra dịch vụ bên ngoài
  • Các tác vụ chính gồm chỉnh sửa, ký, che nội dung, chuyển đổi và tự động hóa

Phạm vi tính năng chính

  • Cung cấp hơn 50 công cụ PDF
    • Chỉnh sửa
    • Gộp
    • Tách
    • Che nội dung
    • Chuyển đổi
    • OCR
    • Nén
  • Hỗ trợ tự động hóa và workflow
    • Có thể tạo pipeline no-code trong UI
    • Có thể xử lý hàng triệu PDF qua API
  • Cũng mang tính chất của một nền tảng dành cho nhà phát triển
    • Gần như mọi công cụ đều có REST API
    • Có thể tích hợp vào hệ thống hiện có
  • UI được cung cấp bằng hơn 40 ngôn ngữ
  • Có thể xem danh sách đầy đủ tính năng trong Documentation

Cách triển khai và chạy

  • Môi trường chạy được hỗ trợ gồm desktop client, giao diện trình duyệt và máy chủ tự host
  • Có thể bắt đầu nhanh bằng lệnh Docker
docker run -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf

Tính năng enterprise và vận hành

  • Cung cấp các tính năng cấp enterprise như SSO, audit và triển khai on-premise linh hoạt
  • Thông tin về Server Plan và Enterprise có trong Server Plan & Enterprise

Phát triển, đóng góp và hỗ trợ

  • Tài nguyên chính
  • Kênh hỗ trợ
  • Hướng dẫn đóng góp tuân theo CONTRIBUTING.md
  • Các lệnh build, phát triển và kiểm thử dùng Task làm trình chạy lệnh hợp nhất
    • Dùng task dev để bắt đầu chạy editor
    • Dùng task để xem các lệnh thường dùng
    • Nội dung đầy đủ nằm trong DeveloperGuide.md
  • Để thêm bản dịch, tham khảo devGuide/HowToAddNewLanguage.md
  • Giấy phép là open-core, chi tiết có trong LICENSE

1 bình luận

 
GN⁺ 2024-05-04
Ý kiến trên Hacker News
  • Thứ thật sự còn thiếu trong hệ sinh thái PDF, theo tôi, là các công cụ mã nguồn mở liên quan đến chữ ký
    Chữ ký PDF có ý nghĩa pháp lý ở nhiều khu vực trên thế giới vì các quy định như eIDAS, nhưng ngoài Adobe hoặc những công cụ độc quyền đáng ngờ, việc ký tài liệu PDF bằng mật mã học quá khó. Ngay cả khi tìm ra cách ký bằng LibreOffice hoặc poppler, việc có được một chứng thư được xác minh mà không phải chi nhiều tiền cũng rất khó
    Nếu ai đó đóng vai trò như Let's Encrypt cho PDF và chứng thư S/MIME thì niềm tin công cộng có lẽ sẽ được cải thiện rất nhiều

    • Nói là cần chứng thư được xác minh, nhưng chỉ cần dán ảnh chữ ký trong macOS Preview thôi cũng bất ngờ là đi được khá xa
    • Hoàn toàn đồng ý. Tôi đang làm một thứ liên quan tại một công ty vừa là TRA vừa là QTSP theo thuật ngữ eIDAS
      Một thư viện mã nguồn mở tuyệt vời xử lý PDF, chữ ký số và cả chữ ký PDF: https://github.com/MatthiasValvekens/pyHanko
      DSS Tool của European Commission cũng hữu ích. Chỉ cần gửi một file PDF, không cần đưa vào cả bản gốc lẫn bản đã ký: https://ec.europa.eu/digital-building-blocks/DSS/webapp-demo...
      Công ty là https://www.zealid.com/en/, và tại https://my.zealid.com/en bạn có thể onboarding từ xa miễn phí, rồi tải chứng thư đủ điều kiện lên, ký QES và tải PDF xuống, tất cả đều miễn phí. Cũng có thể tích hợp API
    • Quả thật đúng. Tôi từng hỏi nhân viên IT nội bộ rành Windows Server rằng sẽ mất bao lâu để triển khai một PKI cơ bản cho việc ký tài liệu nội bộ, và anh ấy nhìn tôi như thể đang nhìn một người có hai cái đầu
    • Preview trên macOS không đáp ứng được nhu cầu này sao?
  • Tôi đang host cái này ở nhà. Tôi không trực tiếp dùng nó, vì cứ dùng các công cụ Linux CLI nền tảng là được
    Tuy vậy, tôi thấy vợ mình dùng cái này để chuyển đổi hoặc tách PDF thì tốt hơn là tải lên bừa một website hay ứng dụng nào đó. Dù sao các trang kiểu đó nhiều khi cũng dùng cùng các công cụ dòng lệnh ấy
    Vợ tôi cũng không quá bận tâm theo cách nào, và có vẻ nó đáp ứng đủ tốt cho use case của cô ấy

    • Tôi tò mò về phần công cụ Linux CLI nền tảng. Tôi tìm được cái này: https://pdfbox.apache.org/2.0/commandline.html
      PDFBox là ứng dụng Java nên đáng ra phải chạy đa nền tảng chứ không chỉ Linux. Nếu bạn đang nói đến thứ khác thì mong bạn cho biết
    • Cứ mua một công cụ PDF giấy phép vĩnh viễn giá 70 đô là hơn. Thực sự đáng tiền. Nếu lấy được cả bản exe portable thì càng tốt
  • README ghi rằng “Stirling PDF không khởi tạo các cuộc gọi ra bên ngoài cho mục đích lưu trữ lịch sử hay theo dõi”, vậy chắc coi như đã có kết luận rồi

    • Tôi là tác giả. Có vẻ tài liệu hơi gây nhầm lẫn. Nó không hoàn toàn được tạo bằng ChatGPT
      Ban đầu, hồi năm ngoái tôi muốn thử xem ChatGPT 3.0 thế nào, nên bắt đầu như một thử thách 24 giờ: tạo toàn bộ ứng dụng bằng ChatGPT trong giới hạn thời gian
      Tôi đăng lên Reddit, thấy nhu cầu cao nên phát triển thành một ứng dụng đầy đủ; chỉ 24 giờ đầu tiên là dùng hoàn toàn ChatGPT. Đến nay đã hơn 1 năm rồi
    • Tôi tò mò câu đó nghĩa là gì. Viết vào để được HN chú ý à? Trông giống như mọi sản phẩm hay dịch vụ có dính dáng chút nào tới dữ liệu bỗng gắn thêm câu “mà này, cũng có AI nữa” ở đâu đó trên landing page
      Chẳng ai viết trong README rằng “được phát triển bằng IntelliSense” cả
    • Với tôi nó có hai ý nghĩa. Đừng đưa lên Internet công khai, và đừng đưa input không đáng tin cậy vào
      Vì vậy theo tiêu chuẩn của tôi thì tính hữu dụng giảm đi đáng kể
    • Thật đáng kinh ngạc. Chúng ta đúng là đang sống trong một thời đại phi thường
    • Vậy có thể tin tưởng cái này không?
  • Giá mà tính năng này được tích hợp vào Paperless thì tốt. Thỉnh thoảng tài liệu scan bị đưa vào ngược và tôi phải scan lại
    Sẽ hay nếu có thể bấm nút xoay, đổi thứ tự nếu cần, rồi cho xử lý lại

    • Bản phát hành minor gần đây của paperless-ngx đã thêm hợp nhất, tách và xoay
      Nguồn: https://docs.paperless-ngx.com/changelog/#paperless-ngx-270
    • paperless-ngx mới nhất hỗ trợ xoay tài liệu. Cứ kiểm tra thử là biết
    • Ái chà. Chỉ cần xoay tài liệu trong trình đọc PDF rồi in ra PDF là được
  • Một bản cập nhật tương đối gần đây của Firefox đã thêm trình chỉnh sửa PDF
    Có vẻ nhiều người vẫn nhìn Firefox theo các phiên bản từ vài đời trước. Với tư cách người đã dùng hằng ngày suốt từ trước đến nay, tôi thấy Firefox đã tiến bộ khá nhiều trong nhiều năm qua
    Nếu lâu rồi chưa dùng, cũng đáng để thử lại một lần

  • Khi đọc câu trong README “Stirling PDF does not initiate any outbound calls for record-keeping or tracking purposes”, tôi tự hỏi liệu người dùng tiềm năng có cách nào xác minh trước ngoài việc audit mã nguồn hay không
    Đặc biệt, để ứng dụng hoạt động thì một số request web là cần thiết, nhưng chẳng hạn nếu chỉ được phép gửi request tới danh sách URL giới hạn được ghi trong một manifest như Content-Security-Policy, thì một ứng dụng nền web có thể chứng minh tuyên bố như vậy bằng cách nào?
    Đây là một vấn đề khá cụ thể khi triển khai ứng dụng yêu cầu người dùng “upload” nội dung nhạy cảm

    • Nếu tự host, Little Snitch có thể hữu ích. Nếu không tự host thì không thể bảo đảm, và lập trường mặc định là “hãy giả định điều tệ nhất”
      https://www.obdev.at/products/littlesnitch/index.html
      Little Snitch là công cụ chủ yếu dành cho macOS. Chắc cũng có công cụ khác, nhưng tôi không rành. Tôi cảm thấy những thứ như thế này nên là tính năng ở cấp hệ điều hành
    • Nếu tự host trên Kubernetes, có thể thiết lập policy mạng deny-all egress cho deployment hoặc pod đó. Khi đó mọi cuộc gọi mạng ra bên ngoài sẽ bị chặn
    • Một web app không nhất thiết phải thực hiện request web ra bên ngoài để hoạt động. Người dùng tương tác với web mới là bên khởi tạo request
      Có thể cung cấp quyền truy cập vào app thông qua HTTP proxy, lọc các request ra ngoài của web app, hoặc thậm chí không cấu hình network routing cho server host app đó. Khi đó thứ còn lại chỉ là các request do JavaScript khởi tạo bên trong trang đã render
    • Cuối cùng thì đây là vấn đề tồn tại trong hầu như mọi package, thư viện và hệ thống mà chúng ta dùng
      Mã nguồn mở vận hành dựa trên một mức độ tin tưởng đáng kể, và tất cả chúng ta đều đang tham gia vào cấu trúc đó
    • Có thể đặt một sniffer hoặc công cụ capture mạng như Wireshark ở giữa. Ngoài ra cũng có thể giới hạn hoàn toàn quyền truy cập mạng của app chỉ trong mạng gia đình cục bộ
  • Tôi đang làm một sản phẩm có thể được mô tả tương tự
    CxReports: công cụ báo cáo PDF nền web tự host
    https://www.cx-reports.com

  • Vài tháng trước khi thấy dự án này, tôi đã thích ngay. Tôi cài đặt và bắt đầu dùng thực tế, nhưng nó có rất nhiều bug, và một số công cụ gần như không dùng được
    Hy vọng bây giờ nó đã tốt hơn

  • Tôi từng dùng công cụ này để tăng độ tương phản cho một file PDF chứa biểu mẫu văn bản đã scan. Bản scan gần như không nhìn thấy, nên về cơ bản tôi cần làm cho các vùng tối đậm hơn, và nếu có thể thì làm dày hơn một chút để dễ nhìn hơn
    Ngay cả tác vụ tưởng như nhỏ nhặt đó công cụ cũng không hỗ trợ tốt, và mức cải thiện rất ít. Tôi đã thử lặp lại nhiều lần, nhưng từ lần thứ hai trở đi không còn khác biệt thị giác nào nữa, chỉ có dung lượng file tiếp tục thay đổi

    • Thực ra đó không phải là vấn đề của bản thân PDF. Trong trường hợp đó, PDF chỉ là một lớp wrapper mỏng bao quanh ảnh raster
      Chỉ cần trích xuất ảnh, tăng độ tương phản bằng GIMP hoặc ImageMagick rồi tạo PDF mới. Nếu có nhiều file thì cũng có thể xử lý bằng script
  • Tôi đang xem danh sách và tìm xem có API để trích xuất văn bản từ PDF hay không
    Hoặc cũng tò mò liệu có thể lấy dưới dạng vector hay embedding không