ฉันจะแสดงเอกสาร Word (.doc, .docx) ในเบราว์เซอร์โดยใช้ JavaScript ได้อย่างไร


146

ฉันได้ทำโค้ดสำเร็จเพื่อแสดงไฟล์ PDF ในเบราว์เซอร์แทนที่จะเป็นกล่องโต้ตอบ "เปิด / บันทึก" ตอนนี้ฉันกำลังพยายามแสดงเอกสาร Word ในเบราว์เซอร์ ฉันต้องการแสดงเอกสาร Word ใน Firefox, IE7 +, Chrome เป็นต้น

ผู้ใดช่วยได้บ้าง ฉันมักจะได้รับกล่องโต้ตอบ "เปิด / บันทึก" ในขณะที่แสดงเอกสาร Word ในเบราว์เซอร์ ฉันต้องการใช้ฟังก์ชันนี้โดยใช้ JavaScript



คุณสามารถใช้syncfusion-document-editorในการตอบสนองสำหรับการแสดงและแก้ไขไฟล์ docx
Yusuf Mohammad

คำตอบ:


225

ปัจจุบันไม่มีเบราว์เซอร์ที่จำเป็นต้องใช้รหัสในการแสดงผลเอกสาร Word และเท่าที่ฉันทราบไม่มีไลบรารีฝั่งไคลเอ็นต์ที่ปัจจุบันมีอยู่สำหรับการแสดงผล

อย่างไรก็ตามหากคุณต้องการแสดงเอกสาร Word แต่ไม่จำเป็นต้องแก้ไขคุณสามารถใช้โปรแกรมดูเอกสารของ Google ผ่านทาง <iframe>การแสดงพื้นที่ห่างไกล/.doc.docx

<iframe src="https://docs.google.com/gview?url=http://remote.url.tld/path/to/document.doc&embedded=true"></iframe>

โซลูชันดัดแปลงจาก " วิธีแสดงเอกสารคำโดยใช้ fancybox "

ตัวอย่าง:

JSFiddle

อย่างไรก็ตามหากคุณต้องการได้รับการสนับสนุนเป็นหลักส่วนใหญ่หากไม่ใช่เบราว์เซอร์ทั้งหมดฉันขอแนะนำให้บันทึกไฟล์.doc/ .docxเป็นไฟล์ PDF ซึ่งสามารถแสดงผลได้อย่างอิสระโดยใช้PDF.jsโดย Mozilla

แก้ไข:

ขอบคุณfatbotdesigns เป็นอย่างมากสำหรับการโพสต์โปรแกรมดู Microsoft Office 365 ในความคิดเห็น

<iframe src='https://view.officeapps.live.com/op/embed.aspx?src=http://remote.url.tld/path/to/document.doc' width='1366px' height='623px' frameborder='0'>This is an embedded <a target='_blank' href='http://office.com'>Microsoft Office</a> document, powered by <a target='_blank' href='http://office.com/webapps'>Office Online</a>.</iframe>

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

ตัวอย่างสด:

Google Docs Viewer

ตัวแสดง Microsoft Office


2
@Pankaj คุณไม่ต้องอัปโหลดไปยัง Google Drive คุณสามารถเปลี่ยนurlพารามิเตอร์เป็น URL แบบเต็มเป็นไฟล์. doc ไม่ว่าจะเป็นโฮสต์บนเซิร์ฟเวอร์ของคุณหรือที่ใดก็ได้ที่สามารถเชื่อมโยงโดยตรงกับ Google เอกสารจัดการการแปลงเป็นรูปแบบที่เบราว์เซอร์สามารถจัดการได้ทันทีและไม่ต้องการให้อัพโหลดหรือเก็บไว้ใน Google เอกสารแทนที่จะทำการร้องขอจากฝั่งเซิร์ฟเวอร์เพื่อหยิบไฟล์
Brandon Anzaldi

3
@Pankaj แม้ว่าคุณจะโฮสต์เซิร์ฟเวอร์ในพื้นที่ Google ก็ไม่สามารถเข้าถึงlocalhostได้ ต้องการ URL ที่สาธารณชนเข้าถึงได้ คุณสามารถใช้บริการส่งต่อพื้นฐานเช่นนกกระจิบ
Brandon Anzaldi

