[Checkins] SVN: z3c.rml/trunk/ - Bug: Specifying a color in any tag inside the paragraph would fail, if the

Stephen Richter cvs-admin at zope.org
Wed Dec 19 19:23:13 UTC 2012


Log message for revision 128792:
  - Bug: Specifying a color in any tag inside the paragraph would fail, if the
    color was a referenced name.
  

Changed:
  U   z3c.rml/trunk/CHANGES.txt
  U   z3c.rml/trunk/src/z3c/rml/document.py
  A   z3c.rml/trunk/src/z3c/rml/tests/expected/rml-examples-045-cmyk.pdf
  A   z3c.rml/trunk/src/z3c/rml/tests/input/rml-examples-045-cmyk.rml

-=-
Modified: z3c.rml/trunk/CHANGES.txt
===================================================================
--- z3c.rml/trunk/CHANGES.txt	2012-12-19 18:54:05 UTC (rev 128791)
+++ z3c.rml/trunk/CHANGES.txt	2012-12-19 19:23:13 UTC (rev 128792)
@@ -35,7 +35,10 @@
 
 - Bug: Overwriting the default paragraph styles did not work properly.
 
+- Bug: Specifying a color in any tag inside the paragraph would fail, if the
+  color was a referenced name.
 
+
 1.1.0 (2012-12-18)
 ------------------
 

Modified: z3c.rml/trunk/src/z3c/rml/document.py
===================================================================
--- z3c.rml/trunk/src/z3c/rml/document.py	2012-12-19 18:54:05 UTC (rev 128791)
+++ z3c.rml/trunk/src/z3c/rml/document.py	2012-12-19 19:23:13 UTC (rev 128792)
@@ -21,7 +21,7 @@
 import zope.interface
 import reportlab.pdfgen.canvas
 from reportlab.pdfbase import pdfmetrics, ttfonts, cidfonts
-from reportlab.lib import fonts
+from reportlab.lib import colors, fonts
 
 from z3c.rml import attr, canvas, directive, interfaces, occurence
 from z3c.rml import pdfinclude, storyplace, stylesheet, template
@@ -194,22 +194,61 @@
         description=(u'The id/name the color will be available under.'),
         required=True)
 
+    RGB = attr.Color(
+        title=u'RGB Color',
+        description=(u'The color value that is represented.'),
+        required=False)
+
+    CMYK = attr.Color(
+        title=u'CMYK Color',
+        description=(u'The color value that is represented.'),
+        required=False)
+
     value = attr.Color(
         title=u'Color',
         description=(u'The color value that is represented.'),
-        required=True)
-    attr.deprecated(
-        'RGB', value,
-        (u'Ensures compatibility with ReportLab RML. Please use '
-         u'the "value" attribute.'))
+        required=False)
 
+    spotName = attr.String(
+        title=u'Spot Name',
+        description=(u'The Spot Name of the CMYK color.'),
+        required=False)
+
+    density = attr.Float(
+        title=u'Density',
+        description=(u'The color density of the CMYK color.'),
+        min=0.0,
+        max=1.0,
+        required=False)
+
+    knockout = attr.String(
+        title=u'Knockout',
+        description=(u'The knockout of the CMYK color.'),
+        required=False)
+
+    alpha = attr.Float(
+        title=u'Alpha',
+        description=(u'The alpha channel of the color.'),
+        min=0.0,
+        max=1.0,
+        required=False)
+
 class ColorDefinition(directive.RMLDirective):
     signature = IColorDefinition
 
     def process(self):
-        id, value = self.getAttributeValues(valuesOnly=True)
-        manager = attr.getManager(self)
-        manager.colors[id] = value
+        kwargs = dict(self.getAttributeValues())
+        id = kwargs.pop('id')
+        for attrName in ('RGB', 'CMYK', 'value'):
+            color = kwargs.pop(attrName, None)
+            if color is not None:
+                # CMYK has additional attributes.
+                for name, value in kwargs.items():
+                    setattr(color, name, value)
+                manager = attr.getManager(self)
+                manager.colors[id] = color
+                return
+        raise ValueError('At least one color definition must be specified.')
 
 
 class IDocInit(interfaces.IRMLDirectiveSignature):
@@ -298,6 +337,9 @@
         # ReportLab not to fail.
         reportlab.rl_config._reset()
 
+        # Add our colors mapping to the default ones.
+        colors.toColor.setExtraColorsNameSpace(self.colors)
+
         if outputFile is None:
             # TODO: This is relative to the input file *not* the CWD!!!
             outputFile = open(self.element.get('filename'), 'wb')
@@ -335,3 +377,6 @@
         tempOutput.seek(0)
         outputFile.write(tempOutput.getvalue())
 
+        # Cleanup.
+        colors.toColor.setExtraColorsNameSpace({})
+

