แปลง docx/odt เป็น PDF โดยใช้ JavaScript

ฉันมีแอปพลิเคชันเว็บโหนดที่ต้องการแปลงไฟล์ docx เป็น pdf (ใช้ทรัพยากรฝั่งไคลเอ็นต์เท่านั้นและไม่มีปลั๊กอิน) ฉันพบวิธีแก้ปัญหาที่เป็นไปได้ด้วยการแปลง docx ของฉันเป็น HTML โดยใช้ docxjs จากนั้น HTML เป็น PDF โดยใช้ jspdf (docx->HTML->PDF) วิธีแก้ปัญหานี้สามารถทำได้ แต่ฉันพบปัญหาหลายประการโดยเฉพาะอย่างยิ่งกับการเรนเดอร์ ฉันรู้ว่า docxjs ไม่คงการเรนเดอร์ใน HTML เหมือนกับไฟล์ docx ดังนั้นจึงเป็นปัญหา...

ดังนั้นคำถามของฉันคือคุณรู้จักโมดูล/โซลูชันฟรีใดบ้างที่สามารถทำงานได้โดยตรงโดยไม่ต้องผ่าน HTML (ฉันเปิดให้ odt เป็นแหล่งข้อมูลด้วย) ถ้าไม่คุณจะแนะนำให้ฉันทำอะไร?

ขอบคุณ


person ncohen    schedule 11.05.2014    source แหล่งที่มา
comment
มีวิธีแก้ไขปัญหานี้ไหม?   -  person Sunil Lama    schedule 11.04.2017
comment
@SunilLama ฉันไม่พบ...   -  person ncohen    schedule 13.04.2017
comment
@ncohen สวัสดีเพื่อน ๆ เพิ่งพบโดเมนปัญหานี้และต้องการแบ่งปันสิ่งที่ฉันค้นพบ ขั้นแรก ลองดูที่ zamzar.com และ convertio.co เป็นทั้งบริการแปลง API ของบุคคลที่สามที่มีประสิทธิภาพ ฉันทำวิศวกรรมย้อนกลับเล็กน้อยเพื่อดูว่าพวกเขาสามารถเรนเดอร์ DOCX เป็น HTML ได้อย่างไร และนี่คือสิ่งที่ฉันพบ ก่อนอื่นพวกเขาจะเปลี่ยนจาก DOCX เป็น PDF ด้วย libreoffice หรือ unoconv ตามที่ zarkone บันทึกไว้ด้านล่าง แต่จากนั้นจะเปลี่ยนจาก PDF เป็น HTML พร้อมด้วยซอสสูตรลับบางอย่างที่เรียกว่า github.com/coolwanglu/pdf2htmlEX ซึ่งเป็นเครื่องมือแปลงโอเพ่นซอร์สชนิดหนึ่ง!   -  person asdfqwer    schedule 18.06.2018


คำตอบ (2)


ดังที่คุณทราบอยู่แล้วว่าไม่มี libs ที่พร้อมใช้งานและเปิดสำหรับสิ่งนี้ .. คุณไม่สามารถได้ผลลัพธ์ที่ดีด้วยตัวแปรที่มีอยู่ ข้อเสนอแนะของฉันคือ:

  1. ใช้ API ของบุคคลที่สาม ชอบ https://market.mashape.com/convertapi/word2pdf-1#!documentation< /ก>
  2. สร้างบริการของคุณเองเพื่อจุดประสงค์นี้ หากคุณมีความสามารถดังกล่าว ฉันขอแนะนำให้สร้างเซิร์ฟเวอร์ขนาดเล็กบน node.js (ฉันพนันได้เลยว่าคุณรู้วิธีการทำเช่นนี้) คุณสามารถใช้ Libreoffice เป็นตัวแปลงที่ดีและมีคุณภาพการเรนเดอร์ที่ดีดังนี้:

    libreoffice -headless -invisible -convert-to pdf {$file_name} -outdir /www-disk/

    อย่าลืมว่าโดยปกติแล้วจะใช้เวลานาน อย่าปิดกั้นโฟลว์คำขอ-คำตอบ: ใช้กระบวนการแยกกันสำหรับการดำเนินการแปลงแต่ละครั้ง

    และสิ่งสุดท้าย Libreoffice มีน้ำหนักเบาไม่มาก แต่มีคุณภาพดี คุณยังสามารถค้นหาเครื่องมือ unoconv ที่โดดเด่นได้อีกด้วย

