1 % Copyright (C) 1996, 2000 Aladdin Enterprises. All rights reserved.
3 % This software is provided AS-IS with no warranty, either express or
6 % This software is distributed under license and may not be copied,
7 % modified or distributed except as expressly authorized under the terms
8 % of the license contained in the file LICENSE in this distribution.
10 % For more information about licensing, please refer to
11 % http://www.ghostscript.com/licensing/. For information on
12 % commercial licensing, go to http://www.artifex.com/licensing/ or
13 % contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14 % San Rafael, CA 94903, U.S.A., +1(415)492-9861.
16 % $Id: gs_pdfwr.ps,v 1.52 2005/10/20 13:04:16 leonardo Exp $
17 % PDF writer additions to systemdict.
19 % This file should be included iff the pdfwrite "device" is included
22 % ---------------- Predefined configurations ---------------- %
24 % These correspond to the 4 predefined settings in Acrobat Distiller 5,
25 % plus a "default" setting that doesn't downsample images.
27 /.a2112 [2 1 1 2] readonly def
28 /.a1111 [1 1 1 1] readonly def
30 /Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique
31 /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique
32 /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic
36 % Parameters common to all non-default configurations.
37 % Note that the default configuration overrides a few of these.
38 /.defaultImageDict mark
40 /HSamples .a2112 /VSamples .a2112
41 .dicttomark readonly def
42 /.distillercommon mark
44 /AntiAliasColorImages false
45 /AntiAliasGrayImages false
46 /AntiAliasMonoImages false
47 /ASCII85EncodePages false
48 /AutoFilterColorImages true
49 /AutoFilterGrayImages true
50 /AutoPositionEPSFiles true
52 /CalCMYKProfile (None) % (U.S. Web Coated (SWOP) v2)
53 /CalGrayProfile (None) % (Dot Gain 20%)
54 /CalRGBProfile (None) % (sRGB IEC61966-2.1)
56 /ColorImageDict .defaultImageDict
57 /ColorImageDownsampleThreshold 1.5
58 /ColorImageFilter /DCTEncode
60 /ConvertImagesToIndexed true
61 /DefaultRenderingIntent /Default
63 /DownsampleColorImages true
64 /DownsampleGrayImages true
65 /DownsampleMonoImages true
66 /EmitDSCWarnings false
67 /EncodeColorImages true
68 /EncodeGrayImages true
69 /EncodeMonoImages true
72 /GrayImageDict .defaultImageDict
73 /GrayImageDownsampleThreshold 1.5
74 /GrayImageFilter /DCTEncode
76 /LockDistillerParams false
82 /MonoImageDownsampleThreshold 1.5
83 /MonoImageFilter /CCITTFaxEncode
87 /ParseDSCComments true
88 /ParseDSCCommentsForDocInfo true
89 /PreserveCopyPage true
90 /PreserveHalftoneInfo false
91 /sRGBProfile (None) % (sRGB IEC61966-2.1)
94 /TransferFunctionInfo /Preserve
95 /UseFlateCompression true
97 .dicttomark readonly def
99 /.distillersettings mark
102 /AutoRotatePages /PageByPage
103 /CannotEmbedFontPolicy /Warning
104 /ColorACSImageDict .defaultImageDict
105 /ColorConversionStrategy /LeaveColorUnchanged
106 % /ColorImageDownsampleType
107 % /ColorImageResolution
108 % /CompatibilityLevel
109 /CreateJobTicket false
111 /DownsampleColorImages false % override
112 /DownsampleGrayImages false % override
113 /DownsampleMonoImages false % override
115 /GrayACSImageDict .defaultImageDict
116 % /GrayImageDownsampleType
117 % /GrayImageResolution
118 % /MonoImageDownsampleType
119 % /MonoImageResolution
120 /NeverEmbed .standardfonts
121 /Optimize false % override
122 /PreserveEPSInfo true
123 /PreserveOPIComments true
124 /PreserveOverprintSettings true
125 /UCRandBGInfo /Preserve
128 /.screenACSImageDict mark
129 /QFactor 0.76 /Blend 1 /ColorTransform 1
130 /HSamples .a2112 /VSamples .a2112
131 .dicttomark readonly def
133 /AutoRotatePages /PageByPage
134 % /CalGrayProfile (None)
135 /CannotEmbedFontPolicy /Warning
136 /ColorACSImageDict .screenACSImageDict
137 /ColorConversionStrategy /sRGB
138 /ColorImageDownsampleType /Average
139 /ColorImageResolution 72
140 /CompatibilityLevel 1.3
141 /CreateJobTicket false
144 /GrayACSImageDict .screenACSImageDict
145 /GrayImageDownsampleType /Average
146 /GrayImageResolution 72
147 /MonoImageDownsampleType /Average
148 /MonoImageResolution 300
149 /NeverEmbed .standardfonts
150 /PreserveEPSInfo false
151 /PreserveOPIComments false
152 /PreserveOverprintSettings false
153 /UCRandBGInfo /Remove
157 /AutoRotatePages /All
158 % /CalGrayProfile (None)
159 /CannotEmbedFontPolicy /Warning
160 /ColorACSImageDict .screenACSImageDict
161 /ColorConversionStrategy /sRGB
162 /ColorImageDownsampleType /Bicubic
163 /ColorImageResolution 150
164 /CompatibilityLevel 1.4
165 /CreateJobTicket false
168 /GrayACSImageDict .screenACSImageDict
169 /GrayImageDownsampleType /Bicubic
170 /GrayImageResolution 150
171 /MonoImageDownsampleType /Bicubic
172 /MonoImageResolution 300
173 /NeverEmbed .standardfonts
174 /PreserveEPSInfo false
175 /PreserveOPIComments false
176 /PreserveOverprintSettings false
177 /UCRandBGInfo /Remove
180 /.printerACSImageDict mark
181 /QFactor 0.4 /Blend 1 /ColorTransform 1
182 /HSamples .a1111 /VSamples .a1111
183 .dicttomark readonly def
185 /AutoRotatePages /None
186 % /CalGrayProfile (None)
187 /CannotEmbedFontPolicy /Warning
188 /ColorACSImageDict .printerACSImageDict
189 /ColorConversionStrategy /UseDeviceIndependentColor
190 /ColorImageDownsampleType /Bicubic
191 /ColorImageResolution 300
192 /CompatibilityLevel 1.4
193 /CreateJobTicket true
196 /GrayACSImageDict .printerACSImageDict
197 /GrayImageDownsampleType /Bicubic
198 /GrayImageResolution 300
199 /MonoImageDownsampleType /Bicubic
200 /MonoImageResolution 1200
202 /PreserveEPSInfo true
203 /PreserveOPIComments true
204 /PreserveOverprintSettings true
205 /UCRandBGInfo /Preserve
208 /.prepressACSImageDict mark
209 /QFactor 0.15 /Blend 1 /ColorTransform 1
210 /HSamples .a1111 /VSamples .a1111
211 .dicttomark readonly def
213 /AutoRotatePages /None
214 /CannotEmbedFontPolicy /Error
215 /ColorACSImageDict .prepressACSImageDict
216 /ColorConversionStrategy /LeaveColorUnchanged
217 /ColorImageDownsampleType /Bicubic
218 /ColorImageResolution 300
219 /CompatibilityLevel 1.4
220 /CreateJobTicket true
223 /GrayACSImageDict .prepressACSImageDict
224 /GrayImageDownsampleType /Bicubic
225 /GrayImageResolution 300
226 /MonoImageDownsampleType /Bicubic
227 /MonoImageResolution 1200
229 /PreserveEPSInfo true
230 /PreserveOPIComments true
231 /PreserveOverprintSettings true
232 /UCRandBGInfo /Preserve
235 % Define distiller settings for the ps2write device and for the ps2ps2 script :
237 /AutoRotatePages /None
238 /CannotEmbedFontPolicy /Error
239 /ColorACSImageDict .prepressACSImageDict
240 /ColorConversionStrategy /LeaveColorUnchanged
241 /ColorImageDownsampleType /Bicubic
242 /ColorImageResolution 600
243 /CompatibilityLevel 1.2 % Always 1.2 with ps2write.
244 % /CreateJobTicket true % Not sure
247 /GrayACSImageDict .prepressACSImageDict
248 /GrayImageDownsampleType /Bicubic
249 /GrayImageResolution 600
250 /MonoImageDownsampleType /Bicubic
251 /MonoImageResolution 1200
253 /PreserveEPSInfo true
254 /PreserveOPIComments true
255 /PreserveOverprintSettings true
256 /UCRandBGInfo /Preserve
258 /PreserveHalftoneInfo true
259 /TransferFunctionInfo /Preserve
260 /MaxViewerMemorySize 8000000
263 /ASCII85EncodePages true
266 .dicttomark readonly def
268 % ---------------- End of predefined configurations ---------------- %
270 % Set optimizations for converting PostScript to PDF.
271 % The ps2pdf* scripts invoke this.
272 /.setpdfwrite { % - .setpdfwrite -
273 % Set a large VM threshold to reduce garbage collection.
274 currentuserparams /VMThreshold get 3000000 .max setvmthreshold
277 % ---------------- pdfmark and DSC processing ---------------- %
279 /.write_small_positive_real % <file> <real> .write_small_positive_real -
280 { % The argument must be grater than 0 and must be strongly samller than 0.1.
281 % The conversion isn't simple due to the low (24 bits) precision
282 % of the floating point arithmetics in Postscript.
283 % For best result we first use the 1e8 factor since its binary
284 % representation 101111101011110000100000000 well rounds into 14 significant
285 % bits : 101111101011110000000000000 .
286 1 index (.) writestring
289 % Will need not greater than 0.1 due to a rounding below.
293 1 index (00000000) writestring
295 % Now it is not smaller than 1e-9, use simple digitizing.
301 1 index (0) writestring
303 % Now 0.01 <= n < 0.1, but rounding may give 0.1 .
304 % Convert to integer with 7 digits precision :
305 100000000 % precision factor 1e8 % f n r
306 dup 10 idiv 3 1 roll mul 0.5 add cvi % f r' N
308 % The rounding overflows, suppress it.
309 % Note it carries out an additional digit,
310 % that's why we needed <0.1 above.
311 pop pop (1) writestring
313 % Didn't cary out, put 0.
314 2 index (0) writestring
316 % Continue the simple digitizing :
317 { 10 idiv dup % f N r' r'
318 2 index exch idiv % f N r' d
319 (0123456789) exch 1 getinterval % f N r' (d)
320 3 index exch writestring % f N r'
321 dup 3 2 roll exch mod % f r' N'
323 % Don't write trailing zeros.
332 % Encode values to pass for the /pdfmark or /DSC pseudo-parameter.
335 { dup xcheck { ({) (}) } { ([) (]) } ifelse
336 % Stack: file obj left right
337 4 1 roll 2 index exch writestring () exch
338 { exch 2 index exch writestring
339 1 index exch pdf===only ( )
341 forall pop exch writestring
343 /packedarraytype 1 index
345 { 1 index (<<\n) writestring
346 { 2 index 3 -1 roll pdf===only 1 index ( ) writestring
347 1 index exch pdf===only dup (\n) writestring
349 forall (>>) writestring
352 % If the name string includes any non-regular characters,
353 % write it with two preceding and one following null character(s).
354 % (Null characters in the name itself are not allowed.)
355 % This non-standard escape convention is required for passing names
356 % that include non-regular characters, because PostScript provides
357 % no way to do this. The pdf_scan_token procedure in the C code of
358 % the pdfwrite driver is currently the only place that recognizes
360 dup .namestring (\000\011\012\014\015 %()/<>[]{}) .stringbreak null ne {
361 dup .namestring (\000) .stringbreak null ne {
362 /rangecheck signalerror
364 1 index <0000> writestring 1 index exch write===only 0 write
370 % Prevent using floating point format - see Bug 688167.
371 dup dup 0 lt { neg } if 0.01 lt {
376 1 index (-) writestring neg
378 .write_small_positive_real
384 .dicttomark readonly def
385 /pdf===only { % <file> <obj> pdf===only -
386 .pdf===dict 1 index type .knownget { exec } { write===only } ifelse
388 /.pdfcvbuf 30 string def % enough for most arguments
389 userdict /.pdfcvstring () put
390 /.pdfcvs { % <obj> .pdfcvs <string>
391 currentglobal exch false .setglobal
392 /.pdfcvstring () store
393 % We can't handle long values yet.
394 { pop dup length 0 eq { pop } {
395 /.pdfcvstring .pdfcvstring 3 -1 roll concatstrings store
397 } /NullEncode filter dup 3 -1 roll pdf===only
399 .setglobal .pdfcvstring
402 % Redefine pdfmark to pass the data to the driver.
403 % We use a pseudo-parameter named /pdfmark whose value is an array:
404 % /key1 (value1) ... (CTM) /type
405 /.pdfputparams { % -mark- <key1> <value1> ... .pdfputparams <result...>
406 currentdevice null false counttomark 1 add 3 roll
407 % Don't allow the page device to get cleared....
408 {.putdeviceparams} .currentpagedevice pop {.setpagedevice} 3 .execn
410 % Convert relevant operands to strings in an array.
411 /.pdfcvsloop { % -mark- values ... markname start step .pdfcvsloop
412 % [values ... ctm markname]
413 matrix currentmatrix .pdfcvs 4 1 roll
414 counttomark 1 add 2 roll
415 counttomark .localvmarray astore exch pop
417 % Stack: values start step
418 2 index length 3 sub { 2 copy 2 copy get .pdfcvs put pop } for
420 /.pdfcvsall { % -mark- values ... markname .pdfcvsall <<same>>
423 /.pdfcvseven { % -mark- key value ... markname .pdfcvseven <<same>>
426 /.pdfcvsnone { % -mark- values ... markname .pdfcvsnone <<same>>
429 /.pdfcvsfirst { % -mark- first values ... markname .pdfcvsfirst<<same>>
431 dup 0 2 copy get .pdfcvs put
433 % The procedures in the following dictionary are called with the entire
434 % pdfmark operand list (including the pdfmark name) on the stack;
435 % they may modify this ad lib. They must call .pdfcvsxxx.
437 % Unpack a dictionary for PUT, and don't convert stream data.
440 1 index type /dicttype eq {
441 pop { } forall /.PUTDICT .pdfcvsall
443 pop dup type /filetype eq {
444 % Read the file into a sequence of strings.
445 % This isn't great, but it's simple.
447 dup 64000 string readstring not { exch exit } if
451 /.PUTSTREAM .pdfcvsfirst
457 % Unpack the array for PUTINTERVAL.
459 pop aload pop /.PUTINTERVAL .pdfcvsall
461 .dicttomark readonly def
462 /.pdfparamerror { % ? ? ? -mark- ... <errname> <opname> .pdfparamerror -
463 counttomark 4 add 2 roll cleartomark pop pop pop
464 .systemvar exch signalerror
466 /pdfmark { % -mark- <key> <value> ... <markname> pdfmark -
468 % A hack for synchronizing the clipping path.
470 [1 0 0 1 0 0] setmatrix 0 setlinewidth
471 newpath -3 -3 moveto closepath stroke % Paints outside the device bbox.
474 dup /PS eq systemdict /PDFX .knownget not { false } if and {
475 % Execute it since PDF/X doesn't allow to embed it.
479 1 index /DataSource eq {
486 counttomark 1 add copy
487 //.pdfmarkparams 1 index .knownget { exec } { .pdfcvsall } ifelse
488 mark /pdfmark 3 -1 roll .pdfputparams
489 dup type /booleantype ne {
490 /pdfmark .pdfparamerror
494 userdict /pdfmark .undef
495 currentdict /.pdfmarkparams .undef
498 % <dict> .hook_DSC_Creator -
499 /.pdf_hook_DSC_Creator
501 % If the Creator is PScript5.dll, disable the 32 /FontType resource for
502 % handling GlyphNames2Unicode. Since /FontType category can't redefine,
503 % we can do only with redefining the operator 'resourcestatus'.
504 currentdevice .devicename /pdfwrite eq {
506 (PScript5.dll) search {
508 systemdict /resourcestatus dup
509 { dup /FontType eq 2 index 32 eq and {
514 } bind .makeoperator .forceput
524 % Use the DSC processing hook to pass DSC comments to the driver.
525 % We use a pseudo-parameter named DSC whose value is an array:
526 % /key1 (value1) ... /type
527 /.pdfdsc_dict 2 dict def
528 /.pdfdsc { % <file> <DSC string> <dsc dict> [<prev proc>] .pdfdsc -
529 0 get dup null ne { 4 copy exch pop exec pop } { pop } ifelse 3 -1 roll pop
530 % Stack: <dsc string> <dsc dict>
531 20 .localvmdict 1 index { 3 copy put pop pop } forall
532 3 -1 roll .parse_dsc_comments % <dsc dict> <dict> <type>
533 1 index //.pdf_hook_DSC_Creator exec
534 dup /NOP ne 2 index length 1 gt or { % Skip unparsed comments
535 PDFWRDEBUG { (**** DSC comment: ) print dup == 1 index === flush } if
537 % mark <key1> <value1> ... <dsc dict> <type> <key> <value>
538 3 index 2 index known { % Skip the DSC_struct entry
543 } forall exch pop counttomark .localvmarray astore
544 mark /DSC 3 -1 roll .pdfputparams
545 dup type /booleantype ne {
554 currentdict /.pdf_hook_DSC_Creator undef
555 /.initialize_dsc_parser where {
559 currentglobal true setglobal
560 2 dict dup .initialize_dsc_parser readonly
561 currentuserparams /ProcessDSCComment get
562 1 array astore % in case the value is executable
563 //.pdfdsc /exec load 4 array astore cvx readonly
564 << /ProcessDSCComment 3 -1 roll >> setuserparams
566 } bind .schedule_init
569 % ---------------- {set,current}distillerparams ---------------- %
571 % Define setdistillerparams / currentdistillerparams.
572 % Distiller parameters are currently treated as device parameters.
573 /.distillerparamkeys mark
574 % General parameters -- all distillers
575 /ASCII85EncodePages { }
579 /DefaultRenderingIntent { }
583 /LockDistillerParams { }
586 /PreserveHalftoneInfo { }
587 /PreserveOPIComments { }
588 /PreserveOverprintSettings { }
589 /TransferFunctionInfo { }
591 /UseFlateCompression { }
592 % General parameters -- PDF writer
593 % StartPage and EndPage are renamed because EndPage
594 % clashes with a page device parameter.
596 /CompatibilityLevel { }
597 % ****** NOTE: StartPage and EndPage are disabled because
598 % ****** EndPage clashes with a page device parameter.
599 % /EndPage { exch pop /PDFEndPage exch }
600 /PDFEndPage { pop pop }
601 % /StartPage { exch pop /PDFStartPage exch }
602 /PDFStartPage { pop pop }
604 /ParseDSCCommentsForDocInfo { }
605 /ParseDSCComments { }
609 /AutoPositionEPSFiles { }
610 /PreserveCopyPage { }
612 /OffOptimizations { }
613 % Color sampled image parameters
614 /ColorACSImageDict { }
615 /AntiAliasColorImages { }
616 /AutoFilterColorImages { }
619 /DownsampleColorImages { }
620 /ColorImageDownsampleThreshold { }
621 /ColorImageDownsampleType { }
622 /EncodeColorImages { }
623 /ColorImageFilter { }
624 /ColorImageResolution { }
625 % Color processing parameters
630 /ColorConversionStrategy { }
631 /ConvertCMYKImagesToRGB { }
632 /ConvertImagesToIndexed { }
633 % Grayscale sampled image parameters
634 /GrayACSImageDict { }
635 /AntiAliasGrayImages { }
636 /AutoFilterGrayImages { }
639 /DownsampleGrayImages { }
640 /GrayImageDownsampleThreshold { }
641 /GrayImageDownsampleType { }
642 /EncodeGrayImages { }
644 /GrayImageResolution { }
645 % Monochrome sampled image parameters
646 /AntiAliasMonoImages { }
649 /DownsampleMonoImages { }
650 /MonoImageDownsampleThreshold { }
651 /MonoImageDownsampleType { }
652 /EncodeMonoImages { }
654 /MonoImageResolution { }
655 % Font embedding parameters
659 { dup length 1 sub 1 exch getinterval exch pop /~AlwaysEmbed exch
666 { dup length 1 sub 1 exch getinterval exch pop /~NeverEmbed exch
670 /CannotEmbedFontPolicy { }
674 .dicttomark readonly def
676 { currentdevice .devicename dup /pdfwrite eq exch /ps2write eq or
678 { /pdfwrite finddevice }
682 % Some badly designed PostScript files only expect the current/set
683 % distillerparams operators to exist in a distiller. Since we have
684 % this as a runtime option, we enable these operators IFF the
685 % currentdevice is pdfwrite. Also, we mask their existence in
686 % systemdict so that 'where' and 'known' don't show them unless
687 % the currentdevice is pdfwrite.
688 /.setdistillerparams { % <dict> setdistillerparams -
689 .distillerdevice //null false mark 4 index {
690 //.distillerparamkeys 2 index .knownget { exec } { pop pop } ifelse
691 } forall .putdeviceparamsonly
692 dup type /booleantype ne {
693 /setdistillerparams .pdfparamerror
698 /.currentdistillerparams { % - currentdistillerparams <dict>
699 .distillerdevice //.distillerparamkeys .getdeviceparams .dicttomark
700 % Patch StartPage and EndPage
701 % ****** NOTE: StartPage and EndPage are disabled because
702 % ****** EndPage clashes with a page device parameter.
703 % begin /StartPage PDFStartPage /EndPage PDFEndPage
704 % currentdict dup /PDFStartPage undef /PDFEndPage undef
705 % def def currentdict end
707 /setdistillerparams {
708 currentdevice .devicename dup /pdfwrite ne exch /ps2write ne and {
709 /setdistillerparams /undefined signalerror
713 /currentdistillerparams {
714 currentdevice .devicename dup /pdfwrite ne exch /ps2write ne and {
715 /currentdistillerparams /undefined signalerror
717 .currentdistillerparams
720 % Patch 'where' so that the distiller operators are only visible
721 % if the pdfwrite device is the current one.
722 { currentdevice .devicename dup /pdfwrite eq exch /ps2write eq or{
725 .where pop dup //systemdict eq { pop false } { true } ifelse
728 { /currentdistillerparams /setdistillerparams /pdfmark }
729 { .wheredict exch 2 index put } forall pop
731 % Patch 'known' to hide the systemdict version of distiller operators
732 % unless the currentdevice is pdfwrite.
734 /currentdistillerparams 1 index eq /setdistillerparams 2 index eq or
735 /pdfmark 2 index eq or {
736 systemdict 2 index eq { % only mask the operator in systemdict
737 known currentdevice .devicename dup /pdfwrite ne exch /ps2write ne and { pop false } if
748 % Note, this may not work if the initial device is not pdfwrite
749 % and may require the use of -dProvideUnicode on the command line.
750 currentdevice .devicename /pdfwrite eq
751 systemdict /ProvideUnicode .knownget not { false } if or {
752 currentglobal true setglobal
753 systemdict /.setupUnicodeDecoder known {
754 /Unicode /Decoding resourcestatus {
756 /Unicode /Decoding findresource
760 (WARNING: /Unicode /Decoding resource is not accessible but it is useful for generating ToUnicode CMap.) =
766 } bind .schedule_init
770 % Set a predefined configuration in the distiller device (pdfwrite)
772 pop /PDFSETTINGS load
774 currentdevice .devicename /ps2write eq { /PSL2Printer } { /default } ifelse
776 .distillersettings exch get
777 % Don't override parameters defined on the command line.
778 dup length .distillercommon length add dict begin
781 systemdict 2 index known { pop pop } { def } ifelse
784 currentdict end .setdistillerparams
785 .distillerdevice //null false mark .putdeviceparams
786 dup type /booleantype eq not { cleartomark pop } if pop pop
787 } bind .schedule_init
791 % Set a path to library files (ps2write)
792 currentdevice .devicename /ps2write eq {
794 systemdict /OPDFReadProcsetPath .knownget not {
795 (gs_mgl_e.ps) (gs_mro_e.ps) (gs_agl.ps) (opdfread.ps) % Reverse order !
796 () counttomark 1 sub {
798 .libfile { .filename } { false } ifelse not {
799 (Configuration error : library file opdfread.ps not found !) =
800 (opdfread.ps) /undefinedfilename signalerror
802 .filenamelistseparator concatstrings concatstrings
805 /OPDFReadProcsetPath exch .dicttomark setpagedevice
807 } bind .schedule_init
810 { % Note, this may not work if the initial device is not pdfwrite
811 currentdevice .devicename dup /pdfwrite eq exch /ps2write eq or {
812 % Inform the device with initial graphic state. See gdev_pdf_fill_path.
815 } bind .schedule_init