11
นอกจากนี้คุณยังสามารถใช้โปรแกรมดูแอป office live: //view.officeapps.live.com/op/embed.aspx?src=your_url_here ใส่ url นี้ใน iframe
fatbotdesigns

1
@BonifacePereira หากคุณตั้งค่าอินทราเน็ตคุณอาจต้องทำการแปลงในเครื่องเนื่องจาก GDocs และ Live ทั้งคู่จะต้องดึงเอกสารจากที่อื่น หากคุณสามารถทำได้คุณอาจตั้งค่าเซิร์ฟเวอร์สำหรับการแปลงด้วย OpenOffice หรืออะไรก็ได้: stackoverflow.com/questions/5538584/…
Brandon Anzaldi

18
เพียงต้องการชี้ให้เห็นว่าวิธีการทั้งสองนี้อัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ของ Google และ Microsoft อย่างแน่นอน หากคุณจัดการกับข้อมูลที่ละเอียดอ่อนที่ควรมีการ จำกัด การเข้าถึงอย่าทำเช่นนี้ ใช้โซลูชันทางเลือกกับ PDF.js เพื่อสร้างไฟล์ PDF เพื่อดูในเบราว์เซอร์และเสนอลิงค์เพื่อดาวน์โหลดเวอร์ชัน excel / doc ต่างๆ
lightswitch05

30

คำตอบของ Brandon และ fatbotdesigns นั้นถูกต้อง แต่เมื่อนำตัวอย่าง Google เอกสารมาใช้เราพบไฟล์. docx หลายไฟล์ที่ Google ไม่สามารถจัดการได้ เปลี่ยนเป็นภาพตัวอย่าง MS Office Online และใช้งานได้อย่างมีเสน่ห์

คำแนะนำของฉันคือใช้ URL ตัวอย่างของ MS Office บน Google

https://view.officeapps.live.com/op/embed.aspx?src=http://remote.url.tld/path/to/document.doc' 

1
มีข้อ จำกัด ในการใช้สิ่งนี้หรือไม่? support.microsoft.com/en-us/help/2769380/…
วิษณุ

เพื่อให้การเล่าเรื่องที่เคาน์เตอร์ - เราเลือกรุ่นของ Google เพราะ renderer ไมโครซอฟท์จะใช้เวลานานมากในการโหลดทั้งในโครเมี่ยมและ ff
เดวิดฮอลิเดย์

13

ดูเหมือนว่าจะมีไลบรารี js บางส่วนที่สามารถจัดการ. docx (ไม่ใช่. doc) เป็น html conversion ฝั่งไคลเอ็นต์ (ตามลำดับโดยเฉพาะ):

หมายเหตุ: หากคุณกำลังมองหาวิธีที่ดีที่สุดในการแปลงไฟล์ doc / docx บนฝั่งไคลเอ็นต์แล้วอาจจะเป็นคำตอบคือไม่ได้ทำมัน ถ้าคุณต้องการทำมันจริงๆให้ทำฝั่งเซิร์ฟเวอร์เช่นกับlibreoffice ในโหมด headless , apache-poi (java) , pandocหรือไลบรารีอื่นใดที่ทำงานได้ดีที่สุดสำหรับคุณ


1
ฉันจะทราบว่าห้องสมุดของฉันไม่มีการระบายสีอย่างสมบูรณ์ มันสามารถแปลงไฟล์ docx เป็นสิ่งที่สามารถแสดงผลในเบราว์เซอร์ ฉันไม่รู้ว่านี่เป็นเรื่องจริงอีกต่อไปหรือไม่
artburkart

2

ฉันคิดว่าฉันมีความคิด สิ่งนี้กำลังทำน็อตของฉันด้วยและฉันยังคงมีปัญหาในการแสดงใน Chrome

บันทึกเอกสาร (name.docx) เป็น word เป็นเว็บเพจไฟล์เดียว (name.mht) ในการใช้ html ของคุณ

<iframe src= "name.mht" width="100%" height="800"> </iframe>

เปลี่ยนความสูงและความกว้างตามที่เห็นสมควร


6
@guidomocha อย่าเพิ่งแสดงความคิดเห็นให้เหตุผลว่าทำไมมันถึงเป็นวิธีที่ไม่ดี
J. Louw

2

