php - 将彩色 pdf 转换为传真友好的灰度 pdf(使用 Imagick)

标签 php pdf imagemagick imagick color-conversion

我正在尝试将彩色 pdf 转换为传真友好的 pdf(不使用太多墨水)。 Twilio 的处理方式非常好。我相信这可以通过 Imagick 实现。我的主要动机是在我的服务器端使用 Imagick 进行转换,这样我的 Twilio 转换的输入和输出就不会完全不同。

我试过这些,但它们看起来与 Twilio 的不一样:

$img->quantizeImage(255, Imagick::COLORSPACE_GRAY, 1, TRUE, FALSE);
$img->writeImage('output.png');

// and 
$img->quantizeImage(1, Imagick::COLORSPACE_GRAY, 1, TRUE, FALSE);

以上片段导致完全颜色转换。


让我向您展示 Twilio 是如何做到的:

原始 PDF:

enter image description here

Twilio 转换的 PDF:

enter image description here

Twilio 转换 PDF 的缩放版本和纯色背景图案:

enter image description here

enter image description here

最佳答案

您没有发布实际的 PDF,而是发布了 PNG 图片。所以我用了那个。如果这不起作用,请发布指向您的 PDF 的链接。

在 Imagemagick 中,您可以添加抖动图案。我假设 Imagick 中有等效的命令。这是 Imagemagick 命令。

convert l9IYF.png -colorspace gray -ordered-dither o3x3 tmp.png

enter image description here

convert l9IYF.png -colorspace gray -ordered-dither h6x6a tmp2.png

enter image description here

参见 https://www.imagemagick.org/Usage/quantize/#ordered-ditherhttp://us3.php.net/manual/en/imagick.orderedposterizeimage.php

关于php - 将彩色 pdf 转换为传真友好的灰度 pdf(使用 Imagick),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468665/

相关文章:

java - 使用 im4java 创建透明 Canvas

node.js - 如何使用GraphicsMagick for NodeJS制作图片和文字?

php - 无法使用 Auth::user() 仅使用\Auth::user() 获取 user_id Laravel

php - 如何在 php 站点上的专用 Node.js 服务器上使用 Socket.io?

php - 数据映射器通常是什么样子的?

php - DomPDF 不能很好地呈现表格

c# - Windows如何批量打印PDF文档?

php - 如何每隔x分钟自动删除?

java - 在PDF文件中查找字符串的位置,然后对其进行操作

ruby-on-rails - Rails 的最佳图像优化技术