Как скачать pdf, созданный dompdf WinHttpRequest после запроса autohotkey

Ниже приведен мой код autohotkey для отправки WinHttpRequest на php для загрузки pdf-файла из потоковой функции PHP, созданной dompdf.

AutoHotkey:

whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("POST", "https://spm/htmltopdf.php",false)
whr.SetRequestHeader("Content-Type","application/pdf")
whr.SetRequestHeader("Content-Disposition","attachment")
whr.SetRequestHeader("filename","file.pdf'")
whr.Send("html=" . %html%)
version := whr.ResponseText
FileAppend, %version%, *d:\cc.pdf

PHP:

<?php
header('Access-Control-Allow-Origin: *'); //to get data from firefox addon
require_once "dompdf/dompdf_config.inc.php";
$dompdf = new DOMPDF();
$html = $_POST["html"];
$dompdf->load_html($html);
$dompdf->render();
//$output = $dompdf->output();
//file_put_contents("output/file.pdf", $output);
$dompdf->stream("file.pdf");
?>

Я мог бы получить PDF путем прямой навигации из браузера с ПОЛУЧИТЬ метод с протоколом http. Но для этого скрипта autohotkey ничего не происходит. И это выдает ошибку «Центр сертификации недействителен или неверен».

1

Решение

Попробуйте что-то вроде этого … Я думаю, вы путаете заголовки сервера с заголовками клиента …

АХК

whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("POST", "https://spm/htmltopdf.php",false)
whr.SetRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
whr.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
whr.Send("html=" . html)
version := whr.ResponseText
FileAppend, %version%, *d:\cc.pdf

PHP

<?php
header('Access-Control-Allow-Origin: *'); //to get data from firefox addon
header('Content-Type: application/pdf');
header('Content-Disposition: attachment');
header('filename: file.pdf');
require_once "dompdf/dompdf_config.inc.php";
$dompdf = new DOMPDF();
$html = $_POST["html"];
$dompdf->load_html($html);
$dompdf->render();
//$output = $dompdf->output();
//file_put_contents("output/file.pdf", $output);
$dompdf->stream("file.pdf");
?>

или так как вы сказали, что ваш браузер смог получить его через GET и через http, попробуйте это:

whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", "http://spm/htmltopdf.php",false)
whr.SetRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
whr.Send()
version := whr.ResponseText
FileAppend, %version%, *d:\cc.pdf

Или перейдите с UrlDownloadToFile в первую очередь:

UrlDownloadToFile, http://spm/htmltopdf.php, file.pdf
1

Другие решения

Других решений пока нет …