Added: z3c.rml/trunk/src/z3c/rml/tests/expected/rml-examples-045-cmyk.pdf
===================================================================
--- z3c.rml/trunk/src/z3c/rml/tests/expected/rml-examples-045-cmyk.pdf	                        (rev 0)
+++ z3c.rml/trunk/src/z3c/rml/tests/expected/rml-examples-045-cmyk.pdf	2012-12-19 19:23:13 UTC (rev 128792)
@@ -0,0 +1,150 @@
+%PDF-1.4
+%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
+% 'BasicFonts': class PDFDictionary 
+1 0 obj
+% The standard fonts dictionary
+<< /F1 2 0 R
+ /F2 3 0 R
+ /F3 6 0 R >>
+endobj
+% 'F1': class PDFType1Font 
+2 0 obj
+% Font Helvetica
+<< /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+% 'F2': class PDFType1Font 
+3 0 obj
+% Font Helvetica-Bold
+<< /BaseFont /Helvetica-Bold
+ /Encoding /WinAnsiEncoding
+ /Name /F2
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+% 'FormXob.0086924a45e007495af99df70126eb1b': class PDFImageXObject 
+4 0 obj
+<< /BitsPerComponent 8
+ /ColorSpace /DeviceRGB
+ /Filter [ /ASCII85Decode
+ /FlateDecode ]
+ /Height 197
+ /Length 6121
+ /Subtype /Image
+ /Type /XObject
+ /Width 309 >>
+stream
+Gb"/l^Q0\[&]ap8-\i2ucj=5N-F&B2*&rS,^lh8#OU4]pO9j*&8<te-&f(K\V^$3 at 4V$^JLNqAj>&-nb>+sIunDF=o/>mXT=rr[$BDR%WJ%V4up&1g&Nh&*l4]U%geQ"JnQNZ=Gr;>]n!F(J*G^*p#HHF]L]j at 1dnK,0gdo5Qk9Wg(ia2d<t]\dS4fiZ""E`J5*R(34cG?Z\d(Ddn=n!REP5/)I">_)R_X]?t<pIq_8k+_1;h)d['Ib!M:+kn2^\b4G8-6aqbcHaXfekc2,eh+Ii#S,\!4)V at QVjiKmXB$imM=oHfhRR.pg<%lQ\QkS]X2?9B(@*nTXoRU9lF+g;htlGu=i52B_tMK[>Nb24efmBAbN\7?-qgiM?9+l[j9FF.,f.0h,>aJ4T!e!f,pt&fi'8;(*m1jGCFE+ba:p/WD<ouuX6c5I-s:ZLqYA2P!U[PtR<;;bdFp=&[cQM%N$<iV$I?kC3-U)t;rn&%L!J9tA,u&+FWS_sB?0'_Ps\.Bf^Kd#gq^i'S8XFnm?hQ8h*`M!I.cTKB8#$E3$C_[&B'eK'#<<Deibmfd#R(?bFpYeKj;LRI*:X"\u3Q4gG/V2jsDUN&5D[g\o"M#0jMaZjodn0GFi#iD][AA at Tl:)F)SU1E-I*/`/9Fq9Jg&:aE9];Se4m3$Aih"79r!PMYD2+DXe.Ld'E)=1"GY.*q/:i4NfORKJ8Y0YaP^$6%+??_6>DLQ#8>d_(GFJ\b#3L at 5S@_XgeOYG<"LZBEN]52BJs0"[=2T^ATc;!pi#Y_)&U5_n)bcW'Ypt2WsBA[kJ1/7hnHh[okpVZ%6'1+LiGmhO'&U(Aq:iq=]S]>I&TX4;1+ecDtDqI\,X=(=*+\eaf`p=>RcFTS,"6`R&Jf4:T+YbehB)d`n8'gNj$IG<"LZaMQg!6S1u!E(`dM3Dp,Bpe4%o$]AX9!iCu=?ak97=kJIZK29DK(/Qs#rFl9lps.>"get3:*6A1&I-[@
 :)d#5O&286kk?2\2nOu<c_<4m]gk(<t0P[FFi8?[m6gtMjYRLU<T5IlBJ@`ki:CFtSGFjQI(-J+JgRmb]K?l at W\$1+S+^jR`f.ClK(:GCEi6sBkKj!&_J:l0)"LinMkICJ)!BBjZ\+kWq1C_0!i2q>uCgcd,6bpNNnP$ErGbuY._BruaKl%)TpiP9%"aA^)pN-oHZ`ojPi"f-J\c$4C3;?07n-P"c)T"%AP(m,lL4Fp&l7m0b(:GC1_Bs!4qMj;0["-+O8K&Aj2!!N@&Q1lCcA(kq0>;`.`V5JfqR`A%GP:;&l6`u)A<_RlI'WOl25L34n+?PD at .?ogLaX:BSta<WS\8Jd$_%k$a&i9IWi%D#bAScZ5hj4.8GhI4pWN$>@rSn/_tiRA!Wu'H>9A6-h:WLWrkgr3h>G7\r`4KOYJ34*9u0eUm$Tf)q=>%5;Yd<_rj2k?kMs#RlLOS*msu,EVn^O2.0i%j4E(&/n9lq;6r.I0hIc:O.qCO=V.e/\VlU_ZBk1P"pQLL"fl_,&1F]Z7X\^Utk%s#65I^q^7?pdd;5NRC.8ACV1Xo65 at 9]F/Ufhn"`K&c_pl6Ia6d*)C(M7+=;(e(-,42XJhV at YMWK?Kdp`NS6Vae68g>)Ds/=r8"\P2"@1qD4uT2()BO.@/VcbB1OWHp0H*W=K>`A@)cAMS7iJ1o>_*bb^?`=1S2UMX$F.#Va#;(e'B^q>/9DjQN^@`RGTpmr\Ac"AQC/F5K<R at H%OW^YX3 at pRsfi)B+oWgjOWiCP>4-L4l=YHBSsOO+6!af2%g]lDfd46S.`"q497efY+daX[@8,$g]00c&G7\_ at o"Kc,46qqsR"._!U0BrYm6l?T3TQV$!&.rr&@8(.MD5#j<mG^*,6]=eLP+arFZ`]Fc/-50,YI$$="[k06(<R-?gn>+IdiC6hJSg#>`Q52h;[i!2@]P-Pg/?lPZfs!6hgA5"Xq+p6BIjHb=$,QYA>EA at 5qMjrMH0s
 qTrr1*]T=Fp-TD+iQMu:3bhi$%"<PKuR#9U:%Q&MMTWB(Iq$I\ragkJV\@Q0T8]W]$uOEW)PdMEWqYma4fIQt`k`4]>:EcI!GVrJQ^*Pn[KCS@>/1%:g#^BB$(pDaCpA#NFj^3-$^l_idh2_Vjlp<-eP<-#!ep#K%9]_r?8j5A:,e!u4a]Le5e:nGV4kUgoH7G8s;M^W%rStJ.G``4R]P-fT*X\pFq5&lHZW*f=W"c7-N3l4f)3EO2O$1aE,:<7HNr^J2,&(bSo9Md5E9dWfdl`IVrT/#^$AAC\W1JGV&0;@A#]-2Rko+E<7XU.d/1*toY((kdfMAFZ20Xq3CQ:'HCDE[`YT.18mh\psIZ?piQ'CGnrn_cc^`Z/i9H$ZTN:K!o?M6iAg)G*VN%hCl!)3Hg,(Ss6=M&.(;SD^uhR'uV]F2cbjB45L]S9-<#dN#XdAfUF_b!=p\)B+bqo_l0V8eeV8Tb"%GJal;]0f]FA.6e:1:He*NYdHbS at 4M]aENCqRKd+iH.>i6N?bjT<9r9DQ",ZE=b/eC9#u.C.!N+^u>(jV<re2i5fr]:mD?S*s>'PXhPUA3Y?TPnl;^Fuojs[DBDV$p1I:*NRl#0tY6oT+":IoD0h-<(2qkf[h9a<S]]Dq;af.-&tBN(KHr+n+8_Q6g?f^Pq\(SYYraCt+.eCkfLG+eVRYA_ms%\+uq<TuL"7a8-ZF-t at PQ=Q^[eTLK_, at Bm&mBiQlUJ9T`q)$Lnn2(L8CE8?P^XLc]l%AX\^4;=R6iAjD67$gO<D7hr7X[/h3[(\d53>Y]T,7?U&oH-V>NK!U2p:$cr;gVpKtW*iaOncsP1V34C:Z;/UHQ$7"P3t._eul7^ZG6f435R$T2 at M'TWZB<prA!tV9-(M?Ln'&2[6alOr,$J^%1.I:HeIs%<pRp+HIaRB")hg`)9Rrgc<dC78HA=K=cm5(VlB#m13S%0CIq"mnY"[;04C",Pc;l"t/2ET7:9ga!
 rTmTHKu#h'YNgf64:2NN/S(XV+obM*[$[KrPpgZ'!)1Q$HDJ._d+dTUH"qHSs'bQ8(t$f7V('ITbT_nZi;Do^@!.jU)i^&2nZK?@$m9+W.["qerO:&E4-8G[Y(@X'Rn%2ai;IE-q[%7n7)3F/[qgh7#Du[b<uC=^hQ\dqdak`]_WbfZQds:.3&j%l#/2^QGFcGt0#dZKpAg^p94AFB-S-@"KZ<#99h?8kp"=RkTrY4O7,feb^K_GSGNtMSI+7lLdEcnF7r1ch+CBB>AcW]S'A*Z$NDc;=_a_9)[q<(FQD)THN>"?!FgU_-`+kKI(b3n2'1BKdm2T>ueR_-><7!Yc/_'/\%So?(PU9X:T$;N4.+>]fbsea[!]p0OTW<fXQgX('D<0?=nid12<]%S+[lSptO#^Z_hF'/rk\moGinb+1u*5X+INk8&luQ4]R[[?>'_UiDV at Tg_teOP.85=DiPTCecsWUOrUiHJl!I,JIdGS>."hN(`cgW`o8q/pU3<XAoA^m@!(hPF,N+C<&*Rt"^S1 at D=Q9CpfcHR$nfI7-h0oNp$BO.<!bb`+)bF?[13]QD.#9<q)UFBpk/>$4hrI0q6SHl!r&gLbAk?seYiV#ZV'a]0UrZ\(a[]7Z8\n\lgp)52-#5=DE>5')se\0 at .F74$stC#^!-q2>X/**U0gi=Zf$\!XFW/1DtGc^-njf<+q)#Y9Am4_C6uF`E6HoP.,6[#*jaG<7b`@8ASR#d)&lkQiF*&kAOE&<"WjhuaL0G#-Sft"P6PAJ:RtRQ*#t#k)r%kq-.W8We>(J+*XgB_hc7WOna8!;Xduhq2Tc'`lWA%E8Ji;@'(lApkQ`:$GZRm6nF2cNm^<;d#-METQV(d*PhT<Do1JD$QZS:V[gS)p+1',1.0AGU+uT_[0#nUt"KrgKgc##1^^Q-6QDc/pMo@:_nA8:FE at L0b?Ib&Y>b[ZZ&k,7)2]aW8AYBi:Au;"6OO;KkH.A!U6Sqn8J
 LVGIL@?nQ6+T[`cV9]AFB'Uja&+6jlO71pTr4nKbMXggi?&p4][JK5aC9?Hh"W-=-hAgKQ$bjt+.mF_&`(AI2E"'uH4C^hZBk^C<T7E](8%(t;U?.#r,h7:,umO_XrFCBs*+`IBphY]@?=L*n9r!iNGX1+X.1j'l[S0'4J8&Ur4]G5BTH<XSSF]snZ!#$`Rd+gES\8l(2HmmEL/&:;[_`F3>^Mg:\C2$6?8bX8Mbgh4#h-!X39#-8p+Z)AYklfHcAuslfo.AZ/YgaK`mfYV;YS3ULC`A=&h>.>UHA=JJI'bpL\X=Z-1eR[*HN08.iRVl]8\.ctFmo\m:JGiJDM[)g,iPLEkOHjl9.T)(t#B-)9CVQDmuNMM'gDkqmg^$]?S&^(dPUVt7cD(.i^9MkeUt18.G0?G["L[kqH*;akRCI;Z at GD-QO!pOBWZZBSlOPtOtGJr`OXVh.0;XA>_E=&hk&9soY]\#;(Si;35/^6..cr66]of]b;5LDH1+:UbRqhE"8V+M&l(djjg.ieX`)#Ue,th5G3SVlNgA3m=(gLSTJ:iI&./:5qW[;E4h>bg;\qC6NY at bJrt.Gk>t*Lp'g<9Hs&*<XI$"Ts,Ba)4AXsK:.QrQFL9bq,I4.%HU/-0t9pF^hm<>WsQnMi;5)TSuLO]O"NO%'7<bgS4I$"%5$?Pb2qkd4FC'SZ at r8Jf),0_rnpXehnASaifah&&n.0%I)0(eM3b<`X!?:Vi?8jYK_Vne]/3M8od+ZdT^^,4Wr;ot=.tS#`qBuABHTK>@@N3hBZ?BIAR,WY:Zsa*H'.QX2%&LsO)q80Ii1-7aFr27#iN.c,SVrfCTGK[\t/Um73ZhgcpgN3A/P=M0`PF-'9NO)KHaq$#Q$87Ab+8>YEC%tas\Q\E;dfQg#pf_,5K"E2a=tRcINl>,CBk6Be$lZ-l;ZbjhHn*MbkC-oS&/^oq/_SEAIA>;EAPRj<(3GpsNqqK[37#Jna96/;%Jg
 N.qjaLV&J</,<:gN,0bN5*],`f=o#nLAZu'/(c*idN6+/fLa7[jM*@i,#2Nc-RVk")'ssCT[BWq&5j#+%8bU3+bZ(Ync`Pj85i^1dL_)VB!VOu4?U"=.5:qS:"<Z85r^kb\Tr.u[>BWApQX=WW&,8U\9E%JW9<^@Z#rj!%HSb.,TE-e&bS7L4gj],Z(Y$T'gY*,;q`.MN$<U<Mpb]1iV`Tn<);hO&i3^U`Zb[D-R-.tna5)^4XF^eD/7,\nM-c0GOO=lmO>E7;/%S5E-QUu[k12 at fb`PAlcJn-)lu-5Doepn;9uST1[CVFiXX<gFFHuG*$ICTZe<]B9?95X,qG^Z%-JjGpOI-c#/e&AelQVql^mMf?oT7a[Vf5#Qe_RB!=h;1UK^">ACO3Z^qmdq\?PBM0`[.\j7]ASi8B*,l]uZhM%-A\VkA?VqbnMSnEIB($^_4Dm8",*_3[BmmO>CAoGl^ue4Kh1Kh^":^'7P4l^mMfi8A\4iff:Y$W&dmrM^8jpsqSS2W/IWDL\Yg%fULjb"b\4lShG"^U3Fq^&`u[ES]Ui0G0],T,'*gS#!mV[Z"Ch%QO7-_KH<cS)""M!$(p]An0Xq at K9`LOkZMnY]qKd"""(jqpPUcn<o$h(=7,IP>Nh>?ktXlF8*s#:d+'OXU[>c>dq3HXP_+d:CFtSVdXZTW12TAZiD(nVBP^;YM[E>#?6I]fH^p4YRP"V2G&P5D&K`Z*H:M9L>WhZ at 2f7X51:(u_W$u<Y]qKd^as:hnA/`UJkoK2dh$,"P;IM"2Vkgl!=,7_(:UMmVBOmUdkJ at e=kJJ5GU>uaeo,*K8ddo%a=M/"0FQVHAmpl[/=pP]3;?07E!s"V%06^+BaATbnOu<;Kh^"RDHlFumNGsR2U`5m!pV,-<a#J551:'jJnJN at D-J$.n?%%0Cgcd,6bpO9@<;m`YRP%29TfT5T#mprl7`U8UgY%I+j at eMBgCKbe4L+a_.O[<:RHiQ#`E>
 Y1b>54#d^a,)Vf0[Mq\uG$FoV:)M20oE&\r/<FZr!>JMe+2T&"nX\\H_NGO?o>"j_]\D*=oW\Ft!/U6eZ2QOhKCq&>*fPFTJk?2\rgNNRUBaAT2QT_dZNG/Y^_<X%c))c7b+Z@\a49*;W"Lm=JHu)iCBaAUmZ`r,a)Vqi>!UD\M))d6 at Ab08/AeQ-~>endstream
+endobj
+% 'FormXob.c8ba08e347e6847214d84c863a661d07': class PDFImageXObject 
+5 0 obj
+<< /BitsPerComponent 8
+ /ColorSpace /DeviceRGB
+ /Filter [ /ASCII85Decode
+ /FlateDecode ]
+ /Height 45
+ /Length 6345
+ /Subtype /Image
+ /Type /XObject
+ /Width 2008 >>
+stream
+Gb"/l^M at +F(<?FgZ/la at kpGXm3R*^:-A=Nu[=uG79WFn-9&$!o0a%Q43"V8ti5KTh=L`>_PS==SM+pNL-W1X)>0#dm+i=er1NUi)1\Y4hpS?,j08h(22fF0%]DBg`B,1jTzzzzzzzzzzzzzzzzzzzk[`]qf;lL_m>oGng:FS8q+e=j5Q,n at fi@?+-A+3PQ<c?bbO5Agc+B$Id_>Il2qd,\3IgA4:UZTq_3I9s6<aMGUe<@G]-lDbS\4;)1aDaqC85=>/A#Wsz!!!#BkN:Sj=)L,O<V=lOIruckUD;b4bqGBj[8 at rjd18J?3jMl4At5m`PL/$2q763],HgjJ\@qk%NV>XrS7I$B5_fZ<8ig+dHJ+9kj2/3Ne[D!<eH#XMz!+=.fhl]C1SiM;dk\GW0f\Jbs<p9=+;<qD=s%8]d*R.rXrIpZL^&;Kg5[HPHGRf\3eYMm'9^NPp?BkQlz!!$]?,.34sq=tWSr7IYO_%CL#bi^Hk&cO`X5+8;0PL._T1)%jNM2D#`h*87kiIaV68T?l>p+'>nlY+sGBg?G;Y=\fqz!!'CG[qcS:l^Q"Dl"Fu(&Su=.'X_gHq!U=o5#p^be'WQfLgI9pjZ^&.RS*Ehg!s=6[/J,WX\1 at Y[\('9>6t90z!!"h&C.5;;=gWc3nW;=i>\,.,a](-iK\#;S4FXH at lQemrC@=,Q2dX";0-nYP5;&W%<JT/e<=9:N"TSN&z0[QoBCAs=jdYYlhA%9Z/iK2WNk%d`P8Vm.!]'CWS$daRs50,JPi;ioYz!'oS"T71X_,!AM6Fril7b<g17c+B#t*8UMLr[8is-&CVHO$;2u^@CpjP8N:@8N%=JMV'`UO3&=e*>LY1.R.%LFRi,.nmE)Ql&%I=I?S2(*R,[U3.ai"33V=4:"]Bp3T+Q2*e`$2l5&Q4=99/M6o4YuHM-p`bO#N>=1<e\q!tIM^\cm`=_#4PI*Y?`C+#308fp5*;gS<M'BpoPG?UObLt!
 \U:iXoA<CnggAq$],8nI2fz!!%P;n/Sm(.`TJD5%H at 6DJqb=An*fArg(UEOcO8q>!aAG*q?4TYgU>CrBk9oeSd9J at 2-6HbDIa\0).-Nn(K1Q3G<+ZUpd!J2]c#?<!p_u,9s3k;hklqjEm!r<*ahGTk6tUm1sF!(BcP#U\WUDBr_$X at 0.;3:-Ks][,&Tuk!0SSD6G!1+\P0APZU<Mrm8?g3dC>iftl4 at TAOtlq;;0XlG]aOq\Lp-20L-4,(8i*Aopo(3>8QLPV at UR@BrBq91>,:(SEoW_CHAL3NMWPOmeHRm&/q&Jdp2W:/;Q:3cV;Wz!!'fSAW.;'\I(:a4rQPMd-s;r8qRmUoMR"B,LgHiBLZ^<d+m>N^YZN7rM42mKF`CA1+gb)%#=JpT[f8"QlUHVrJK1?269.AT[0^>&^?'4*XSh]*dkV\jr;TP<EX.NN1L!i:2,iVj(6(fi5^Z>p9\,[R&`jU=`ZI4(KW*l=1>4'HRZMR.*%]2g-B>TO@\]cDOGGqUh)IObZ<X#d)IJ,7A\i.[-bD'8+6YDXraZ6f'V#9=uYmsggUHfz!.`UneV]:qO-0(el%)e9s"nAfebWrGX0BW&X?*24SR28?[&:9L8\Hn(%[A^?(hfn8hWcS7S?Z`Idcq_*dYr<PHq$VCr9kWUNomgb4H^ab.MK5_iu<tJ1N^hA5HX[;[-dkKLU8X5/&$@Mq0BZ_pWGYe3_fCBrJR#LdYupOom1,iA?kG6Y(].,m5LufXtuH&.T!fJ-L`KI6)7_Te]:A+C=P'12`P=Kz!!(q:dcqH5-akllG0lFUoX[;ap!LpL<`CYFUT-db35%(/N812llMKV*K2Q at 48S]kjVD?lVC%3bpk81K`^S<C.ip/DZK?EFAi>h at 9\nr&6hIf8X7t8pu\GUH9n3Og;oPn$&nNKK7As182V32QWiEB?B];9.=<4a]hQWO(kdM*"k:"o#XH4nML"onW'!!!!YBllGAj.3t:B[_
 b=IH1:Pj^Q+El%mfKN44GFLujWuK0A>daqc31U8[!W)%N@;N`Q`\f!`f, at J=2fI?&&4o36Y<o];3Q'7Q]f1ST"%1spWQ#bN#\UW<klm`";.0]D+p]4]H(l/G.niN6VH#>%q8S1gaD$NY*B`MDTb<i,/r&$9<imO-<S"OX)LROUq4W at hr3WfLct9?.smH!KqUz!!!#M%AsLPBap*1>nl&!LmK!^7<_;8SS^_DH0*&`%mS`*9ZYF)D,&n"/+<#N(@C;MQ7>%"D)A<]?P>mdUe at P33sKris!,"D(10<GZ8/GpU\VpgZfT/L5e-_m3l/NWCY]tO^lQ7Bm*1P-&8j&%XN^+Oj[@8us3!LmVWY5`If2'8G+.r=Zh-Mj$'VOrXgG1._<Ia!V.VO>X8E+J7P.h%g1B6PR[Kdb+)%!`]WhM<z!!$ecdfb[Jf%K3I42KC-s#&#de;eME*Xgf3kk5`#s"b++hq^NHR[e4p$teI[ldI[)d at SbpU<H+_8sTO2"Xguo,W@@QauFFNY?(g\<L@@t2Z2+4q:]Ck)@,=#K$rRlD8%_3V.FCHlp!BeXn,5-^lQ7BN4"c(=H(4aR?lZebJWYZ]bdSAQgVH_:k"[8]R0?WeV_[*)uo%ek_*t_9tM1"(Cd[cCq6iN>!;8\OY#XBQ(K2QW+A\bl;`2KY*(V(^%KL^X+b6M'H^h\a^q=rKFgHU+bUCnBH:[)L&-FW(T+I$3>KQ!<taCXHbmJ^7<lPuO4Nf@"2_96e&r0k;gr:g)]84i(1uugCo!"?1F(WCF[tR`cluu#,O<J?XkBr?kSq6FG%F28NHUR')qf&M`T:5RF3FYL`er'QbIB=6+r=kHG^<Neipra2\K>)4.PK?skHiYpj54+gQHZ^O_72tK>0<'1P3M&l at 8GJN'n:fP]-fAYA4=[.)mmbI.4t-U]EOL9 at 5sBF/cG]E9Wl?V8Xp>Y#U+j463s9]bP8]`.<sMEHb"55Zn#YYXC_K5cS<qn
 N@\tuM:(gu+\lfS]1+T1RL7Z8?O"=b"_LIb7^Jj_;`"mY8hCn7A)DQ<)6c3&bd5gHI'$])8Z:1M)QN2hKK81F+9)P#dBR9Dr2bh"M&,*bJ+:t'eZDO!`@n\B_u`$G+>B&I$r4DMN)s*'Y26g=a*:NPqdB7KBptHBZY8nWLd,NIYiVpdae(pLf^f$DYt89-==Js'B^AtHKFgHU+bUCnCEtLVqk,H;^#![J)YQo7XdnIUmlhh"CO!8!7Y[2^3F84]W];bEC2V9".V#obh:hAJ[VB#l/82/(9+/p&FE2d#4]NN(F#Ed+VrTl#J008b)=+m+b\(3d::/JOS!<d=`_JpEWlQd>G(A%q1\k3f%GcMTo8>@dhA at K`+g!9c"R.n#TNlpEXc9[tKA/u;hXUFlC`XV3r<7ic63n`f&4.aC>+0Zia3^nY^D#hQi%^VjfqUa[=DN/h]8W]3GYP[=WVLI-YH0i-e=X1Da]35QW at P@NhUo34h'/tr9#J*4q-#XJ$e4\*Wo:.Q+QkcIJ04e7XkK&jV5d\Ll"lbt>9WS&l*JK[GU"M3ofV,^iJ.q5J<*h at g:c3:G/1r2S[I<=MjEo:g"ekL1*C9\T,J^bb7;fGknp;J=4goL.Z"g*#U+j463naA>ZK7c8,U)I^i+7.7RV!;9G.MAD_u- at G#6_Ap$>_$4.i+N0+CjhN%iij/=WN%Bip'11ojI-1"!!UGj\uX6edjr]s[[]Lu45N4e4:U*:Pb5K;3`oR<<LpGe*c\&g.,'dq=:r:`V+5VrGM:Zkb\b?KXVccMb]3H%PZkn`An:LD=_\:OgZ[F]"O5*NotrKFgHU+bUCnX"!pn4hiMQBJalh/&RQ`6[nH)T5!XP)`49L.]KW(FPL`OH1n*7GYin,s!D*^#q[p at .3*XYM=5T$1154R7M.6-d<oTFDkJOsg$"*&g<VJYr%tPSVAB]K)o_Tkj[A_!It$_Nh6Z:7gAC'JdPA5EZ30m0Au8ima'&b
 i&5/W7FYG0*_Y6C;)EgB^pR6Kul5l-?2]3E]Yd]`_mMI=J3L4[a#U+j463n`f:8YD5lW[YW7H:qEg6JZ%Tt)R at SL;6eG\Io\mN2r$"6jtmSSkS0GYil,[bo\R`=p<2dH3\4lKjT"2LN(%b)YUC7:eFRn63r50/poknC+c<rB at m!'#uXX-^kQqE-84b5\#_m8>9\-O`=lQNjV\-*@p"q;pLC3:]'$jbrS$SA;WtmUjH[@)ihMcX"oI,OAEXJOd0hQFD)s?9=$\GGYXE,#U+j463n`f&6cY]F27S"^)@XN:F>OP!jt8.m25im(j8a/(*h at NCeO)6[h38>qMe4!g'XtRX3o`t(uAQ\!uh?)^6,*pPJmM at o=9f\m:a4GTP9gV[)uqL\&RM!K`7"""+H[KP42O<CXa<lIm/=$3RRE8B-H\lN-QgM7 at KE3k/3i,)/k?FXp)AXb=Io at DZ3+&d:7B\d4. at HUmYdqAFG3i.;M6`Jn&.;q^uBg[H\daUbiJNH%?Mn#U+j463s]UZo%4P_dSiqNIud)f0nA4]G$[#S6DYJdb'dF<;he?a'PfQ:msp at X'o&NDWfK:8R&5_)%We`=E^\&IV`?)'=q7/eWHWHkhEH_18\6&WRHUX8;p9taXm$7[5Qpf$R+OF5;N!Kl%+dKJW1f,[.EIJ"+H\:brE16N$4[$EVXm"lL\K,GN&5OhSIaE;SQT=/A99;YP'F%2Q'gg>&!)-)4[>E0j<Zd8@<?sY+0pU\+\SC0'YIl469QkV2<O.V:PhnKFgHU+bUDq7+F-_K<@bBB_2b2B8JU3(u+jpJl`hA2QPH*DJ^&>%=`Hj$b=8P+HTbW>'oXb&>MmhLU<AlpF#l_:8-7Q[B2c.hkp?1=J/1`6X$n[40+K5p=e7aEhsc^R[TErblL'.[D+Co3Q2;4>`c)Rm`":#s5KlT&-'g7n%RS+&?biT^[K6nH8=,H*oB'CS2Vn""`7/Z!2]XtD(DEZZ1E^bb"i
 T9)mfJ9p>XNo"k(n#nr9b5A]HPT9q7"#)^5P2KFgHU+b\3'b-n:?5.kadCt+X#ps2q[P8gsbM";^YV^XDq[.`5!VdUdG?)j;HAaj5/_LG?;4fP55D"H>Tb_ at u%T"i(HSup8Pn$>8XoA$dLD5AuYo?@:`cA=U41rr]lhr8B;924HoMc6O[YkaF1eX2#RY6ADt/=^/63BG_O7SU5QkaruPf,]$pN5oMBAJo?LCI02a4lO+qhEf4[J'?tVQiI*dz`s*dQ8lSJ8i'5iAn06#i^5WE9_2 at mh_iOPtZ?T4kBn5SuC?[gc0(g:sC04'h[sJ_tGO0F1cXU2aa,\q6WU;*T1uD5kXR^djXR\g5baE/T3,q^C'I/gMX_`cnHZ?IagIE@[q=&l]q,LUYF2,_onh)lg>4=WU[#28Od>C.SjPTZ(3el'_hgGTsnGNgsz!!$+Y4Rp#1(=TQ&PU<;j*P,D`4%6Tu6>8cmK;;2%F'*aaL@]$/`-H*k<i\!TZ@@i"C.EE"*,AlH1I/PJNLnJ=\7j-jjtQ7;^8Dl\A8c7rXpfMWa at pZj8^eibOcFQi7QYfIXq%i*1k$*e0uDTr,sthljX+=B*V&4DmFO?fX8`=e-tf<b9D%U:NB+TOz!!!#MJt$s+g!2s,`l9+*B=N+HO.SLtj at F,tinlpV46XPhH\3)+eKaI&.2VD)eLFLPL,L'LBlldCCWNar)(QF at lrt@\C9mA[m1r=9;H<*&Xk;4e)i:+q'<5DMS4HkE<-<*)2[;HeQRQckL'Pm-<`<"?0<RJKY&7rd[V"5VHS21U:Do?C,q>FpW`=*1[GXh)<5&5ka(R&r+B"6W7 at .qo%[2CrDuB9OeV"g+z!!!",Q20C:?U+I!4#8V:SA- at 7Oe5.u3TRV#<Ecf(Zr1J>CW?<kJ%TafT&s.0'#lp#Yp%Zg6hR8Q.lSN8Fc[*\g_.03YJ$Elmo2N=H98rMWiFd[_#cDZT4c_Rpf*#iX49+OL&@\SR$X
 Fip/\!h98b>A(MQG5gU/$`IEe+^PCZA2&McSo%h1`t=sq)8k+5O;H:FsugiHj7cU9Vr[W(n.$0aMHQ*LA;]stY!]smb5p!9ui=atndmJVs0WXaDARtQEW%n^?&>rqdb#YtKGJsKi.3M>2WSR\HQHj-,b@?#'a82!OD#=g7C7XI?jIP/CSJHl/TzJE=)KJ!_;@B)&;FBQ8lsYHmcp3 at Dto6or%&)_5D^]*b at 3/l%nsI.d$%,/"?]q;(cu[i\!i]/g\hkfiBmd+'58OpRa'BfY"M21:q_5QLibzJ<PM'8F*R^"onW'z!!!#'p1U?PSiM:9fi8+Szz!*FTTisXu3bH;``zz!5R<`*CMmEZ&\kbzz!%/$7+ft_Ezz!78m6j6,lZn4cp+Xr79?zzzzzzX9&>)@BDpR~>endstream
+endobj
+% 'F3': class PDFType1Font 
+6 0 obj
+% Font Helvetica-BoldOblique
+<< /BaseFont /Helvetica-BoldOblique
+ /Encoding /WinAnsiEncoding
+ /Name /F3
+ /Subtype /Type1
+ /Type /Font >>
+endobj
+% 'Page1': class PDFPage 
+7 0 obj
+% Page dictionary
+<< /Contents 11 0 R
+ /MediaBox [ 0
+ 0
+ 595.2756
+ 841.8898 ]
+ /Parent 10 0 R
+ /Resources << /Font 1 0 R
+ /ProcSet [ /PDF
+ /Text
+ /ImageB
+ /ImageC
+ /ImageI ]
+ /XObject << /FormXob.0086924a45e007495af99df70126eb1b 4 0 R
+ /FormXob.c8ba08e347e6847214d84c863a661d07 5 0 R >> >>
+ /Rotate 0
+ /Trans <<  >>
+ /Type /Page >>
+endobj
+% 'R8': class PDFCatalog 
+8 0 obj
+% Document Root
+<< /Outlines 12 0 R
+ /PageMode /UseNone
+ /Pages 10 0 R
+ /Type /Catalog >>
+endobj
+% 'R9': class PDFInfo 
+9 0 obj
+<< /Author (\(anonymous\))
+ /CreationDate (D:20000101000000+00'00')
+ /Creator (\(unspecified\))
+ /Keywords ()
+ /Producer (ReportLab PDF Library - www.reportlab.com)
+ /Subject (\(unspecified\))
+ /Title (\(anonymous\)) >>
+endobj
+% 'R10': class PDFPages 
+10 0 obj
+% page tree
+<< /Count 1
+ /Kids [ 7 0 R ]
+ /Type /Pages >>
+endobj
+% 'R11': class PDFStream 
+11 0 obj
+% page stream
+<< /Filter [ /ASCII85Decode
+ /FlateDecode ]
+ /Length 1645 >>
+stream
+Gau0CgN)%,&:O;3s']7iEBH-RJlhWI\TQ=ID;o<-m504k8Piqk&i9VmdGK-a&1'rGX/7Zn=V?Bn//MsF?L36$0@,#X%D^.5gq<<qA$@N"$_.3_n);O^r9XF\bfCWG$-ARt7&(.ohU[]/6CdhTCuF=H"%p?!VQ0k'd<G)[g"a8kjVM$*NYZ,:NWl,_E7r*\+A![c(?im9g!*aS2o!PcESVmDY^ctPE*\]_]N?`U,'H*bM:>2W[6-\NAF,"$[!m6p*/-[Dm^S&'Z6\OL,5`Q!;%ggk$h>RaP/uf`jQ18A>-eD\f8B&lQ6$?Af/el&Y1`2D#EZG"c";h`,NK7uT.b(N-[Q:EG^hYon=I+iJZm#T(JlQbZM-J0Y!B-oW4,YQA.P[R=]K:<Fp5Gk^q3A2T!t*f=TBP+^?GEneKTbYcX"AuXKn!_B<lps4UFq9iT'75OD^#N6!&3*2paK at lgho\`bZ,%%)dDj"P+jpOZquOqnr54CGZt9(k($*lP&bWi<^3$0T4qr'M8 at 6W=7AmW)BcSNgj3_AR!t$\B!>D$GlD^it"Ip-!J];:$=b0^64*M^$/@Li5qZ31`b8#aEmr5V0$(@"(AX at FBQ#MfHZJP,PnM$2+!hh;04eO&kW6dTcA<p&TVu.W,kK5-rCd'^31>eY%>@.G`^A7.Bd;5:')M+C_)r?=Pu81fc=NsHIiF!6TGaGASm`.(p_*XVHg[O6noY8+->.q](TC0O3<4j@%+n1liN-f"Y"fjNLElQfC&'WCTM(-)d0>Q$Ys:RO)A&a;6 at cU?VW6Mppui_gZs1D7!)Faq/kEpRVZ-d)no^N8h<Uh*[\=`X=7mVFI4Tn8n,LS1e-7\M0OiQm6muC8a9&AqF_2Gl\0#U?mCHiFc?le*V%PrM.8QG8tK6"VY)&O5^%crYO1:_Np!,MD2t&:]__-<:E](\l at IQ]eS7T$Hk`NQlfuaZRtW5Jf_j"N'm([^kRCQ'/1e?UL'HJL\cV?
 cHGH="RU<n/!DD2_I%U'ejViftb`/r,A9Xp?Ch$Ab<aF)Wk1i.90O=</FU_UQe>1=.h2`QA==Z)`M1s3Qh5kq-;%l#]FYCY0"FSS%_$=Vcr\m[@li#HJ+*GaiL/e-`0]2feNJbnVlGTC<<AaK8``BosT@@8Db)DHCkCZ3NWm&bCR/g6&Xta*Ne5SWu at T+CXU$-&t!=&am0SaFaq\df_q\JV)nC^BDYpc,1p*fUsi$Dd%co&.[j2LA!Qk<`HpT:%]%q$'pNYfZ(dgb>U"l2DrgV+8A,Vle\>L=e9s%f;o;`/FK\Y%t%eq-NI5(d]l<L!>"1f%n,o''IC1KC^$G?>9&@OI)/CeDL(S:J1M18=c('iordRH&TleUpL9hs+mDNI]\bp>r[Bbg:<L-=HK,h7;JEJm!c?`*l3 at OA:al'6-PIO2UeI1$_V7q?s]OqYb!4:Lf_]UDUi/7lYlbM%`:a2"T<YP1a.8E7:AVN='_2&CGJ:QeQ?b3utQ+nGrGN]p[oG+$VK^qiO+B0h3Lu,hS;i$l<1HL?.JKZq,KVc^>](UGc1gQNK]oDa9Z&**/p'3nD5Hn\O1&886"Y=-$*d6;_Z+ot2diL^2CFNBLQfNW1#`fEQ,-C,j+PS5bCJ]-m;[4JYA0;ZktUlu+&%>,q~>endstream
+endobj
+% 'R12': class PDFOutlines 
+12 0 obj
+<< /Count 0
+ /Type /Outlines >>
+endobj
+xref
+0 13
+0000000000 65535 f
+0000000113 00000 n
+0000000233 00000 n
+0000000398 00000 n
+0000000614 00000 n
+0000007014 00000 n
+0000013597 00000 n
+0000013784 00000 n
+0000014178 00000 n
+0000014314 00000 n
+0000014584 00000 n
+0000014691 00000 n
+0000016481 00000 n
+trailer
+<< /ID 
+ % ReportLab generated PDF document -- digest (http://www.reportlab.com) 
+ [(\223\367y\354\321\362\222Ju\262\315V\3448<\372) (\223\367y\354\321\362\222Ju\262\315V\3448<\372)] 
+
+ /Info 9 0 R
+ /Root 8 0 R
+ /Size 13 >>
+startxref
+16533
+%%EOF

Added: z3c.rml/trunk/src/z3c/rml/tests/input/rml-examples-045-cmyk.rml
===================================================================
--- z3c.rml/trunk/src/z3c/rml/tests/input/rml-examples-045-cmyk.rml	                        (rev 0)
+++ z3c.rml/trunk/src/z3c/rml/tests/input/rml-examples-045-cmyk.rml	2012-12-19 19:23:13 UTC (rev 128792)
@@ -0,0 +1,105 @@
+<!DOCTYPE document SYSTEM "rml_1_0.dtd"> 
+<document filename="test_045_cmyk.pdf" invariant="1" colorSpace="CMYK">
+<docinit>
+	<color id="BLUE" CMYK="[1,0.67,0,0.23]" spotName="PANTONE 288 CV"/>
+	<color id="BLUE75" CMYK="[1,0.67,0,0.23]" spotName="PANTONE 288 CV" density=".75"/>
+	<color id="BLUE50" CMYK="[1,0.67,0,0.23]" spotName="PANTONE 288 CV" density=".5"/>
+	<color id="BLUE25" CMYK="[1,0.67,0,0.23]" spotName="PANTONE 288 CV" density=".25"/>
+</docinit>
+
+<template pageSize="letter" leftMargin="72" showBoundary="0">
+	<pageTemplate id="main" pageSize="A4">
+	<pageGraphics>
+		<setFont name="Helvetica-Bold" size="18"/>
+		    <drawString x="35" y="783">RML Example 46: Cmyk</drawString>
+			<image file="logo_no_bar.png" preserveAspectRatio="1" x="488" y="749" width="72" height="72"/>
+    		<image file="strapline.png" preserveAspectRatio="1" x="35" y="0" width="525" />
+	</pageGraphics>
+	<frame id="second" x1="35" y1="45" width="525" height="590"/>
+	</pageTemplate>
+</template>
+
+<stylesheet>
+	<paraStyle name="normal" fontName="Helvetica" fontSize="10" leading="12" textColor="black"/>
+	<paraStyle name="h1" parent="normal" fontName="Helvetica-BoldOblique" fontSize="24" leading="28" textColor="BLUE"/>
+	<paraStyle name="spaced" parent="normal" spaceBefore="12" spaceAfter="12"/>
+	<paraStyle name="intro"  fontName="Helvetica" fontSize="12" leading="12" spaceAfter="12"/>
+
+    <blockTableStyle id="grid">
+        <blockAlignment value="center"/>
+        <blockFont name="Helvetica"/>
+        <lineStyle kind="GRID" colorName="black"/>
+        <lineStyle kind="OUTLINE" colorName="black" thickness="2"/>
+    </blockTableStyle>
+
+
+</stylesheet>
+
+<story>
+<storyPlace x="35" y="660" width="525" height="73" origin="page">
+<para style="intro">RML (Report Markup Language) is ReportLab's own language for specifying the appearance of a printed page, which is converted into PDF by the utility rml2pdf.</para>
+<hr color="white" thickness="8pt"/>
+<para style="intro">These RML samples showcase techniques and features for generating various types of ouput and are distributed within our commercial package as test cases. Each should be self explanatory and stand alone.</para>
+<illustration height="3" width="525" align="center">
+<fill color= "(0,0.99,0.97,0.0)" />
+<rect x="0" y = "-12" width="525" height="3" round="1" fill="1" stroke = "Yes" />
+</illustration>
+</storyPlace>
+
+
+	<para style="h1">Tests of colour separated PDF output..
+	</para>
+	<para style="normal">On screen, you'll see various blacks and shades of blue.  The on-screen
+	appearance depends on CMYK equivalents you supply.
+	</para>
+	<para style="normal">If you open this document in Illustrator, Quark, Acrobat etc and check the
+	separations, there should be plates for black and for Pantone 288. The black/greys should be converted into
+	cmyk automatically.
+	</para>
+
+	<illustration height="50" width="300">
+		<setFont name="Helvetica-Bold" size="12"/>
+		<fill color="black"/>
+		<rect x="0" y="10" width="30" height="30" fill="yes" stroke="no"/>
+		<fill color="[0,0,0,0.75]"/>
+		<rect x="50" y="10" width="30" height="30" fill="yes" stroke="no"/>
+		<fill color="[0,0,0,0.50]"/>
+		<rect x="100" y="10" width="30" height="30" fill="yes" stroke="no"/>
+		<fill color="[0,0,0,0.25]"/>
+		<rect x="150" y="10" width="30" height="30" fill="yes" stroke="no"/>
+	</illustration>
+
+    <para style="normal">The swatches above should fade from black to grey - 100% down to 25%.</para>
+
+
+	<illustration height="50" width="300">
+		<setFont name="Helvetica-Bold" size="12"/>
+		<fill color="BLUE"/>
+		<rect x="0" y="10" width="30" height="30" fill="yes" stroke="no"/>
+		<fill color="BLUE75"/>
+		<rect x="50" y="10" width="30" height="30" fill="yes" stroke="no"/>
+		<fill color="BLUE50"/>
+		<rect x="100" y="10" width="30" height="30" fill="yes" stroke="no"/>
+		<fill color="BLUE25"/>
+		<rect x="150" y="10" width="30" height="30" fill="yes" stroke="no"/>
+	</illustration>
+
+    <para style="normal">The swatches above should be tints of Pantone 288 - 100% down to 25%.</para>
+
+
+    <para style="normal">Now we'll check the colours in a table</para>
+
+    <spacer length="6"/>
+    <blockTable style="grid">
+        <tr><td fontColor="black">Black</td><td fontColor="BLUE">Blue</td></tr>
+        <tr><td background="black"></td><td background="BLUE"></td></tr>
+    </blockTable>
+    <spacer length="6"/>
+
+    <para style="normal">We can now <font color="BLUE75">pass colours</font> through into <font color="BLUE50">substrings</font> in paragraphs even
+    though that's handled by a different parser.</para>
+    
+
+</story>
+
+</document>



More information about the checkins mailing list