Как программно сгенерировать PDF с логотипом моей компании с помощью PHP codeigniter

#php #codeigniter #dompdf

#php #codeigniter #dompdf

Вопрос:

Я пытаюсь создать PDF-файл с логотипом моей компании, используя библиотеку dompdf, но у меня есть PDF-файл без моего логотипа. Я могу попробовать следующий код.

Добро пожаловать, контроллер:

 <?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->library('pdf');
    }
    public function index()
    {
        $html = $this->load->view('welcome_message', [], true);
        $this->pdf->createPDF($html, 'mypdf', false);
    }

}
  

Welcome_view:

 <?php
defined('BASEPATH') OR exit('No direct script access allowed');
?><!DOCTYPE html>
<html lang="en">
<body>
<div id="container">
<h1>Welcome to CodeIgniter!</h1>
<img src="<?php echo base_url() ?>/img/un6.png'">
<div id="body">
<p>The page you are looking at is being generated dynamically by CodeIgniter.</p>
<p>If you would like to edit this page you'll find it located at:</p>
<code>application/views/welcome_message.php</code>
<p>The corresponding controller for this page is found at:</p>
<code>application/controllers/Welcome.php</code>
<p>If you are exploring CodeIgniter for the very first time, you should start by reading the <a href="user_guide/">User Guide</a>.</p>
</div>
<p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds. <?php echo  (ENVIRONMENT === 'development') ?  'CodeIgniter Version <strong>' . CI_VERSION . '</strong>' : '' ?></p>
</div>
</body>
</html>
  

а также включил папку dompdf files application / libraries:

PDF.php файл для файла dompdf

 <?php
defined('BASEPATH') OR exit('No direct script access allowed');

require_once(dirname(__FILE__) . '/dompdf/autoload.inc.php');

class Pdf
{
function createPDF($html, $filename='', $download=TRUE, $paper='A4', $orientation='portrait'){
$dompdf = new DompdfDOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper($paper, $orientation);
$dompdf->render();
if($download)
$dompdf->stream($filename.'.pdf', array('Attachment' => 1));
else
$dompdf->stream($filename.'.pdf', array('Attachment' => 0));
}
}
?>
  

Как я могу это сделать

Комментарии:

1. base_url возвращает базовый URL вашего сайта, как указано в вашем файле конфигурации. Держу пари, если вы посмотрите на страницу приветствия в своем браузере, вы увидите двойные косые черты в URL-адресе изображения. <img src=» yourwebsite.com//img/un6.png ‘»> Редактировать: в URL-адресе также есть дополнительная одинарная кавычка: un6.png ‘ » >

Ответ №1:

Проблема здесь:

<img src="<?php echo base_url() ?>/img/un6.png'">

DomPDF требует, чтобы все внешние ресурсы указывались как пути к файлам, а не URL. Вы могли бы, например, попробовать это:

<img src="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>/img/un6.png'">

или что-то вроде:

<img src="<?php echo FCPATH; ?>/img/un6.png'">

(FCPATH — это путь к переднему контроллеру Codeigniter… путь сервера к основному index.php файлу, который управляет всем в CI)

Ответ №2:

DomPDF требует изображения в кодировке base64 для правильного отображения в формате PDF.

Преобразуйте изображение в base64 с помощью этого инструмента https://www.base64-image.de /

Это даст html-тег, просто используйте его в своем HTML-коде PDF

Комментарии:

1. Я попробовал тег img, также связался со службой поддержки DOMPDF. Они только сказали мне попробовать это, и это сработало для меня