Как сжать PDF и уменьшить размер файла с помощью скрипта PHP?

Как мы можем сжать и уменьшить размер файла PDF с помощью PHP? Можете ли вы поделиться примером кода для сжатия.

Я тестировал с помощью «tcpdf». Но это не работает.

<?php
// include TCPDF library
require_once('tcpdf/tcpdf.php');

$pdf = new TCPDF();
$pdfFile = 'example.pdf';
$pdfContent = file_get_contents($pdfFile);
// set compression
$pdf->setCompression(true);
// output compressed PDF
$pdf->Output('compressed.pdf', 'F');

Возможный дубликат: Как уменьшить размер файла PDF

Anant - Alive to die 15.02.2023 13:18

@ Anant-Alivetodie Мне нужно веб-решение. Приведенная выше ссылка кажется решением на основе Linux.

Irfan 15.02.2023 13:21

Хорошо, Ирфан. Будем надеяться, что кто-то может вам помочь. Вот почему я не отметил его дубликатом

Anant - Alive to die 15.02.2023 13:25
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Аутсорсинг разработки PHP для индивидуальных веб-решений
Аутсорсинг разработки PHP для индивидуальных веб-решений
Услуги PHP-разработки могут быть экономически эффективным решением для компаний, которые ищут высококачественные услуги веб-разработки по доступным...
Еще один бенчмарк PHP
Еще один бенчмарк PHP
Сегодня я наткнулся на забавный пост на r/ProgrammerHumor, который заставил меня задуматься об одной вещи, которая меня всегда интересовала....
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Laravel поставляется с мощной функцией под названием "Eloquent Accessors and Mutators".
Настройка PHP-проекта на MacOS: простое руководство для начинающих
Настройка PHP-проекта на MacOS: простое руководство для начинающих
PHP, широко используемый язык сценариев с открытым исходным кодом, необходим для веб-разработки. Его совместимость с MacOS делает его популярным...
Конечные и Readonly классы в PHP
Конечные и Readonly классы в PHP
В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.
1
3
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прошу прощения за путаницу. Метод setSourceFile() не является частью основной библиотеки FPDF и требует дополнительной библиотеки под названием FPDI (FPDF Template-Parser и -Processor для PHP).

-Сначала вы должны установить его через композитор:

composer require setasign/fpdi

- Во-вторых, вы должны включить файл автозагрузки в свой код:

require_once('vendor/autoload.php');

- В-третьих, расширьте класс FPDI вместо класса FPDF в своем коде:

require_once('vendor/autoload.php');

use setasign\Fpdi\Fpdi;

// Extend the FPDI class instead of the FPDF class
class PDF extends Fpdi {
    // Add your custom functions here
}

// code for compress pdf
$pdf = new PDF();
$pdf->setSourceFile('original.pdf');

// add a new page
$pdf->AddPage();

// import the pages from the original PDF
$tplIdx = $pdf->importPage(1);
$pdf->useTemplate($tplIdx);

// set the compression to true
$pdf->SetCompression(true);

// output the compressed PDF to a new file
$pdf->Output('compressed.pdf', 'F');

Спасибо за ответ. Но я не смог реализовать код. Я установил FPDF, используя packagist.org/packages/setasign/fpdf . При запуске вашего скрипта я получил ошибку Uncaught Error: Call to undefined method FPDF::setSourceFile(). Документ FPDF fpdf.org предлагает установить Zlib. Нужен ли нам Zlib? Как мы можем установить этот FPDF?

Irfan 15.02.2023 15:31

Я отредактировал предложение, чтобы оно отвечало на вопросы

xhuljano kushova 15.02.2023 19:14

Большое спасибо. Ваше решение сработало для меня. Я обновил код с опцией сжатия pdf.

Irfan 16.02.2023 07:56

Дайте мне знать, если вам нужна дополнительная помощь, так как я много работал с pdf!

xhuljano kushova 16.02.2023 14:13

О, это здорово. Я сомневаюсь. При использовании SetCompression(true); размер PDF уменьшается лишь немного. Что мы делаем, если нам нужна более сжатая версия? Можем ли мы установить уровень сжатия, чтобы уменьшить размер?

Irfan 16.02.2023 18:12

Другие вопросы по теме

Похожие вопросы

Условно обязательное поле оформления заказа WooCommerce
Как скрыть столбец, если роли не «админ»
Суммируйте цены из массива, пока они не будут соответствовать определенному значению, которое определено в другом массиве.
Разобрать отформатированную строку с метками, написанными ЗАГЛАВНЫМИ БУКВАМИ, за которыми следует их значение, для создания ассоциативного массива.
Как протестировать контроллеры Laravel Api (только) с помощью тестирования PEST Php?
Как отображать название модели на разных языках в laravel
Почему использование класса с префиксом пространства имен со сложным фигурным синтаксисом в моей вспомогательной функции вызывает синтаксическую ошибку?
Написание запроса DELETE для 3 таблиц
Загрузить изображение laravel 9, сохраненное в виде файла .tmp в базе данных
Получить номер недели для данного месяца года для представления в календаре