javascript - Django-JS : How to display the first PDF page as cover

标签 javascript jquery ajax pdf pdf.js

我想改进我的脚本,以便当用户在模板上的对象上设置移动时为每个对象设置 PDF 封面。

实际流程:

到目前为止,我可以根据带有一些附加字段的对象上传.pdf.epub文件格式:title语言 ...

PDF 存储在我项目的 media 目录中。

在主页中,我显示所有对象,如下所示:

enter image description here

正如您在每个出版物的末尾看到的那样,有一个字形,到目前为止,它可以在另一个选项卡中显示对象 PDF 文件。

预期想法:

我想知道是否有办法显示 PDF 文件的窗口。更好的做法是仅显示第一个 PDF 页面,以便为每个对象定义封面页。

在我的 HTML 文件中,我有这一行可以将我的 PDF 显示到另一个选项卡中:

<td class="col-md-1"><a id="download-image_{{ document.id }}" href="http://localhost:8000/media/{{ document.upload }}"><span class="glyphicon glyphicon-blackboard"></span></a></td>

我假设我需要处理这一行并从 pdf.js 添加 javascript,以便仅获取第一页并将其显示为图片。

我阅读了 PDF.js 文档,并且希望获得一些帮助来显示我的第一个 PDF 页面。 PDF.js 中的文档和示例多种多样,但我不知道如何做到这一点。

编辑:

感谢 Kedas mendi,这就是我根据他的回答得到的。但我无法克服显示我的 pdf。

在我的 html 文件中,我有一个表格:

<script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>
<script src="../static/freepub/js/customPdf.js"></script>

<table>
    <td class="col-md-1">
        <canvas class="the-canvas"><a href="http://localhost:8000/media/{{ document.upload }}"><span class="glyphicon glyphicon-blackboard"></span></a></canvas>
    </td>
</table>

还有我的 customPdf.js 文件:

pdfjsLib.getDocument('http://localhost:8000/media/media/loremipsum.pdf').then(function(pdf) {
  pdf.getPage(1).then(function(page) {
    var scale = 1.5;
    var viewport = page.getViewport(scale);

    var canvas = document.getElementById('the-canvas');
    var context = canvas.getContext('2d');
    canvas.height = viewport.height;
    canvas.width = viewport.width;

    var renderContext = {
      canvasContext: context,
      viewport: viewport
    };
});
  page.render(renderContext);
});

到目前为止,getDocument() 指向一个特定的 pdf 文件,但最后它将是一个 django 变量。

无论如何,我不显示任何 PDF 文件

最佳答案

好吧,您可以按照评论中提到的方式执行以下操作:

Pdf.js 那么,

  • 为要显示的页面创建模板 html

  • 在 html 代码中添加以下行:

 <script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>
<script src="customPdf.js">

  • 创建一个 Canvas 来渲染您的 pdf 文件:

<canvas id="the-canvas"></canvas>

  • 创建一个名为“customPdf.js”的新文件并添加接下来的内容
  • 用它来加载 pdf 对象

pdfjsLib.getDocument('/media/{{ document.upload }}').then(function(pdf) {
  // you can now use *pdf* here
});

  • 您还可以调整设置,以您想要的样式显示它:

var scale = 1.5;
var viewport = page.getViewport(scale);

var canvas = document.getElementById('the-canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;

var renderContext = {
  canvasContext: context,
  viewport: viewport
};

  • 终于可以渲染页面了

page.render(renderContext);

基本上,这就是您想要渲染第一页的方法,但请参阅documentation了解更多详情。

关于javascript - Django-JS : How to display the first PDF page as cover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52480677/

相关文章:

javascript - 如何通过php和ajax将html添加到返回的json对象

javascript - jquery ajax : object in data object

ajax - Chrome 无法 POST 到 https,但 GET 使用自签名的 SSL 证书?

javascript - 为什么我的表单在 ng-repeat 内部时不起作用?

javascript - 在非 unicode 网站上使用 JQuery AJAX

javascript - 我无法实时更新数据

JQuery:如何使用超时脚本来检测页面滚动?

javascript - 如何修复 javascript/html/jquery 中表格的标题

java - XMLHttpRequest POST 之后下载 png 文件

javascript - 拖动功能不适用于启动单击的第一个选择