#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. Они только сказали мне попробовать это, и это сработало для меня