【问题标题】:How can I rotate a pdf's content with PHP on a windows machine?如何在 Windows 机器上使用 PHP 旋转 pdf 内容?
【发布时间】:2015-05-07 10:23:09
【问题描述】:

在网站上,我们有客户上传 pdf 文件,在大多数情况下,它们的方向是正确的。有些是横向的,我们希望能够旋转内容并保存在管理界面中。

我正在寻找最简单、最便宜的选项,以便在上传的文档中的所有页面上轮换 pdf 内容。

我查看了 pdflib,但在编译 lite 版本时遇到问题,而且该产品的许可证非常昂贵。

网站在 WAMP 配置中运行。

【问题讨论】:

标签: php windows apache pdf rotation


【解决方案1】:

你可以使用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 可能会解决问题。

【讨论】:

  • 感谢您的帮助,我将进行一轮比赛,看看是否可以运行。
  • 我相信您会发现它非常简单。只需下载 Imagick 并将其放入您的 PATH 中。祝你好运。
【解决方案2】:

我们提供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 也提供在线演示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-10
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    相关资源
    最近更新 更多