Как использовать laravel snappyPDF на локальном хосте: 8000/storage/file.html?

В настоящее время я пытаюсь создать PDF-файл из html-файла с помощью snappy laravel. Когда я вызываю свой метод в pdf, мой сервер зависает и выдает ошибку тайм-аута 60 секунд. В этой проблеме github я прочитал, что wkhtmltopdf не например, используя порт 8000, мне было интересно, есть ли какие-либо обходные пути для этого, я попытался напечатать google.com в формате pdf, и он работает...

Также я не могу распечатать pdf из содержимого моего html-файла (содержимое хранится в переменной), я думаю, это из-за файлов css, вот пример того, что я делаю:

$snappy->generate('http:localhost:8000/storage/file.html', $fileName.'.pdf');

вот содержимое file.html.

<div class="pdfContainer">
    <meta charset="UTF-8">
    <link href="http://localhost:8000/css/pdfpreview.css" rel="stylesheet" type="text/css">
    <div class="headerPreview">
        <img src="http://localhost:8000/image/logo.png">
        <div class="soumissionInfoContainer">
            <div>
                <strong>Soumission # </strong>
                <strong>Projet :</strong>
                <strong>Date : </strong>
            </div>
            <div>
                <p> S1-17</p>
                <p>Garage de béton</p>
                <p> 20-02-2017</p>
            </div>
        </div>
        <div class="infoComp">
            <p>2236, rue de l'Ardoise, Jonquière (QC) G8A 0A5</p>
            <p>Saguenay : 418-550-5382 Alma : 418-719-0588</p>
            <p>R.B.Q.: 5670-0578-01</p>
        </div>
        <h2>SOUMISSION</h2>
        <div class="clientInfoContainer">
            <div style="width:70px;"><p style="font-size: 12px;text-align: right">Destinataire: </p>
            </div>
            <div>
                <p>Jean Tremblay</p>
               <p>1010 St Hubert
                    , G7H 2B1</p>
                <p>418 555 5555</p>
            </div>
    </div>
    </div>
<table class="previewTable" id="previewTable">
    <tbody>
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <th>Quantité</th>
        <th>Description</th>
        <th>Prix</th>
    </tr>
    <tr>
        <td></td>
        <td>
            <textarea id="title1" onchange="setInnerHTML('title1')"
                      style="font-size: 2em; background: rgba(0, 0, 0, 0) none repeat scroll 0% 0%; height: 99px;">Excavation lol</textarea>
        </td>
        <td><textarea id="total1" onchange="setInnerHTML('total1')"
                      style="background: rgba(0,0,0,0); width: 100px; height: 70px">919.51</textarea>
        </td>
    </tr>
    <tr>
        <td></td>
        <td>
            <textarea id="desc1" onchange="setInnerHTML('desc1')" style="resize: horizontal; width: 553px;" rows="5"
                      cols="50" title="">                            this is working</textarea>
        </td>
    </tr>
    </tbody>
</table>
<script>
    function setInnerHTML(id) {
        var area = document.getElementById(id);
        area.innerHTML = area.value;
    }
</script>
<textarea class="totalSoumission" id="totalSoumission" onchange="setInnerHTML('totalSoumission')">TOTAL AVANT TAXES: 919.51 $</textarea>
    <div class="ligne_signature">
        <p>À la signature, ce devis est bon pour travaux et valide 90 jours</p>
    </div>
</div>

главное, что меня беспокоит, это то, что когда я получаю сообщение об ошибке вывода, я копирую и вставляю точную команду и вставляю ее в свой терминал, и pdf создается менее чем за секунду, так что это означает, что действительно есть проблема с моим быстрое использование pdf...


person MathieuAuclair    schedule 12.02.2018    source источник


Ответы (1)


Причина сбоя snappy заключалась в том, что wkhtmltopdf не любит использовать текущие ресурсы хоста. Вы ничего не можете получить с вашего хоста при использовании wkhtmltopdf. Вам нужно преобразовать свое изображение в URI, чтобы вы не извлекали их из общедоступного каталога, и вам нужно вставить свой css в свой html, ссылка этого не сделает. Для себя я использовал Blade, чтобы отделить css от моей страницы. Основная причина в моем случае, почему это не сработало, заключалась в том, что я пытался получить лист ccs с 127.0.0.1:8000 (мой текущий хост).

Проблема:

 <link href="http://localhost:8000/css/pdfpreview.css" rel="stylesheet" type="text/css">

Решение:

<style>
...
</style>
person MathieuAuclair    schedule 14.02.2018