Как я могу сохранить визуализированный pdf (сгенерированный из html) на свой компьютер?

Я использую нижеприведенный API для создания PDF-файла из URL-адреса:

https://url-to-pdf-api.herokuapp.com/api/render?url=http://google.com

Мне нужен php-код, который напрямую загружает сгенерированный PDF-файл. ниже то, что я пробовал:

a href="https://url-to-pdf-api.herokuapp.com/api/render?url=http://google.com" download="download"

но файл не скачивается!

ожидаемый результат должен быть загруженным файлом pdf.

🤔 А знаете ли вы, что...
JavaScript позволяет создавать расширения для веб-браузеров, улучшая их функциональность.


234
3

Ответы:

вы можете использовать

<form method = "get" action = "https://url-to-pdf-api.herokuapp.com/api/render?url=http://google.com">
   <button type = "submit">Download!</button>
</form>

кажется, вы не используете одно и то же происхождение, и это могло вызвать проблему.

Пожалуйста, используйте относительный URL, а не абсолютный URL.

например: скачать

Этот атрибут работает только для URL-адресов того же происхождения.


Решено

ваш html

<a href = "downloader.php">Download pdf</a>

вы можете использовать с сохранением php с помощью downloader.php

 $url = 'https://url-to-pdf-api.herokuapp.com/api/render?url=http://google.com';

    set_time_limit(0);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $r = curl_exec($ch);
    curl_close($ch);
    header('Expires: 0'); // no cache
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
    header('Cache-Control: private', false);
    header('Content-Type: application/force-download');
    header('Content-Disposition: attachment; filename = "' . 'x.pdf' . '"');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: ' . strlen($r)); // provide file size
    header('Connection: close');
    echo $r;