ViewerJSมีประโยชน์ในการดู / ฝังรูปแบบ openoffice เช่น odt, odp, ods และ pdf

สำหรับเอกสาร openoffice / pdf แบบฝัง

<iframe src = "/ViewerJS/#../demo/ohm2013.odp" width='700' height='550' allowfullscreen webkitallowfullscreen></iframe>

/ViewerJS/ คือเส้นทางของ ViewerJS

#../demo/ohm2013 เส้นทางของไฟล์ของคุณต้องการฝัง


ฉันจะสามารถใช้ลิงก์ URL จาก aws s3 ได้ไหม
วิษณุ

ไม่คุณให้ลิงค์ท้องถิ่นเท่านั้น
NaveenDA

1
ขอบคุณสำหรับการตอบกลับ
วิษณุ

โชคไม่ดีที่รูปแบบไมโครซอฟท์ของฉันแพร่หลาย
guettli

1

เอกสารพื้นเมือง (ที่ฉันมีความสนใจ) ทำให้ผู้ดู (และผู้แก้ไข) โดยเฉพาะสำหรับเอกสาร Word (ทั้งรูปแบบไบนารี. doc แบบดั้งเดิม. doc และรูปแบบ docx ที่ทันสมัย) มันทำได้โดยไม่สูญเสียการแปลงเป็น HTML นี่คือวิธีเริ่มต้นhttps://github.com/NativeDocuments/nd-WordFileEditor/blob/master/README.md


2
ไม่มีข้อมูลเกี่ยวกับการกำหนดราคา 'Word File Editor / Viewer' ฟรีหรือไม่
FiringBlanks

ซอฟต์แวร์เชิงพาณิชย์ แต่เรามีแผนฟรีสำหรับธุรกิจที่เพิ่งเริ่มต้น / ธุรกิจขนาดเล็กและอื่น ๆ ซึ่งเป็นแผนฟรีภายใต้ข้อ จำกัด การใช้งาน เราจะเผยแพร่รายละเอียดเร็ว ๆ นี้
JasonPlutext

สามารถรันบนเพจเดียวแบบไร้เซิร์ฟเวอร์เช่นบน aws s3 ได้ไหม
เกรแฮมชิว

ฝั่งเซิร์ฟเวอร์เราจัดแพคเกจเป็น Docker container ที่คุณต้องใช้งานที่ไหนสักแห่ง (เช่น ECS) (ในหลักการเราสามารถเรียกใช้บางส่วนของนี้ในแลมบ์ดา แต่คุณยังคงต้องการการจัดเก็บเอกสารถาวรอาจ S3)
JasonPlutext

3
@JasonPlutext นี่ดูน่าสนใจ แต่ฉันจะทื่อ: ฉันเต็มใจที่จะจ่ายค่าบริการที่เหมาะสมขนาดเล็กสำหรับแพคเกจที่ดีหรือบริการ - แต่ "ส่งข้อมูลของคุณและเราจะแจ้งให้คุณทราบว่าสิ่งที่มีค่าใช้จ่าย" คือไม่ไป
manassehkatz-Moving 2 Codidact

0

หากคุณต้องการก่อนประมวลผลไฟล์ DOCX ของคุณแทนที่จะรอจนกว่ารันไทม์คุณสามารถแปลงให้เป็น HTML เป็นครั้งแรกโดยใช้ API การแปลงไฟล์เช่นZamzar คุณสามารถใช้ API เพื่อแปลงจาก DOCX เป็น HMTL โดยทางโปรแกรมบันทึกผลลัพธ์ไปยังเซิร์ฟเวอร์ของคุณจากนั้นให้บริการ HTML นั้นจนถึงผู้ใช้ปลายทางของคุณ

การแปลงเป็นเรื่องง่าย:

curl https://api.zamzar.com/v1/jobs \
-u API_KEY: \
-X POST \
-F "source_file=@my.docx" \
-F "target_format=html5"

การดำเนินการนี้จะลบการพึ่งพารันไทม์บนบริการของ Google และ Microsoft (ตัวอย่างเช่นหากไม่ทำงานหรือคุณถูก จำกัด อัตรา)

นอกจากนี้ยังมีประโยชน์ที่คุณสามารถขยายไปยังประเภทไฟล์อื่น ๆหากคุณต้องการ (PPTX, XLS, DOC ฯลฯ )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.