Phần mềm LibreOffice là phần mềm mã nguồn mở, giải pháp thay thế Microsoft Office trên nhiều nền tảng khác nhau. Chúng ta có thể sử dụng nó để chuyển từ Word sang định dạng PDF. Tuy nhiên, hiện tại thì LibreOffice không có API chính thức cho .Net nhưng chúng ta có thể thực hiện bằng cách thực thi tập tin soffice có trong thư mục của LibreOffice.

Giải pháp

Đây là một giải pháp "cứu rỗi" linh hồn của mình khi đã bế tắc với những thư viện khác. Câu chuyện của mình là khi sử dụng thư viện của Apose.Word thì thư viện không thể chuyển đổi được Unicode / Tiếng Việt trong tập tin Word. Với thư viện Spire.Doc thì cứ báo lỗi thiếu font trên hệ thống nhưng mình cũng không mò được là nó thiếu font nào trong khi tập tin Word chỉ sử dụng mỗi Times New Roman.

Và dưới đây là đoạn code mẫu mình viết để dùng LibreOffice chuyển tập tin Word sang PDF:

Lỗi IIS không thể thực thi soffice

Sau khi mình kiểm tra đoạn code trên thì chương trình chạy ngon lành cành đào, vẫn xuất được PDF bình thường nhưng khi mình build lên máy chủ thì mình thấy là chương trình không thể xuất được PDF. Sau khi tìm hiểu thì mình biết rằng Application Pool hiện tại trên IIS không thể thực thi được chương trình do phân quyền.

Do đó, bạn cần identity chuyển từ "ApplicationPoolIdentity" sang "LocalSystem", cách thực hiện như sau:
  • Tắt site hiện tại của bạn trên IIS
  • Tắt Application Pool tương ứng mà site bạn sử dụng
  • Từ giao diện Application Pool, chọn pool tương ứng, chọn Advanced Settings...
  • Chuyển Identity sang LocalSystem và nhấn OK
  • Bật lại application pool
  • Bật lại site của bạn trên IIS

Done, chúc bạn thành công!

Post a Comment

Mới hơn Cũ hơn