将API版本2 docx转换为PDF

时间:2018-04-04 01:02:24

标签: coldfusion coldfusion-10 convertapi

我使用以下代码成功连接到版本1:

    <cfhttp method="post" 
        url="http://do.convertapi.com/Word2Pdf" 
        result="convertAttempt" 
        path="#arguments.path#" 
        file="#arguments.fileToDestination#"
    >
       <cfhttpparam type="formfield" name="ApiKey" value="xxxxxxx" >
       <cfhttpparam type="file" file="#arguments.path#/#arguments.fileToConvert#" name="File" >
   </cfhttp>

以下是我尝试用于{{3}}的代码。它将文件写入正确的文件夹,但它不是可读的PDF。我认为它与base64有关,但不确定。无论如何,希望有另一个ColdFusion用户帮助我。然后,我们希望在convertAPI站点上获取代码示例以帮助其他人。

<cfhttp method="post" 
    url="http://v2.convertapi.com/docx/to/pdf?Secret=mysecret" 
    result="convertAttempt"
    path="#arguments.path#" 
    file="#arguments.fileToDestination#"
>   

    <cfhttpparam type="file" file="#arguments.path##arguments.fileToConvert#" name="File" >
</cfhttp>

2 个答案:

答案 0 :(得分:2)

默认情况下,ConvertAPI版本2返回JSON。您需要使用Base64解码器解码文件。

为了节省响应时间和带宽,最好将accept=application/octet-stream标头添加到请求中,以获得即时二进制响应而无需任何解码。

答案 1 :(得分:2)

使用评论和Tomas's answer中的建议,这是我的最终代码。它首先反序列化JSON的响应。然后将pdf从base64解码为二进制。最后,将二进制pdf文件保存到磁盘。

<cfhttp method="post" url="http://v2.convertapi.com/docx/to/pdf?Secret=your-secret" result="convertAttempt">    
   <cfhttpparam type="file" file="#arguments.path##arguments.fileToConvert#" name="File" >
</cfhttp>

<cfset FileResult = deserializeJSON(convertAttempt.FileContent) />

<cfif isDefined("fileResult.Code")>
    <!--- Failed --->
<cfelse>
    <cfset FileWrite("#arguments.path##arguments.fileToDestination#", BinaryDecode(FileResult.Files[1].FileData, "base64"))>
</cfif>