【问题标题】:Send compressed PDF file contents from client side to backend server将压缩的 PDF 文件内容从客户端发送到后端服务器
【发布时间】:2020-07-28 10:53:03
【问题描述】:

我正在使用ilovepdf 来压缩在客户端上传的 pdf 文件。我得到压缩文件内容作为响应。

理想情况下我想要的是 -:

  • 在客户端制作一个文件(PDF),文件内容收到响应。
  • 将文档附加到文件上传 DOM 元素。
  • 将文件提交到后端。

但看起来禁止在客户端(浏览器)读取/写入包含内容的文件。所以以上无法实现。 我还尝试仅将 压缩文件内容 附加到 DOM 元素并使用 formdata 提交到后端,但是,当我使用后端收到的内容保存文件时,我发现文件已损坏或无法打开。 p>

触发以下代码从 ilovepdf 服务器下载并上传到我的服务器。

function downloadPDF() {
  $.ajax({
    type: 'GET',
    headers: {
      'Authorization': 'Bearer ' + token
    },
    url: "https://" + server + "/v1/download/" + task,
    success: function(response) {
      var form = new FormData();
      form.append("file", response);
      $.ajax({
        type: 'POST',
        url: "/properties/compressed",
        processData: false,
        contentType: false,
        data: form,
        success: function(response) {
          console.log("sent to server")
        }
      });
    }
  });
}

【问题讨论】:

  • 1) 使用JSPDF 2 & 3) 创建FormData 对象和upload the PDF file using AJAX。您必须为此使用 AJAX,因为出于安全原因,您无法将数据附加到文件输入控件。您可以对 PDF 文件进行 base64 编码并将其发送到隐藏的输入中,但这很丑陋,并且需要您在服务器上接收到文件数据时重新构建它。
  • 尝试使用formdata并使用ajax上传,仍然有损坏的pdf文件。
  • 那么请出示您的代码,以便我们帮助您调试
  • 在问题中编辑和添加代码
  • 那是你的编辑。 form.append("file", response); 行中的 response 是什么?我想这是“ilovepdf”的解压缩输出?如果是压缩文件,那就是问题所在。

标签: javascript jquery ruby-on-rails ruby pdf


【解决方案1】:

您可以使用 wicked_pdf gem 从您的服务器生成 PDF,并在 base64 中对其进行编码,然后将 base64 编码的字符串返回给客户端服务器,在您的客户端服务器上,您可以使用此代码下载PDF:

window.downloadPDF = function downloadPDF() {

    var dlnk = document.getElementById('dwnldLnk');
    dlnk.href = pdf; <this would be your return encoded string in response>

    dlnk.click();


    alert('toma');
}

【讨论】:

    猜你喜欢
    • 2021-02-15
    • 2015-05-02
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多