วิธีที่แนะนำในการฝัง PDF ใน HTML?


1181

วิธีที่แนะนำในการฝัง PDF ใน HTML คืออะไร?

  • iFrame?
  • วัตถุ?
  • ฝัง?

Adobe บอกตัวเองเกี่ยวกับเรื่องนี้อย่างไร

ในกรณีของฉัน PDF ถูกสร้างขึ้นทันทีดังนั้นจึงไม่สามารถอัปโหลดไปยังโซลูชันของบุคคลที่สามก่อนที่จะล้างข้อมูล


6
ลอง pdf2htmlEX: github.com/coolwanglu/pdf2htmlEX
Tezcat

มีการเปรียบเทียบที่ดีไม่ได้เป็นเพียงการแก้ปัญหาที่เฉพาะเจาะจง แต่กลยุทธ์ทั่วไป, ในวิกิพีเดีย repo pdf2htmlEX ของ นอกจากนี้แม้ว่าฉันไม่ได้พยายามมันนี้ดูเหมือนว่าจะมีการบำรุงรักษาส้อม
ShreevatsaR

คำตอบ:


541

อาจเป็นวิธีที่ดีที่สุดคือการใช้ห้องสมุดPDF.JS มันเป็นตัวเรนเดอร์HTML5 / JavaScriptบริสุทธิ์สำหรับเอกสาร PDF ที่ไม่มีปลั๊กอินของบุคคลที่สาม

การสาธิตออนไลน์: http://mozilla.github.com/pdf.js/web/viewer.html

GitHub: https://github.com/mozilla/pdf.js


12
ตามที่ระบุไว้ในคำตอบอื่น Scribd จริงใช้ pdf2swf การแปลงไฟล์ PDF
ปีเตอร์เครก

8
ฉันไม่แนะนำให้ใช้ scribd - ฉันเพิ่งทำการทดลองกับเอกสารเฉพาะและใน firefox 4 จะแสดงเฉพาะ 3 หน้าแรกเท่านั้นในขณะที่ใน IE9 ข้อความแสดงผลไม่ถูกต้อง - มันชดเชยบางส่วนของหน้า ดังนั้นเทคนิคการพูดมันเป็นรถ พวกเขาคาดหวังให้คุณสมัครเป็นสมาชิกเพื่อพิมพ์หรือดาวน์โหลดเอกสาร! เป็นหลักพวกเขากำลังใช้เอกสารฟรีก่อนหน้านี้และสร้าง paywall รอบ ๆ พวกเขา
frankster

9
ห้องสมุด PDF.js ดูเหมือนจะเป็นทางออกที่ดีมากแม้ว่าการสาธิตที่เชื่อมโยงจะไม่แสดงให้เห็นว่าฝังอยู่ในหน้า (มันใช้ทั้งหน้า) แต่จะใช้ HMTL5 ผ้าใบดังนั้นจึงควรจะง่ายต่อการฝังและก็รวดเร็ว ด้านล่างใช้ js ใช้ซึ่งแตกต่างจาก<object>: github.com/mozilla/pdf.js/blob/master/examples/helloworld/…
LarsH

33
pdf.js ทำงานได้ไม่ดีบนเบราว์เซอร์แท็บเล็ตเช่น Chrome ฉันพบว่ามันช้ามากสำหรับเอกสาร PDF ที่มีขนาดใหญ่กว่า
Rocco The Taco

10
ฉันไม่สามารถเชื่อว่าสิ่งนี้กำลังถูกแนะนำ ดูการแสดงผลตัวอักษรในการสาธิตออนไลน์พวกเขาดูขรุขระและน่ากลัว มันดูดีกว่ามากกับการแสดงผลพิกเซลย่อยเมื่อเปิดในโปรแกรมอ่าน adobe
speedplane

531

สิ่งนี้รวดเร็วง่ายตรงประเด็นและไม่ต้องการสคริปต์บุคคลที่สาม:

<embed src="http://example.com/the.pdf" width="500" height="375" 
 type="application/pdf">

อัปเดต (1/2018):

เบราว์เซอร์ Chrome บน Android ไม่รองรับการฝัง PDF อีกต่อไป คุณสามารถแก้ไขปัญหานี้ได้โดยใช้โปรแกรมดู PDF ของ Google Drive

<embed src="https://drive.google.com/viewerng/
viewer?embedded=true&url=http://example.com/the.pdf" width="500" height="375">

