【发布时间】:2015-05-07 10:23:09
【问题描述】:
在网站上,我们有客户上传 pdf 文件,在大多数情况下,它们的方向是正确的。有些是横向的,我们希望能够旋转内容并保存在管理界面中。
我正在寻找最简单、最便宜的选项,以便在上传的文档中的所有页面上轮换 pdf 内容。
我查看了 pdflib,但在编译 lite 版本时遇到问题,而且该产品的许可证非常昂贵。
网站在 WAMP 配置中运行。
【问题讨论】:
标签: php windows apache pdf rotation
在网站上,我们有客户上传 pdf 文件,在大多数情况下,它们的方向是正确的。有些是横向的,我们希望能够旋转内容并保存在管理界面中。
我正在寻找最简单、最便宜的选项,以便在上传的文档中的所有页面上轮换 pdf 内容。
我查看了 pdflib,但在编译 lite 版本时遇到问题,而且该产品的许可证非常昂贵。
网站在 WAMP 配置中运行。
【问题讨论】:
标签: php windows apache pdf rotation
你可以使用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() 运行 3rd 方程序。但如果性能不是问题,那么 Imagick 可能会解决问题。
【讨论】:
我们提供a library(不是免费的!)允许在没有任何外部程序的情况下使用纯 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();
here 也提供在线演示。
【讨论】: