У меня есть блок кода PHP, который передает URL к плагину под названием wkhtmltopdf
и рендерит PDF страницы, используя webkit.
Мой код прекрасно работает в IE и Firefox, которые являются основными двумя, которые мы используем, но некоторые из наших руководителей используют Safari, и код не запускается.
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST'){
// DEVELOPMENT CODE
$newPDF = md5($qid . time()). '.pdf';
$current = getcwd() . '\\exports\\';
$WshShell = new COM("WScript.Shell");
$WshShell->exec($current.'makeWKPDF.bat "'.$fileURL.'&ref=nomenu" '.$newPDF);
// had to add this because shell isnt waiting for the file to finish before continuning
sleep(10);
// get the contents of the new PDF file
$pdf = file_get_contents($toolURL."exports/".$newPDF);
// push the PDF File to the browser
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="Initiative '.$intID.' Export.pdf"');
// push the PDF to the browser
echo $pdf;
// delete the PDF
@unlink($current.$newPDF);
}
Мое первое и единственное предположение на данный момент заключается в том, что Safari не поддерживает new COM
Я создаю?
Может ли кто-нибудь подтвердить, так ли это и возможный обходной путь; делал какие-то исследования и ничего не могу найти по этому поводу.
ОБНОВИТЬ
Я также обнаружил, что это не работает в IE8. Я думаю, что обе проблемы указывают на то, как PHP создает COM-объект, но я не уверен в другом способе заставить это работать.
Задача ещё не решена.
Других решений пока нет …