EmbedPDF , một trình xem PDF JavaScript mã nguồn mở mới, đã ra mắt với lời hứa về khả năng tương thích không phụ thuộc framework và hiệu suất mượt mà. Được xây dựng trên engine PDFium của Google và phát hành dưới giấy phép MIT , dự án này nhằm mục đích cung cấp một giải pháp thay thế hiện đại cho các trình xem PDF hiện có như PDF.js của Mozilla . Tuy nhiên, việc thử nghiệm cộng đồng ban đầu đã tiết lộ một số vấn đề kỹ thuật và pháp lý mà các nhà phát triển nên lưu ý.
So sánh các tính năng chính
Tính năng | EmbedPDF | PDF.js |
---|---|---|
Engine | PDFium ( WebAssembly ) | Custom JavaScript |
Giấy phép | MIT + Apache 2.0 | Apache 2.0 |
Chú thích | Hỗ trợ đầy đủ (highlight, ink, redaction) | Hạn chế |
Hỗ trợ trình duyệt | Chrome ✓, Firefox ✗ | Toàn cầu |
Hiệu suất | Cao (giống native) | Trung bình |
Hỗ trợ Framework | React , Vue , Svelte , Vanilla JS | Toàn cầu |
Vấn Đề Tương Thích Firefox Xuất Hiện
Người dùng nhanh chóng phát hiện ra rằng các tính năng chú thích của EmbedPDF không hoạt động đúng cách trên Firefox , mặc dù hoạt động chính xác trên Chrome . Nguyên nhân gốc rễ dường như là lỗi JavaScript khi TouchEvent không được định nghĩa trong Firefox , khiến hệ thống chú thích bị hỏng hoàn toàn. Vấn đề tương thích trình duyệt này đặc biệt đáng lo ngại đối với các nhà phát triển cần hỗ trợ đa trình duyệt cho ứng dụng của họ.
Vấn đề mở rộng ra ngoài những lỗi tính năng đơn giản. Trong một số trường hợp, việc chuyển đổi giữa chế độ biên tập và chế độ xem khiến công cụ biên tập vẫn hoạt động, khiến việc cuộn qua tài liệu trở nên bất khả thi cho đến khi trang được làm mới.
Các Vấn Đề Kỹ Thuật Đã Xác Định
- Lỗi TouchEvent trên Firefox:
Uncaught ReferenceError: TouchEvent is not defined
- Lỗi Chuyển Đổi Chế Độ: Công cụ che giấu thông tin vẫn hoạt động khi chuyển sang chế độ xem
- Tương Thích Chú Thích: Một số chú thích PDF hiện có có thể không hiển thị chính xác
- Cấp Phép Ban Đầu: Các yêu cầu phân phối lại Apache 2.0 ban đầu chưa được đáp ứng
Lợi Thế Hiệu Suất So Với Các Giải Pháp Hiện Có
Bất chấp các vấn đề tương thích, EmbedPDF cho thấy các đặc điểm hiệu suất ấn tượng giúp nó nổi bật so với các đối thủ cạnh tranh. Trình xem xử lý các thao tác phóng to một cách mượt mà, giải quyết một trong những khiếu nại phổ biến về PDF.js khi việc phóng to nhanh có thể cảm thấy chậm chạp và mất vị trí tiêu điểm. Sự cải thiện hiệu suất này đến từ việc tận dụng PDFium được biên dịch thành WebAssembly , cung cấp tốc độ gần như native trong các trình duyệt web.
Dự án bao gồm các tính năng nâng cao như biên tập thực sự khi nội dung thực sự được xóa khỏi tài liệu, cuộn ảo hóa cho các tệp lớn, và hỗ trợ chú thích toàn diện bao gồm đánh dấu, ghi chú dính và chú thích mực.
Mối Quan Ngại Về Tuân Thủ Bản Quyền Được Nêu Ra
Các thành viên cộng đồng đã xác định các vấn đề pháp lý tiềm ẩn với thiết lập bản quyền của dự án. Trong khi EmbedPDF tự nó sử dụng giấy phép MIT , nó kết hợp engine PDFium của Google được cấp phép dưới Apache 2.0 . Ban đầu, dự án không tuân thủ đúng cách các yêu cầu phân phối lại của Apache 2.0 , mặc dù nhà phát triển đã giải quyết mối quan ngại này với tài liệu cập nhật.
Điểm tốt, bạn đúng rằng PDFium là Apache 2.0 . Tôi đã cập nhật dự án để tuân thủ các yêu cầu phân phối lại.
Điều này làm nổi bật sự phức tạp của việc quản lý nhiều giấy phép trong các dự án mã nguồn mở, đặc biệt khi kết hợp các giấy phép cho phép như MIT với các giấy phép tương tự copyleft như Apache 2.0 .
Phản Hồi Của Nhà Phát Triển Và Kế Hoạch Tương Lai
Nhà phát triển của dự án đã tích cực phản hồi phản hồi cộng đồng, thừa nhận các vấn đề tương thích trình duyệt và làm việc trên các bản sửa lỗi. Nỗ lực phát triển bảy tháng cho thấy triển vọng, nhưng các vấn đề Firefox và sự giám sát bản quyền ban đầu cho thấy dự án có thể cần thêm thử nghiệm trước khi sử dụng sản xuất.
Trong khi EmbedPDF cung cấp các cải thiện hiệu suất hấp dẫn so với các giải pháp hiện có, các nhà phát triển nên đánh giá cẩn thận các yêu cầu hỗ trợ trình duyệt và ý nghĩa bản quyền trước khi áp dụng. Người duy trì phản hồi của dự án và bộ tính năng đang phát triển cho thấy tiềm năng giải quyết các hạn chế hiện tại.
Tham khảo: embedpdf/embed-pdf-viewer