30
ดีกว่าที่จะใช้แท็ก <object> เพื่อให้คุณสามารถรวมการย้อนกลับ
Jonathon Hill

1
ฉันคิดว่าผู้พัฒนาต้องการทราบว่า Mac / Firefox ได้รับภาพปลั๊กอินที่เสียหาย หน้าปลั๊กอินจะไม่โหลดปลั๊กอินที่ต้องการ ความคิดใดที่จะหลีกเลี่ยงสิ่งนี้
Shanimal

62
ถ้าคุณต้องการให้แน่ใจว่ามันจะปรากฏขึ้นแทนการดาวน์โหลดอัตโนมัติ pdf (มันเกิดขึ้นกับฉัน) เพิ่มลงtype='application/pdf'ในแท็กฝัง
Hassek

31
ดีกว่าการใช้<object>แท็กเพราะสามารถแสดงเนื้อหาทางเลือกในเบราว์เซอร์ที่ไม่สามารถแสดงไฟล์ PDF ได้ สามารถใส่<embed>แท็กใน<object>แท็กได้หากต้องการ Ref: stackoverflow.com/questions/1244788/embed-vs-object
Raphael

1
@raphaelcm อันที่จริงตามที่ฉันพูดก่อนหน้านี้เพียงแค่ใช้งานแท็กฝังในเบราว์เซอร์หลักทั้งหมด แม้แต่ IE 7 และ 8
Batfan

361

คุณสามารถใช้โปรแกรมดู PDF ของ Google เพื่อจุดประสงค์นี้ เท่าที่ฉันรู้ว่ามันไม่ใช่คุณลักษณะของ Google อย่างเป็นทางการ (ฉันทำผิดในเรื่องนี้หรือไม่) แต่มันก็ใช้งานได้ดีและราบรื่นสำหรับฉัน คุณต้องอัปโหลด PDF ของคุณก่อนและใช้ URL ของมัน:

<iframe src="http://docs.google.com/gview?url=http://example.com/mypdf.pdf&embedded=true" style="width:718px; height:700px;" frameborder="0"></iframe>

สิ่งสำคัญคือมันไม่จำเป็นต้องใช้โปรแกรมเล่นแฟลชมันใช้ JavaScript


29
สิ่งหนึ่งที่ควรกล่าวถึงก็คือมีข้อ จำกัด ด้านขนาดของ PDF ที่สามารถแสดงผลได้ ฉันคิดว่ามันเป็น 10MB / 100 หน้า PS: ฉันไม่คิดว่าผู้ชมจะ "ไม่เป็นทางการ"; พวกเขายังมีหน้าวิธีใช้ที่สร้าง URL ที่ฝังสำหรับคุณ: docs.google.com/viewer
SuperElectric

30
ตัวเลือกนี้ใช้งานได้ดี แต่คุณต้องทำให้ PDF ของคุณเป็นสาธารณะซึ่งสำหรับฉันไม่ใช่ตัวเลือกเสมอไป
KoviNET

4
@riot_starter โซลูชันนี้ใช้งานไม่ได้อีกต่อไปหากคุณออกจากระบบ Google แล้วโหลดได้ดีถ้าคุณลงชื่อเข้าใช้อย่างสมบูรณ์จะโหลดได้ดี แต่ถ้าคุณอยู่ในระหว่าง (หมายความว่าอะไรก็ตาม) มันจะขอรหัสผ่าน และในกรณีของ iframe มันก็ไม่โหลด
dwenaus

5
คุณได้รับอนุญาตในการตั้งค่าความเป็นส่วนตัวของ Google Docs ระหว่างpublic, และsign-in required privateมันเป็นคุณสมบัติที่เป็นทางการแน่นอนเมื่อพิจารณาเอกสารใด ๆ ใน Google เอกสารมีembedตัวเลือก
b1nary.atr0phy

6
สิ่งที่ควรกล่าวถึงก็คือคำเตือน "คุณได้ทำคำขอมากเกินไปเมื่อเร็ว ๆ นี้" ซึ่งเป็นข้อ จำกัด
kommradHomer

116