ตั้งแต่เดือนมกราคม 2019 มี docx-wasm ซึ่งทำงานในโหนดและ ทำการแปลงแบบโลคัลที่มีการติดตั้งโหนด เป็นกรรมสิทธิ์แต่เป็นฟรีเมียม

person zarkone    schedule 14.05.2014
comment
ขอบคุณ แต่ฉันยังคงมองหาบางอย่างที่ทำงานกับลูกค้าได้ - person ncohen; 14.05.2014
comment
คุณหมายถึงคุณไม่ต้องการการแปลงฝั่งเซิร์ฟเวอร์ใช่หรือไม่? - person coder hacker; 21.05.2014
comment
ใช่ ฉันต้องการให้แอปของฉันเป็นแบบอัตโนมัติโดยสิ้นเชิง - person ncohen; 21.05.2014
comment
คุณใช้ api ไม่ได้เหรอ? คุณหมายถึงระบบอัตโนมัติโดยสมบูรณ์ - โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ตใช่ไหม มีผู้ให้บริการหลายรายที่สามารถแปลง x -› y ด้วยการเรียก api แค่กูเกิ้ลมัน - person Lukas Liesis; 11.05.2018
comment
แก้ไขเพื่อเพิ่มลิงก์ไปยัง docx-wasm (การเปิดเผยข้อมูล: ฉันมีความสนใจ) - person JasonPlutext; 23.01.2019
comment
@JasonPlutext สถานะของ NativeDocuments นั้นคืออะไร? มีโอกาสใดบ้างที่คุณยินดีที่จะเปิดซอร์สโปรเจ็กต์นั้น? (และไม่ต้องสนใจข้อความอื่นๆ ของฉันบน github / twitter ได้เลย) - person zelusp; 12.02.2020
comment
ฉันถามคำถามที่สอง o @zelusp - ดูเหมือนว่าจะสมบูรณ์แบบและมีเพียงหนึ่งเดียวเท่านั้น - person jean d'arme; 19.09.2020

ดูเหมือนว่าแม้ผ่านไปสามปีแล้ว ncohen ก็ไม่พบคำตอบ ยังไม่ชัดเจนว่าจะต้องเป็นโซลูชันฟรี (ในสกุลเงินดอลลาร์) หรือไม่

ข้อกำหนดเดิมคือ:

ใช้ทรัพยากรฝั่งไคลเอ็นต์เท่านั้นและไม่มีปลั๊กอิน

คุณหมายความว่าคุณไม่ต้องการการแปลงฝั่งเซิร์ฟเวอร์ใช่ไหม ใช่ ฉันต้องการให้แอปของฉันเป็นแบบอัตโนมัติโดยสิ้นเชิง

เนื่องจากคำตอบ/ความคิดเห็นอื่น ๆ ทั้งหมดเสนอเฉพาะโซลูชันส่วนประกอบฝั่งเซิร์ฟเวอร์เท่านั้น ซึ่งผู้เขียนระบุอย่างชัดเจนว่าไม่ใช่สิ่งที่พวกเขาต้องการ นี่คือคำตอบที่เสนอ

บริษัทที่ฉันทำงานด้วยมีโซลูชันนี้มาสองสามปีแล้ว ซึ่งสามารถแปลงไฟล์ DOCX (ยังไม่เสร็จ) เป็น PDF ในเบราว์เซอร์ได้อย่างสมบูรณ์ โดยไม่จำเป็นต้องมีส่วนประกอบฝั่งเซิร์ฟเวอร์ ปัจจุบันนี้ใช้ asm.js/PNaCl/WASM ขึ้นอยู่กับเบราว์เซอร์ที่ใช้

https://www.pdftron.com/samples/web/samples/viewing/viewing/

เปิดไฟล์ office โดยใช้การสาธิตด้านบน และคุณจะไม่เห็นการสื่อสารของเซิร์ฟเวอร์ ทุกอย่างเสร็จสิ้นฝั่งไคลเอ็นต์ การสาธิตนี้ใช้ได้กับเบราว์เซอร์มือถือด้วย

person Ryan    schedule 07.07.2019
comment
มีซอร์สโค้ดที่ฉันสามารถตรวจสอบหรือเรียนรู้ได้หรือไม่? - person Mirza Andriamanamisoa; 28.06.2020
comment
@MirzaAndriamanamisoa นี่คือโซลูชันเชิงพาณิชย์แบบชำระเงินแบบปิด การสาธิตออนไลน์อยู่ที่นี่: pdftron.com/webviewer/demo - person Ryan; 29.06.2020