Как я могу вращать содержимое PDF с помощью PHP на компьютере с Windows?

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

Я ищу самый простой и дешевый вариант ротации содержимого PDF на всех страницах загруженного документа.

Я посмотрел на pdflib, но возникли проблемы с получением облегченной версии для компиляции и лицензий на продукт, которые мега-дороги.

Сайт работает в конфигурации WAMP.

2

Решение

Ты можешь использовать Imagick библиотека

$imagick = new Imagick();
$imagick->readImage('landscape.pdf');
$angle = 90; //or -90 if you want anti-clockwise
$imagick->rotateimage(new ImagickPixel(), $angle);
$imagick->setImageFormat("pdf"); // that's likely not necessary
$imagick->writeImage("portrait.pdf");

Я уверен, что должны быть некоторые конвертеры командной строки для Windows, так что у вас есть второй вариант запуска сторонней программы с использованием exec (). Но если производительность не является проблемой, то Imagick, вероятно, добьется цели.

1

Другие решения

Мы предлагаем библиотека (не бесплатно!) разрешить это без какой-либо внешней программы, но в чистом PHP:

<?php
// your variables
$degrees = 90;
$filename = "your.pdf";

//require autoloader
require_once("library/SetaPDF/Autoload.php");

// create a file writer
$writer = new SetaPDF_Core_Writer_File("rotated.pdf");
// load document by filename
$document = SetaPDF_Core_Document::loadByFilename($filename, $writer);

// get pages object
$pages = $document->getCatalog()->getPages();
// get page count
$pageCount = $pages->count();

for ($pageNumber = 1; $pageNumber <= $pageCount; $pageNumber++) {
// get page object for this page
$page = $pages->getPage($pageNumber);

// rotate by...
$page->rotateBy($degrees);
}

// save and finish the document
$document->save()->finish();

Доступна онлайн-демонстрация Вот, тоже.

1

По вопросам рекламы [email protected]