【问题标题】:HTML2PDF - Generated PDF isn't true CMYK black (0,0,0,100%)HTML2PDF - 生成的 PDF 不是真正的 CMYK 黑色 (0,0,0,100%)
【发布时间】:2017-01-09 15:23:45
【问题描述】:

我正在使用HTML2PDF 从来自 textarea-input 的文本和用户上传的图像生成 PDF。我正在使用样式块来设置 CSS,效果很好,生成的 PDF 看起来与我想要的完全一样。

但是,PDF 应该可以直接打印而无需任何额外的转换。我的问题来了:

当我检查 PDF 时,PDF 的文本和黑色边框不是 CMYK 0% 0% 0% 100% 而是一些奇怪的东西,例如 CMYK 22% 46% 17% 94% 这意味着它不应该被打印,因为每个字母会被打印 4 次 (至少我是这么说的,我对打印一无所知,我只知道它必须是 0 0 0 100%~)

编辑:为避免混淆:这将主要是带有黑色边框的白色背景上的黑色文本,想想分类广告,来自印刷杂志的广告。添加到分类中的图像不需要是 100% 黑色。

我正在使用的一些代码

<?php echo "
        <style>
        .contentwrapper {
            position: relative;
        }
        .contentpdf {
            border: 1mm;
            border-style: solid;
            border-color: #000000;
            padding: 1mm;
            position: absolute;
            word-wrap: break-word;
            word-break: break-all;
            text-align: justify;
            height: 50mm;
            width: 100mm;
            line-height: 2.5mm;
            color: #000000;
            font-family: 'Arial';
        }
        h1 {
            font-size: 3.5mm;
            line-height: 5mm;
            margin: 0 0;
            margin-top: 0mm;
            margin-bottom: 0mm;
            padding: 0 0;
            color: #000000;
            font-family: 'Arial';
        }
        p {
            font-size: 2.5mm;
            margin: 0 0;
            margin-bottom: 0.5mm;
            margin-top: 0.5mm;
            padding: 0 0;
            color: #000000;
            font-family: 'Arial';
        }
        b, strong {
            word-break: break-all;
            word-wrap: break-word;
        }
        </style>
    <page format='" . $width . "x" . $height ."' orientation='" . $orientation ."' backcolor='#FFFFFF'>
     <div class='contentwrapper'>
      <div class='contentpdf'>
        " . $html  ."
      </div>
     </div>
    </page>";
$content = ob_get_clean();

$html2pdf = new HTML2PDF('L', 'A4', 'de', false, 'UTF-8', array(0,0,0,0));

$html2pdf->setDefaultFont('Arial');

$html2pdf->WriteHTML($content);

$file = "output.pdf";
$html2pdf->Output($file, "F"); ?>

基本上,我一点也不知道为什么 PDF 是那些奇怪的值而不是 CMYK 0 0 0 100%

感谢任何帮助。

【问题讨论】:

  • 据我所知,您不会打印 100% 黑色,因为它看起来和 100% 白色一样糟糕。你打印了吗?如果您想尝试另一个基于 Electron (Chrome) 的库,您可以尝试 github.com/msokk/electron-render-service,它也很有效。
  • @three 我无法访问实际的打印机。一些背景:用于此的pdf主要是黑色文本和偶尔的图像,基本上是杂志中的分类/广告。我可能需要从您的链接中尝试渲染服务,但我不想使用任何不同的东西
  • 好的,你可以联系他们,看看打印是否真的需要 100%。我真的很怀疑。
  • @three 好吧,这就是我在 SO 上寻找解决方案的原因。我正在生成的 PDF 和客户从我那里收到的 PDF 不适合为此打印,因为(至少他们都这么告诉我,我对打印一无所知):打印时,它将应用 4 层在每个字母上。 1 层青色、1 层洋红色、1 层黄色和 1 键“黑色”。
  • 转到此页面并检查如何执行此操作。但是如果没有正确的后端来处理内容,您可能无法做到。 cloudformatter.com/CSS2Pdf.Demos.Colors 显示扩展 HTML 元素中指定的 CMYK 和 Pantone 颜色,但使用不同的后端服务格式化。

标签: html pdf html2pdf cmyk


【解决方案1】:

你有问题!使用 HTML2PDF,没有办法创建一个真正的 CMYK 文档,这是您的目的所必需的。颜色转换永远不会达到您想要的(主观)结果,并且总是混合 70% 的青色、40% 的红色或类似的颜色。

我会改为让印刷部门负责将数据自动化/集成到他们的印刷产品中,或者如果这不可能,则为 Photoshop 编写一个脚本,该脚本创建一个真正的 CMYK 文档并在其中添加带有文本和图像的图层。

或者作为第三种选择,也许可以提交不带任何边框的文档内容,并让打印机添加一个纯色 100% 黑色边框。

“为什么”如此困难的原因非常复杂(加法与减法颜色、色彩空间、实际考虑因素,例如“纯黑点在光栅图像中看起来很糟糕”等),您可以在任何一所大学花一些时间与他们打交道。顺便说一句,如果您找到完美的解决方案,这是一个有利可图的领域。

【讨论】:

    猜你喜欢
    • 2019-11-27
    • 2020-01-23
    • 2018-03-30
    • 2023-03-08
    • 2014-03-12
    • 2015-12-16
    • 2011-09-09
    • 2020-01-23
    • 1970-01-01
    相关资源
    最近更新 更多