【发布时间】: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 颜色,但使用不同的后端服务格式化。