0

SFDC 开发人员在这里。我创建了一个 VF 页面,它接受帐户 ID 并以表格形式在 VF 页面上显示一些信息。

我需要在单击按钮时使用不同的帐户 ID 多次调用此页面并将其中的表格下载为 zip 中的 PDF/文本文件。我正在考虑使用 JSZip 将所有 PDF/文本文件下载为一个 zip。

我使用 getContentAsPDF 在变量中获得了此 VF 页面的 Blob 值。

基本上我需要知道如何为每个帐户表使用这个 Blob 值并将其放在单独的文件中,将这些文件下载一个 Zip。任何想法如何进行?

编辑1:

所以在下面的代码中,我们可以看到我们在控制器中生成了一个 Blob 列表。单击 VF 页面按钮时,我将 Blob 列表作为参数发送到 JavaScript 函数。在该功能中,我试图将每个 blob 添加到 zip 并下载。但是我没有下载任何东西。

顶点代码:

CkIds = returnCommaSeparatedString(setOFCommKitID);
        pr = New PageReference('/apex/PDFPage?id=' + iICPRec +'&CKIds='+CkIds);
        pdf = pr.getContentAsPDF();
        lstOfBlob.add(pdf);

JavaScript 代码:

   var IdString;
    var ArrayOfBlob = []; 
    function CallMe(TempVar, VarTemp){
        alert(TempVar);alert(VarTemp);
        IdString = TempVar;
        ArrayOfBlob = VarTemp;
        var zip = new JSZip();
        for (var i=0; i < ArrayOfBlob.length; i++)
        {
            zip.file('Test',ArrayOfBlob[0]);
        }
        var blobLink = document.getElementById('CustomLink');
        blobLink.download = "CommunicationKit.zip";
        blobLink.href = window.URL.createObjectURL(zip.generate());
        blobLink.click();
4

1 回答 1

0

这看起来像是类型的问题,您应该在 js 控制台中查找错误。

  • zip.file('Test',ArrayOfBlob[0])file()不接受(尚未)blob,您需要一个 FileReader 来获取每个文件的内容(并在生成结果之前等待所有文件)。
  • URL.createObjectURL(zip.generate())generate()会给你一个base64字符串,你应该generate({type:"blob"})在你的情况下使用。
于 2015-08-11T10:21:57.557 回答