На сайте у нас есть клиенты, загружающие файлы pdf, в большинстве случаев они имеют правильную ориентацию. Есть некоторые в альбомной ориентации, мы хотели бы иметь возможность вращать контент и сохранять в интерфейсе администратора.
Я ищу самый простой и дешевый вариант ротации содержимого PDF на всех страницах загруженного документа.
Я посмотрел на pdflib, но возникли проблемы с получением облегченной версии для компиляции и лицензий на продукт, которые мега-дороги.
Сайт работает в конфигурации WAMP.
Ты можешь использовать 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, вероятно, добьется цели.
Мы предлагаем библиотека (не бесплатно!) разрешить это без какой-либо внешней программы, но в чистом 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();
Доступна онлайн-демонстрация Вот, тоже.