คุณสามารถควบคุมวิธีการที่ PDF ปรากฏในเบราว์เซอร์โดยส่งตัวเลือกบางอย่างในสตริงการสืบค้น ฉันมีความสุขกับการทำงานนี้จนกระทั่งฉันรู้ว่ามันไม่ทำงานใน IE8 :(

ใช้งานได้ใน Chrome 9 และ Firefox 3.6 แต่ใน IE8 จะแสดงข้อความ "ใส่ข้อความแสดงข้อผิดพลาดของคุณที่นี่หาก PDF ไม่สามารถแสดงได้"

แม้ว่าฉันยังไม่ได้ทดสอบเบราว์เซอร์รุ่นเก่ากว่าใด ๆ ก็ตาม แต่นี่คือรหัสที่ฉันมีอยู่ในกรณีที่มันช่วยใครก็ได้ ตั้งค่าการซูมเป็น 85% ลบแถบเลื่อนแถบเครื่องมือและบานหน้าต่างนำทาง ฉันจะอัปเดตโพสต์ของฉันหากพบสิ่งที่ใช้งานได้ใน IE เช่นกัน

<object width="400" height="500" type="application/pdf" data="/my_pdf.pdf?#zoom=85&scrollbar=0&toolbar=0&navpanes=0">
    <p>Insert your error message here, if the PDF cannot be displayed.</p>
</object>

6
นั่นเป็นทางออกที่ดีที่สุดเพราะใช้ความสามารถของเบราว์เซอร์ไม่ใช่โซลูชันของบุคคลที่สามที่ซับซ้อน ในเบราว์เซอร์สมัยใหม่ทั้งหมด (IE9, FF หรือ Chrome) PDF ควรฝังอย่างดี ขออภัยสำหรับผู้ใช้ IE 6/7 พวกเขาต้องอัพเกรด เราหยุดการสนับสนุนเบราว์เซอร์เหล่านี้นานแล้ว :(
Adrian P.

2
ใช้งานไม่ได้กับ Chrome..FYI ... น่าเสียดายรุ่นแท็บเล็ตมือถือจะได้รับการแก้ไขอย่างรวดเร็ว
Rocco The Taco

1
+1 สำหรับการกำหนดตัวเลือกการซูมและการเลื่อนอย่างไรก็ตามสิ่งนี้ไม่สามารถใช้งานได้ใน Chrome เวอร์ชันล่าสุด (44) ... ไม่สามารถโหลดเอกสาร PDF
NotJay

เป็นไปได้ที่จะเพิ่มปุ่มปิด? แล้วยังไง?
Roberto Sepúlveda Bravo

@RoccoTheTaco Seconded ไม่สามารถใช้งานกับมือถือ chrome บน Android ได้
ไม่ระบุชื่อ

66

การใช้ทั้งสองอย่าง<object>และ<embed>จะทำให้คุณสามารถใช้งานร่วมกับเบราว์เซอร์ได้กว้างขึ้น

<object data="http://yoursite.com/the.pdf" type="application/pdf" width="750px" height="750px">
    <embed src="http://yoursite.com/the.pdf" type="application/pdf">
        <p>This browser does not support PDFs. Please download the PDF to view it: <a href="http://yoursite.com/the.pdf">Download PDF</a>.</p>
    </embed>
</object>

4
สิ่งนี้จะไม่ทำงานในเบราว์เซอร์หากไฟล์ PDF ไม่ได้ติดตั้งหรือล้าสมัย
Umair Hamid

นอกจากนี้สิ่งนี้จะไม่ตรวจสอบสำหรับผู้ที่เกี่ยวข้องกับการตรวจสอบรหัส
NotJay

1
สิ่งนี้ใช้ได้ผลดีสำหรับฉันในขณะที่การใช้embedแท็กด้วยตัวเองถือว่าเป็นunsafeChrome และ Firefox
Richie Thomas

1
ด้วยเหตุผลบางอย่างบน Android (โครม) มันไม่ได้ฝัง PDF และแทนที่จะเสนอให้ดาวน์โหลด บน iPhone (ซาฟารี) จะแสดงเฉพาะหน้าแรกของ PDF
Ivan Rubinson

21

แปลงเป็น PNG ผ่าน ImageMagick และแสดง PNG (รวดเร็วและสกปรก)

<?php
  $dir = '/absolute/path/to/my/directory/';
  $name = 'myPDF.pdf';
  exec("/bin/convert $dir$name $dir$name.png");
  print '<img src="$dir$name.png" />';
?>

นี่เป็นตัวเลือกที่ดีหากคุณต้องการวิธีแก้ปัญหาอย่างรวดเร็วต้องการหลีกเลี่ยงปัญหาการดู PDF ข้ามเบราว์เซอร์และหาก PDF เป็นเพียงหน้าเดียวหรือสองหน้า แน่นอนว่าคุณต้องติดตั้ง ImageMagick (ซึ่งจำเป็นต้องใช้ Ghostscript) บนเว็บเซิร์ฟเวอร์ของคุณซึ่งเป็นตัวเลือกที่อาจไม่สามารถใช้งานได้ในสภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกัน นอกจากนี้ยังมีปลั๊กอิน PHP (เรียกว่า Imagick) ที่ผลงานเช่นนี้แต่มันก็มีมันเป็นความต้องการพิเศษของตัวเอง


หรือแปลงภาพเป็น PNG โดยใช้แอปพลิเคชันเช่นดูตัวอย่างบน Mac
Garrett

2
แต่คุณสามารถทำสิ่งนั้นได้โดยทางโปรแกรมหรือไม่
Dan Mantyla

เกิดอะไรขึ้นถ้าเอกสารมีมากกว่า 1 หน้า ฉันเดาว่าคุณจะแสดงหน้าแรกเท่านั้น
seb

@seb นานแล้ว แต่ฉันสามารถใช้กับ PDF ที่มีความยาว 2 หรือ 3 หน้าได้ คงจะไม่เป็นการดีถ้าจะยิ่งใหญ่ไปกว่านั้นฉันคิดว่าเบราว์เซอร์มือถือมีภาพที่แสดงเวลายากลำบากเช่นนั้น นี่คือเหตุผลที่ฉันเรียกมันว่าวิธี "รวดเร็วและสกปรก" แต่มันก็เป็นวิธีที่ดีที่ฉันคิดว่าตราบใดที่ PDF นั้นไม่เกินสองสามหน้า
Dan Mantyla

1
หากคุณเปิด PDF โดยใช้ไลบรารี zend คุณสามารถทำforeach($pdf->pages as $page)และสร้างภาพสำหรับแต่ละหน้า
99 ปัญหา - ไวยากรณ์ไม่ใช่หนึ่ง

19

ดูรหัสนี้เพื่อฝัง PDF ใน HTML

<!-- Embed PDF File -->
<object data="YourFile.pdf" type="application/x-pdf" title="SamplePdf" width="500" height="720">
    <a href="YourFile.pdf">shree</a> 
</object>

6
ดูเหมือนจะใช้งานไม่ได้ ฉันมักจะจบลงด้วยหน้าจอสีเทาว่างเปล่าแทนที่จะเป็นไฟล์ pdf แต่เปลี่ยนsrcสำหรับdataในขณะที่ @ คำตอบแกรีไม่ทำงาน
Mottie

1
ฉันใช้ Chrome 44 และใช้งานไม่ได้ ฉันยังลองเปลี่ยนข้อมูลเป็น src
NotJay

type = "application / pdf" แก้ไขปัญหา ทำงานได้ดีในโครเมี่ยม
Gavin Simpson

13

FDViewรวมPDF2SWF (ซึ่งตัวเองเป็นพื้นฐานของxpdf ) กับโปรแกรมดูSWFเพื่อให้คุณสามารถแปลงและฝังเอกสาร PDF ได้ทันทีบนเซิร์ฟเวอร์ของคุณ

xpdf ไม่ใช่โปรแกรมแปลง PDF ที่สมบูรณ์แบบ หากคุณต้องการผลลัพธ์ที่ดีกว่าGhostviewมีความสามารถในการแปลงเอกสาร PDF เป็นรูปแบบอื่นซึ่งคุณสามารถสร้าง Flash Viewer ได้ง่ายขึ้น

แต่สำหรับเอกสาร PDF อย่างง่าย FDView ควรทำงานได้ดีพอสมควร


FDView มีให้ใช้ที่อื่นไหม ดูเหมือนว่า code4net.com จะหายไป
Michael Myers

@Michael ไม่ใช่ว่าฉันจะหาได้ง่าย ฉันจะทิ้งคำตอบนี้เมื่อมีโอกาสที่ใครบางคนจะโฮสต์ fdview อีกที่หนึ่ง
Adam Davis

12

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

ก่อนอื่นเราลอง PDF.jS มันทำงานร่วมกับ Base64 ในโปรแกรมดูสำหรับ Firefox และ Chrome อย่างไรก็ตาม PDF ของเราช้าเกินไปจนไม่สามารถยอมรับได้ IE / Edge ไม่ทำงานเลย

เราจึงลองกับสตริง Base64 ในแท็กวัตถุ HTML สิ่งนี้ไม่ทำงานสำหรับ IE / Edge (อาจเป็นปัญหาเดียวกับ PDF.js) ใน Chrome / Firefox / Safari อีกครั้งไม่มีปัญหา นั่นเป็นเหตุผลที่เราเลือกโซลูชันไฮบริด IE / Edge เราใช้ IFrame และสำหรับเบราว์เซอร์อื่น ๆ ทั้งหมดนั้นคือ object-tag

แน่นอนว่าโซลูชัน IFrame จะใช้งานได้กับ Chrome และ บริษัท ร่วมด้วยเช่นกัน เหตุผลที่ว่าทำไมเราไม่ได้ใช้วิธีนี้สำหรับ Chrome คือแม้ว่ารูปแบบไฟล์ PDF จะปรากฏขึ้นอย่างถูกต้องChrome ทำให้คำขอใหม่ไปยังเซิร์ฟเวอร์เร็วที่สุดเท่าที่คุณคลิกที่ "ดาวน์โหลด" ในหน้าตัวอย่าง pdfHelperTransferData ที่ซ่อนอยู่ในฟิลด์ที่ต้องการ (สำหรับการส่งข้อมูลแบบฟอร์มของเราที่จำเป็นสำหรับการสร้าง PDF) ไม่ได้ถูกตั้งค่าอีกต่อไปเนื่องจาก PDF แสดงใน IFrame สำหรับคุณสมบัติ / ข้อผิดพลาดนี้ดูChrome จะส่งคำขอสองเมื่อดาวน์โหลดไฟล์ PDF (และยกเลิกการหนึ่งของพวกเขา)

ตอนนี้ปัญหาลูกหลาน IE9 และ IE10 ยังคงอยู่ สำหรับสิ่งเหล่านี้เราได้แก้ปัญหาตัวอย่างและเพียงแค่ส่งเอกสารโดยคลิกที่ปุ่มแสดงตัวอย่างเป็นการดาวน์โหลดไปยังผู้ใช้ (แทนที่จะเป็นตัวอย่าง) เราพยายามอย่างมาก แต่ถึงแม้ว่าเราจะได้พบวิธีแก้ปัญหาความพยายามพิเศษสำหรับส่วนเล็ก ๆ ของผู้ใช้จะไม่คุ้มค่ากับความพยายาม คุณสามารถหาวิธีการแก้ปัญหาของเราสำหรับการดาวน์โหลดที่นี่: ดาวน์โหลดไฟล์ PDF โดยไม่ต้องรีเฟรชกับ IFrame

Javascript ของเรา:

var transferData = getFormAsJson()
if (isMicrosoftBrowser()) {
        // Case IE / Edge (because doesn't recoginzie Pdf-Base64 use Iframe)
        var form = document.getElementById('pdf-helper-form');
        $("#pdfHelperTransferData").val(transferData);
        form.target = "iframe-pdf-shower";
        form.action = "serverSideFunctonWhichWritesPdfinResponse";
        form.submit();
 } else {
        // Case non IE use Object tag instead of iframe
        $.ajax({
            url: "serverSideFunctonWhichRetrivesPdfAsBase64",
            type: "post",
            data: { downloadHelperTransferData: transferData },
            success: function (result) {
                $("#object-pdf-shower").attr("data", result);
            }
        })
 }

HTML ของเรา:

<div id="pdf-helper-hidden-container" style="display:none">
   <form id="pdf-helper-form" method="post">
        <input type="hidden" name="pdfHelperTransferData" id="pdfHelperTransferData" />
   </form>
</div>

<div id="pdf-wrapper" class="modal-content">
    <iframe id="iframe-pdf-shower" name="iframe-pdf-shower"></iframe>
    <object id="object-pdf-shower" type="application/pdf"></object>
</div>

วิธีตรวจสอบประเภทเบราว์เซอร์สำหรับ IE / Edge ดูที่นี่: ฉันจะตรวจสอบ Internet Explorer (IE) และ Microsoft Edge ได้โดยใช้ JavaScript ได้อย่างไร ฉันหวังว่าการค้นพบเหล่านี้จะช่วยคนอื่นได้ตลอดเวลา


ฉันขอโทษ แต่ฉันไม่เข้าใจตัวแปร "transferData" มีค่าเท่าใด
เคท

1
สวัสดี @Kate ในกรณีของเราเราสร้าง PDF ตามการป้อนข้อมูลของผู้ใช้ในแบบฟอร์มเว็บของเรา "transferData" มีข้อมูลที่ถูกส่งเป็น JSON ไปยังฟังก์ชั่นการสร้าง PDF ในเว็บ API ฉันได้เพิ่มรหัสบรรทัดเพิ่มเติมสำหรับการชี้แจง
George Maharis

10
  1. สร้างคอนเทนเนอร์เพื่อเก็บ PDF ของคุณ

    <div id="example1"></div>
  2. บอกPDFObjectที่ PDF จะฝังและตำแหน่งที่จะฝัง

    <script src="/js/pdfobject.js"></script>
    <script>PDFObject.embed("/pdf/sample-3pp.pdf", "#example1");</script>
  3. คุณสามารถเลือกใช้ CSS เพื่อระบุสไตล์การมองเห็นรวมถึงมิติเส้นขอบระยะขอบ ฯลฯ

    <style>
    .pdfobject-container { height: 500px;}
    .pdfobject { border: 1px solid #666; }
    </style>

แหล่งที่มา: https://pdfobject.com/


นี่เป็นทางออกที่ดีมากและทำงานได้ดีเมื่อใช้ร่วมกับสไตล์การบูต ทุกอย่างขึ้นอยู่กับองค์ประกอบ bootstrap อื่น ๆ
netfed

คุณลองกับไฟล์ blob หรือไม่ ฉันใช้สิ่งนี้ด้วยpdf.output('bloburl')จาก lib jspdf แต่ดูเหมือนว่าจะไม่ทำงานบน IE11
Hoang Tran Son

9

คุณสามารถใช้ตำแหน่งสัมพัทธ์ของไฟล์ PDF ที่บันทึกไว้เช่นนี้:

example1

<embed src="example.pdf" width="1000" height="800" frameborder="0" allowfullscreen>

example2

<iframe src="example.pdf" style="width:1000px; height:800px;" frameborder="0" allowfullscreen></iframe>


8

Scribd ไม่ต้องการให้คุณโฮสต์เอกสารบนเซิร์ฟเวอร์อีกต่อไป หากคุณสร้างบัญชีกับพวกเขาเพื่อให้คุณได้รับรหัสผู้เผยแพร่ ใช้รหัส JavaScript สองสามบรรทัดเพื่อโหลดไฟล์ PDF ที่เก็บไว้ในเซิร์ฟเวอร์ของคุณเอง

สำหรับรายละเอียดเพิ่มเติมโปรดดูที่เครื่องมือสำหรับนักพัฒนา


1
คุณสามารถโพสต์ลิงค์อื่นเพื่อแสดงวิธีการนี้ได้อย่างไร ไม่ชัดเจนจากลิงก์ที่คุณโพสต์
SuperElectric

ดูเหมือนว่าพวกเขาได้อัปเดตเว็บไซต์และเปลี่ยนหน้านี้แล้ว ฉันคิดว่าหน้านี้มีเนื้อหาที่ฉันอ้างถึงในโพสต์ต้นฉบับของฉัน: scribd.com/developers/api?method_name=Javascript+API
Bjorn

ฉันหวังว่าฉันจะชอบสิ่งนี้มากกว่าหนึ่งครั้งมันทำงานได้อย่างสมบูรณ์แบบ เลื่อนไปที่ด้านล่างของเว็บไซต์และคลิก API เพื่อดูตัวอย่าง
Rocco The Taco

1
การสมัครถูกปิดเพื่อรับ Scribd
แลนซ์ฟิชเชอร์


4

PdfToImageServletโดยใช้convertคำสั่งของ ImageMagick

ตัวอย่างการใช้งาน: <img src='/webAppDirectory/PdfToImageServlet?pdfFile=/usr/share/cups/data/default-testpage.pdf'>


4

นี่คือวิธีที่ฉันทำกับAXIOSและ Vue.js:

        axios({
            url: `urltoPDFfile.pdf`,
            method: 'GET',
            headers: headers,
            responseType: 'blob'
        })
        .then((response) => {
            this.urlPdf = URL.createObjectURL(response.data)
        })
        .catch((error) => {
            console.log('ERROR   ', error)
        })

เพิ่ม urlPDF แบบไดนามิกไปยัง HTML:

<object width='100%' height='600px' :data='urlPdf' type='application/pdf'></object>

3

หนึ่งในตัวเลือกที่คุณควรพิจารณาคือNotable PDF
มันมีแผนฟรียกเว้นว่าคุณกำลังวางแผนที่จะทำงานร่วมกันแบบเรียลไทม์บน pdf

ฝังสิ่งต่อไปนี้iframeใน html ใด ๆ และเพลิดเพลินไปกับผลลัพธ์:

<iframe width='1000' height='800' src='http://bit.ly/1JxrtjR' frameborder='0' allowfullscreen></iframe>

2

ในการสตรีมไฟล์ไปยังเบราว์เซอร์โปรดดูคำถามเกี่ยวกับสแต็คโอเวอร์โฟลว์วิธีสตรีมไฟล์ PDF เป็นไบนารี่ไปยังเบราว์เซอร์โดยใช้. NET 2.0 - โปรดทราบว่าหากมีการเปลี่ยนแปลงเล็กน้อย หรือสร้างขึ้นแบบไดนามิก

จากที่กล่าวมาบทความ MSDN ที่อ้างถึงนั้นมีมุมมองที่ค่อนข้างเรียบง่ายของโลกดังนั้นคุณอาจต้องการอ่านสตรีม PDF ไปยังเบราว์เซอร์ผ่าน HTTPS ได้อย่างประสบความสำเร็จรวมถึงส่วนหัวบางส่วนที่คุณต้องจัดหา

การใช้วิธีการนี้ iframe น่าจะเป็นวิธีที่ดีที่สุด มีเว็บฟอร์มหนึ่งรายการที่สตรีมไฟล์จากนั้นวาง iframe ไว้ในอีกหน้าพร้อมกับsrcตั้งค่าแอตทริบิวต์เป็นแบบฟอร์มแรก


4
@downvoter สนใจที่จะอธิบายว่าทำไมคุณถึงไม่ยอมเปิดเผยคำตอบอายุ 10 ปีโดยไม่ระบุชื่อ
GalacticCowboy

1
  1. สร้างหยดของอินพุต PDF ไบต์
  2. ใช้iframeและPDF.js ที่ได้รับการแก้ไขด้วยวิธีแก้ไขปัญหาข้ามเบราว์เซอร์นี้

URI สำหรับ iframe ควรมีลักษณะดังนี้:

/viewer.html?file=blob:19B579EA-5217-41C6-96E4-5D8DF5A5C70B

ตอนนี้ FF, Chrome, IE 11 และ Edge ทั้งหมดจะแสดง PDF ในวิวเวอร์ใน iframe ที่ส่งผ่าน URI หยดมาตรฐานใน URL


0

หากคุณไม่ต้องการโฮสต์ PDF.JS ด้วยตัวคุณเองคุณสามารถลองใช้DocDroidได้ มันคล้ายกับโปรแกรมดู PDF ของ Google ไดรฟ์ แต่อนุญาตให้ใช้แบรนด์กำหนดเองได้


0

ฉันต้องดูตัวอย่าง PDF ด้วย React ดังนั้นหลังจากลองใช้ไลบรารีหลาย ๆ ตัวโซลูชันที่ดีที่สุดของฉันคือดึงข้อมูลและเอามันออกมา

const pdfBase64 = //fetched from url or generated with jspdf or other library

  <embed
    src={pdfBase64}
    width="500"
    height="375"
    type="application/pdf"
  ></embed>

-7

ฉันพบว่ามันใช้งานได้ดีและเบราว์เซอร์จัดการกับมันใน Firefox ฉันยังไม่ได้ตรวจสอบ IE ...

<script>window.location='url'</script>

สิ่งนี้ควรจะบรรลุ ฉันไม่เห็นว่าจะตอบคำถามได้อย่างไร
TRiG

เมื่อฉันฝัง PDF ใน HTML ของฉันฉันพบว่าวิธีที่ดีที่สุดคือการมีลิงค์ไปยังเอกสารนี้ เช่น <a href=" server1.network/trifold_JonesChiro.pdf "target='_blank'> ไคลเอ็นต์พอร์ทัล Trifold (ตัวอย่าง) </a> บางครั้งก็เป็นคำตอบที่สะอาดเพื่อเปิดหน้าและแสดงรูปแบบไฟล์ PDF VS tring เพื่อวางไว้ ใน html นอกจากนี้ยังอนุญาตให้ไฟล์ PDF เปิดอยู่ในแท็บ
Wynn

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