【问题标题】:Render PDF from buffer using Node.js and JavaScript使用 Node.js 和 JavaScript 从缓冲区渲染 PDF
【发布时间】:2019-07-30 07:04:37
【问题描述】:

我在后端有我的files 对象:

[{ Id: 3,
  UserId: 7,
  FileType: 'application/pdf',
  FileContent:
   <Buffer 25 50 44 46 2d 31 2e 33 0d 0a 25 e2 e3 cf d3 0d 0a 0d 0a 31 20 30 20 6f 62 6a 0d 0a 3c 3c 0d 0a 2f 54 79 70 65 20 2f 43 61 74 61 6c 6f 67 0d 0a 2f 4f ... >,
  FileName: '1',
  UserUploadId: 7 },
...]

我正在将此对象发送到视图:

res.render('dashboard/files/index',{'title': 'My files', 'my_files' : files})

在 HTML 上,我使用 handlebarsjs 呈现一个表格,其中包含每个文件的一行和一个按钮,该按钮执行接收文件 Id 作为唯一参数的函数

<table class="table">
    <thead class="thead-dark">
        <tr>
            <th scope="col">UserId</th>
            <th scope="col">View</th>
        </tr>
    </thead>
    <tbody>
        {{#each my_files}}
        <tr>
            <td>{{this.UserId}}</td>
            <td>
                <button onclick="viewPdf({{this.Id}})"></button>
            </td>
        </tr>
        {{/each}}
    </tbody>
</table>

在同一个文档中,使用 JavaScript,我试图获取对象的 FileContent 属性,但为此我需要在数组 my_files 中查找文件,通过 Id 参数搜索。

<script>
    function viewPdf(Id){
        var found_file = my_files.find(function(element) {
            return element.Id == Id;
        });

        console.log(found_file)
    }
</script>

但是我得到了这个错误输出:

未捕获的 ReferenceError: my_files 未定义 在 viewPdf (......:465) 在 HTMLButtonElement.onclick

【问题讨论】:

  • my_files 似乎没有声明,尝试在函数if (typeof my_files === "undefined")中获取数据
  • typeof my_files -> "undefined"
  • 在 if 语句之后对函数进行服务器调用或将 my_files 声明为全局变量
  • 奇怪的是:表格正在使用my_files 信息呈现,但是当我单击按钮并尝试在数组上通过Id 查找时,my_files 似乎未定义
  • 如果变量在函数或对象的范围内,你不能仅仅通过“my_files”来检索它。如果您可以找到 my_files 的存储位置,则可以在之后检索它。如果您没有看到 my_files 在哪里,请将其传递给参数函数或进行服务器调用;)

标签: javascript node.js pdf handlebars.js


【解决方案1】:

所以,

JavaScript 运行服务器端和浏览器端是不同的。在浏览器中找不到声明的服务器端变量,反之亦然。

一种在服务器和客户端之间共享变量的方法:

function viewPdf(Id){
    $.ajax('/getFiles', {
        success:function(my_files){
            // put logic here
        }
    })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多