【问题标题】:PDFJs Viewer.html into a divPDFJs Viewer.html 变成一个 div
【发布时间】:2015-09-13 21:00:48
【问题描述】:

有谁知道 pdf.js (http://mozilla.github.io/pdf.js/web/viewer.html) 中的 viewer.html 是否可以放在 <div> 中?

或者更好的是,转换为 AngularJs 指令(我知道 Angular 有几个 pdfjs 指令,但没有一个具有 viewer.html 的质量)。

【问题讨论】:

  • This one 正在将 pdfjs 查看器集成到一个角度指令中(但相当糟糕,恕我直言)。同时,您是否碰巧找到了替代方案?

标签: javascript angularjs html pdfjs


【解决方案1】:

以下示例使用 pdf.js 提供的 javascript api 将 pdf 加载到 div 中。你也可以看到the fiddle

// If absolute URL from the remote server is provided, configure the CORS
// header on that server.
var url = '//cdn.mozilla.net/pdfjs/helloworld.pdf';

// Loaded via <script> tag, create shortcut to access PDF.js exports.
var pdfjsLib = window['pdfjs-dist/build/pdf'];

// The workerSrc property shall be specified.
pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';

// Asynchronous download of PDF
var loadingTask = pdfjsLib.getDocument(url);
loadingTask.promise.then(function(pdf) {
  console.log('PDF loaded');
  
  // Fetch the first page
  var pageNumber = 1;
  pdf.getPage(pageNumber).then(function(page) {
    console.log('Page loaded');
    
    var scale = 1.5;
    var viewport = page.getViewport(scale);

    // Prepare canvas using PDF page dimensions
    var canvas = document.getElementById('the-canvas');
    var context = canvas.getContext('2d');
    canvas.height = viewport.height;
    canvas.width = viewport.width;

    // Render PDF page into canvas context
    var renderContext = {
      canvasContext: context,
      viewport: viewport
    };
    var renderTask = page.render(renderContext);
    renderTask.then(function () {
      console.log('Page rendered');
    });
  });
}, function (reason) {
  // PDF loading error
  console.error(reason);
});
#the-canvas {
  border:1px solid black;
}
<script src="//mozilla.github.io/pdf.js/build/pdf.js"></script>

<h1>PDF.js 'Hello, world!' example</h1>
<div>
<canvas id="the-canvas"></canvas>
</div>

【讨论】:

【解决方案2】:

像这样将你的 pdf 文件的源代码放在 iframe 中:

<div><iframe src="/pdfjs/viewer.html/{src of PDF file}" style="position: relative;   top: 0;  bottom: 0; left: 0;   width: 100%;   height: 700px;  border: 0"></iframe></div>

也许对你有帮助

【讨论】:

    【解决方案3】:

    您绝对可以将 viewer.html 放在 &lt;div&gt; 中。

    the source 开头并换行&lt;div id="outerContainer"&gt;

    在您自己的 &lt;div&gt; 中,然后您可以根据自己的喜好设置样式:

    <div id="myContainer">
        <div id="outerContainer">
    
          <div id="sidebarContainer"> 
          </div>  <!-- sidebarContainer -->
    
          <div id="mainContainer">
          </div> <!-- mainContainer -->
    
          <div id="overlayContainer" class="hidden">
          </div>  <!-- overlayContainer -->
    
        </div> <!-- outerContainer -->
    </div>
    

    请注意,使宽度小于大约 800 像素会挤压工具栏项。

    【讨论】:

    • 在您的回答中,指向源的链接返回 404
    猜你喜欢
    • 2010-10-22
    • 2023-02-16
    • 2019-07-06
    • 2016-04-27
    • 2015-08-18
    • 2019-07-11
    • 2022-07-15
    • 1970-01-01
    • 2015-06-05
    相关资源
    最近更新 更多