Câu trả lời này vượt qua tất cả các bài kiểm tra, nhưng biểu đồ luồng trong tài liệu kiểm tra của bạn.
sudo apt-get install unoconv
doc2pdf respondus-docx-sample-file.docx
Tại sao điều này tốt hơn so với các phương pháp khác cho đến nay?
Tôi đã thử nghiệm các phương pháp khác được đề xuất cho đến nay (đặc biệt oowriter
và ebook-convert
), nhưng chúng vượt qua các thử nghiệm ít hơn phương pháp này. Các ebook-convert
phương pháp dải lề và một phần của văn bản ra khỏi tài liệu.
Phương pháp này thậm chí mang lại kết quả tốt hơn so với trình chuyển đổi chuyên nghiệp như Rainbowpdf .
Tôi cũng đã thử chuyển đổi nó thành html, nhưng bản vẽ với hình vuông trong vòng tròn và biểu đồ luồng không chính xác.
Tại sao kiểm tra biểu đồ dòng chảy thất bại?
Có vẻ như libreoffice và unoconv có một số vấn đề với việc hiển thị chính xác biểu đồ luồng trong tệp .docx. Điều này có lẽ là do nó được tạo ra bằng nghệ thuật thông minh trong Microsoft Office. Đó là vấn đề. Đó là một lỗi cũng được thảo luận về chủ đề này . Thông tin văn bản và hình ảnh có trong pdf kết quả từ phương pháp trên như bạn có thể thấy (mặc dù tôi phải chọn văn bản).
Ví dụ, màu phông chữ không được đọc chính xác và một số dòng quá dài. Tôi không biết bất kỳ giải pháp linux nào có thể hiển thị nghệ thuật thông minh một cách chính xác. :(
Đây cũng là lý do tại sao tất cả các print
giải pháp được đăng trên trang này sẽ không làm bạn hài lòng.
Nói ngắn gọn
Nói tóm lại, những gì bạn đang làm thực sự khó khăn và hiện tại không có giải pháp nào đáp ứng đầy đủ cho bạn. Điểm nổi bật của chuyển đổi docx2pdf là nghệ thuật thông minh. Nếu bạn có thể sống mà không cần điều đó hoặc nếu bạn có thể tìm ra cách phát hiện nghệ thuật thông minh và chuyển đổi nó bằng cách nào đó thành hình ảnh, bạn có thể đạt được mục tiêu của mình.
Tùy chọn 1. Buộc người dùng của bạn xử lý sự cố
Đây là một giải pháp rất không phù hợp. Người tạo nội dung của bạn có thể lưu nghệ thuật thông minh của họ dưới dạng jpg như được mô tả trong các trang trợ giúp văn phòng và do đó có thể chuyển đổi trên máy chủ của bạn.
Tùy chọn 2. Hack theo cách của bạn xung quanh vấn đề
Nếu các biểu đồ dòng chảy thường rất giống nhau và tùy thuộc vào mức độ phát triển của bạn, bạn có thể thử và chuyển đổi nghệ thuật thông minh một cách riêng biệt. Bạn có thể, trích xuất tệp draw1.xml từ cụm tài liệu .docx và sau đó sử dụng xử lý ngôn ngữ tự nhiên và một số bản hack điên rồ để xây dựng lại một nghệ thuật thông minh. Chẳng hạn, bạn phải gặp rắc rối với loại xml này:
<dsp:txBody>
<a:bodyPr spcFirstLastPara="0" vert="horz" wrap="square" lIns="8255" tIns="8255" rIns="8255" bIns="8255" numCol="1" spcCol="1270" anchor="ctr" anchorCtr="0">
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:pPr lvl="0" algn="ctr" defTabSz="577850">
<a:lnSpc><a:spcPct val="90000"/>
</a:lnSpc>
<a:spcBef>
<a:spcPct val="0"/>
</a:spcBef>
<a:spcAft>
<a:spcPct val="35000"/>
</a:spcAft>
</a:pPr>
<a:r>
<a:rPr lang="en-US" sz="1300" b="1" kern="1200"/>
<a:t>All three sides are different lengths
</a:t>
</a:r>
</a:p>
</dsp:txBody>
Hoặc như một giải pháp tối thiểu, bạn ít nhất trích xuất văn bản ( <a:t>
?) Từ tệp và lưu nó theo cách dễ dàng hơn. Hoặc nếu các biểu đồ dòng chảy của pdf của bạn đều giống nhau, bạn có thể viết một tập lệnh để thay đổi màu văn bản và độ dài dòng trong chính xml. Sau đó, bạn có thể chạy doc2pdf
và bạn có một tệp về cơ bản có tất cả thông tin phù hợp, nhưng có thể không phải là định dạng. Trong trường hợp biểu đồ luồng, có lẽ bạn cũng muốn bao gồm một số định dạng, vì định dạng là một phần của thông tin.
Tùy chọn 3. Sử dụng dịch vụ của bên thứ ba
Tôi đã thực hiện một số nghiên cứu thêm trong vài ngày qua và tôi đã tìm thấy một dịch vụ thực hiện chuyển đổi hoàn hảo: zamzar . Zamzar cho phép bạn tải lên tệp docx và sau đó gửi email cho bạn một liên kết. Họ cũng có dịch vụ (trả tiền?) Nơi bạn có thể gửi bất kỳ tệp nào tới pdf@zamzar.com và sau đó lấy lại tệp đã chuyển đổi trong hộp thư đến của bạn. Bạn có thể dễ dàng xây dựng một hệ thống xung quanh hệ thống này, nơi bạn tự động gửi tệp và phân tích nó từ email. Đây không phải là quá nhiều công việc và kết quả cuối cùng là tốt nhất.
Ghi chú
- Nếu bất cứ ai có các dịch vụ khác làm điều tương tự, xin vui lòng chỉnh sửa chúng trong.
- Tôi đã gửi thư hỗ trợ zamzar để hỏi xem họ có api không. Điều đó sẽ còn dễ dàng hơn nữa.
- Có lẽ apose cho .NET và Java cũng có thể giúp đỡ? Hoặc docx4java như trong bài SO rất liên quan này .
- Một lựa chọn khác là xem xét trình chuyển đổi odf có vẻ như đã cũ và phụ thuộc vào openoffice chứ không phải libreoffice.
- Bây giờ tôi có thể xác nhận rằng java jodconverter cũng bị lỗi khi chuyển đổi biểu đồ luồng.
Tôi thực sự đã dành thời gian để kiểm tra các phương pháp khác nhau được đề xuất trên trang này. Vui lòng gửi lại bất kỳ ý kiến lên với các bài kiểm tra thực tế.