如何在Javascript中创建PDF,然后使用该数据在ColdFusion中重新创建它?

时间:2017-09-13 15:54:03

标签: javascript pdf amazon-s3 coldfusion

原谅我缺乏代码,但我在生产环境中工作很多。如果需要,我可以提供更具体的例子,但我将在这里解释基本情况。

我正在使用一个名为PdfMake的库(这非常棒,如果你需要的话,可以在JS中制作pdf),可以动态制作动态PDF。

现在我需要将PDF放入S3存储桶,但我们的堆栈目前依赖于ColdFusion。幸运的是,PdfMake有一个方便的方法将pdf数据转换为Base64,ColdFusion有一个方便的功能,可以将Base64转换为二进制。

所以我将base64发送到我的服务器,将其转换为二进制文件,制作一个新的coldfusion pdf并像这样读取它(fileData是一个base64编码的字符串)

public function upload_pdf(string fileName, any fileData){
    var myPdf = new pdf();
    var binary = ToBinary(arguments.fileData);
    myPdf.read( source=binary, name="fileSource");
}

出于某种原因,此操作失败了。我经常得到一个错误,上面写着"文档没有类型字典的目录",这是非常神秘的,当我搜索它时没有带来任何有用的结果。有时,在没有改变任何内容的情况下,我得到的错误是“重建文档仍然没有预告片”#34;从谷歌搜索来看,预告片似乎与PDF有关。

直觉上我认为这会起作用,因为base64和binary是多种类型的编码。但是,我甚至不知道如何开始修复或诊断这个问题。我可能会开始寻找另一种解决方案,但我很想知道这里发生了什么,所以如果有人有任何想法,我会讨论一下。

对于我解决过这个问题的任何好读者,这是工作代码:

public function upload_pdf(string fileName, string fileData){
    var myPdf = new pdf();
    var binary = decodeBinary(Replace(arguments.fileData, " ", "+", "ALL"));
    myPdf.setSource(binary);
}

0 个答案:

没有答案