PDF 颜色渐变在不同查看器中渲染不相同(或根本不渲染)

问题描述 投票:0回答:1

我正在尝试在 PDF 中创建线性颜色渐变。经过一番努力,我能够在 Chrome 中渲染一个填充渐变的矩形,但是 Mozilla 只渲染一个黑色矩形,而 Acrobat reader 完全是空白的。

我很确定 Chrome 解释了源代码错误,但我找不到问题所在以及如何在 Acrobat reader 中渲染渐变。

请考虑下面的源代码。有人能看出它出了什么问题吗? (是的,我很清楚函数中有一个空的 /Bounds 属性,但我已经测试了没有它的代码,但没有任何效果。)

如果您想知道,代码是使用 PHP 的 Zend PDF 库和我的自定义渐变方法生成的。它不再被维护,但它是我们在工作中使用的工具,所以我现在坚持使用它。这也是为什么PDF只有1.4版本的原因。

这是完整的源代码

%PDF-1.4 %
1 0 obj 
<</Type /Catalog /Version /1.4 /Pages 2 0 R /Names 5 0 R >>
endobj
2 0 obj 
<</Type /Pages /Kids [8 0 R ] /Count 1 >>
endobj
3 0 obj 
[]
endobj
4 0 obj 
<</Names 3 0 R >>
endobj
5 0 obj 
<</Dests 7 0 R >>
endobj
6 0 obj 
[]
endobj
7 0 obj 
<</Names 6 0 R >>
endobj
8 0 obj 
<</Type /Page /LastModified (D:20240226231224+01'00') /Resources <</Pattern <</P1 10 0 R >> /ProcSet [/PDF ] >> /MediaBox [0 0 595 842 ] 
/Contents [9 0 R ] /Parent 2 0 R >>
endobj
9 0 obj 
<</Length 41 >>
stream
/Pattern sc
/P1 scn
30 300 370 450 re
 f

endstream
endobj
10 0 obj 
<</Type /Pattern 
/PatternType 2 
/Shading 
    <</ShadingType 2 
    /ColorSpace /DeviceRGB 
    /Domain [0 1 ] 
    /Coords [30 750 30 300 ] 
    /Function 
        <</FunctionType 3 
        /Domain [0 1 ] 
        /Bounds [] 
        /Encode [1 0 ] 
        /Functions [
            <</FunctionType 2 
            /Domain [0 1 ] 
            /C0 [0 0.733 0 ] 
            /C1 [0 0 0 ] 
            /N 1 
            >> 
        ] 
        >> 
    /Extend [true true ] 
    >> 
/Matrix [1 0 0 1 0 0 ] 
>>
endobj
xref
0 11 
0000000000 65535 f 
0000000015 00000 n 
0000000091 00000 n 
0000000149 00000 n 
0000000168 00000 n 
0000000202 00000 n 
0000000236 00000 n 
0000000255 00000 n 
0000000289 00000 n 
0000000479 00000 n 
0000000570 00000 n 
trailer
<</ID [<38363664323065366363363538333838> <39323837366165306561666364386532> ] /Size 11 /Root 1 0 R >>
startxref
917
%%EOF

这是可供下载的最终文件

pdf pdf-generation gradient zend-pdf
1个回答
0
投票

页面内容流不正确,应该是:

/Pattern cs % set colorspace for non-stroking operations

您目前拥有:

/Pattern sc % set fill color which is incorrect as the scn operator will set it

我认为这就是您想要的结果:

© www.soinside.com 2019 - 2024. All rights reserved.