Конвертировать API версии 2 DOCX в PDF
Я успешно установил соединение с версией 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>
Ниже приведен код, который я пытаюсь использовать для версии 2. Он записывает файл в правильную папку, но это не читаемый 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 ответа
По умолчанию ConvertAPI версии 2 возвращает JSON. Вам необходимо декодировать файл с помощью декодера Base64.
Чтобы сэкономить время отклика и пропускную способность, лучше добавить accept=application/octet-stream
заголовок к запросу, чтобы получить мгновенный двоичный ответ без какого-либо декодирования.
Используя предложения в комментариях и ответ Томаса, вот мой окончательный код. Сначала десериализуется ответ от 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>