Laravel 5.4 pdf generate:下载pdf后,在dompdf中找不到图像或输入未知图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.4 pdf generate:下载pdf后,在dompdf中找不到图像或输入未知图像相关的知识,希望对你有一定的参考价值。

我正在尝试使用laravel dom pdf生成pdf。当我下载我的PDF时,它不会显示我的图像。它显示未找到图像或键入未知。但在浏览器中它显示正确。我已经在堆栈中关注了其他相应的问题。我启用了$isRemoteEnabled = true;我该如何解决这个问题?

这是我的pdfview:

<html>
    <head>
    {{--<link rel="stylesheet" href="{{ URL::to('css/style.css') }}">--}}
        <style>
            /*pdf view start*/
            .pdf-content{
                /*pdf body*/
                width: 100%;
                height: 100%;
                background-color: #d3d3d3;
            }
            .pdf-doctor{
                /*for doctor*/
                border-bottom: 1px dashed gray;
            }
            .rx{
                float: left;
                margin-top: 5px;
                width: 100px;
                height:100px;
            }
            .rx img{
                width: 100px;
                height:100px;
            }
            .doctor-info p{
                text-align: center;
            }
            /*{{--for patient start--}}*/
            .pdf-patient{
                margin-top: 7px;
                border-top: 1px dashed gray;
                height: 30px;
                width: 100%;
            }
            .pdf-patient h4{
                float: left;
                display: inline;
                color: #0000cc;
            }
            .pdf-patient-name-date{
                float: left;
                margin-left: 76px;
                margin-top: 7px;
                width: 45%;
            }

            .pdf-test{
                /*for test*/
                margin-top: 50px;
                height: 20em;
                width: 100%;
            }
            .pdf-test h4{
                margin-left: 76px;
                /*display: inline;*/
                color: #0000cc;
            }
            .pdf-test-list{
                border: 1px solid black;
                float: left;
                margin-left: 116px;
                width: 40%;
            }
            .pdf-test-list p{
                margin-left: 15px;
                padding-top: 5px;
            }
            .pdf-test-done{
                border-top: 1px solid black;
                border-right: 1px solid black;
                border-bottom: 1px solid black;
                float: left;
                /*margin-left: 76px;*/
                /*margin-top: 15px;*/
                height: 37px;
                width: 10%;
            }
            .pdf-comments{
                /*for comment*/
                margin-top: 50px;
                height: 30px;
                width: 100%;
            }
            .pdf-comments h3{
                /*for comment*/
                margin-left: 76px;
                /*display: inline;*/
                color: #0000cc;
            }

            /*pdf view end*/
        </style>
    </head>
    <body>
        <div class="pdf-content">
            <div class="pdf-doctor">
                <div class="rx">
                    <img src=" {{ url("/images/rx1.png") }}">
                    {{--{{URL::asset('/image/propic.png')}}--}}
                </div>
                {{--for doctor--}}
                <div class="doctor-info">
                    <p>Doctor's name here</p>
                    <p>Doctor's degree here</p>
                    <p>Doctor's Address here</p>
                    <p>Doctor's Mob here</p>
                </div>

            </div>

            <div class="pdf-patient">
                {{--for patient--}}
                <div class="pdf-patient-name" style="float: left;">
                    <h4 style="display: inline;"><i>Patient name</i>:&nbsp&nbsp</h4>
                    <h4 style="display: inline;">{{ $patients->name }}</h4>
                    {{--style="text-decoration: underline; text-decoration-style: dotted;"--}}
                </div>
                <div class="pdf-patient-date" style="margin-left: 175px;">
                    <h4 style="display: inline;"><i>Date</i>:&nbsp&nbsp</h4>
                    <h4 style="display: inline;">{{ $patients->created_at }}</h4>
                </div>
            </div>
            <div class="pdf-test">
                {{--for test--}}
                <h4>Tests</h4>
                <div style="height: 5px;"></div>
                {{--@foreach($patients as $patient)--}}
                <div class="pdf-test-list">
                    <p>{!! nl2br($patients->test) !!}</p>
                </div>
                {{--<div class="pdf-test-done">--}}
                    {{--<p>tik</p>--}}
                {{--</div>--}}
                {{--@endforeach--}}

            </div>
            <div class="pdf-comments">
                {{--for comment--}}
                <h3 >Comments</h3>
            </div>
        </div>
    </body>
</html>

我的控制器:

public function PdfView(Request $request, $patient_id)
{
   $patients = Patient::where('id', $patient_id)->first();
   $pdf = PDF::loadView('pdfview', ['patients'=>$patients]);
   return $pdf->download('pdfview.pdf');
}

我的图片在public/images/rx1.png,pdfview在views文件夹中。我该如何解决这个问题?

答案

尝试使用图像的绝对路径,可能还有其他资源,如css和javascripts,如果它们没有加载。

为此,最好有一个专用于pdf导出的布局,其中包含加载资源的绝对路径。

作为替代方案,您可以尝试设置:

isRemoteEnabled: true

在config / dompdf.php中并使用您的普通视图布局。

另一答案

如果图像名称或URL中有空格,则会出现此问题

你可以做到这一点

isRemoteEnabled: true

要么

$image = Image name.jpg; (causing error)
$image = Image%20name.jpg; (is okay)

因此,替换图像名称,其中包含%20的空格,它将被解决。

$image = str_replace(' ', '%20', $items->image);

以上是关于Laravel 5.4 pdf generate:下载pdf后,在dompdf中找不到图像或输入未知图像的主要内容,如果未能解决你的问题,请参考以下文章

Error Laravel 5.4以.bin格式上传.docs

laravel5.4+vue+element简单搭建(转)

laravel-5.4 - 错误:从空值创建默认对象

laravel 5.4 在邮件中嵌入图像

Laravel 5.4 有时验证规则不起作用

更改另一个刀片变量Laravel中的背景颜色