ppd_emit_to_file

Langue: en

Version: 277875 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

ppd_emit_to_file, ppd_emit_to_fd - Output device specific code.

SYNOPSIS

 #include <ppd/ppd.h>
 
 gboolean ppd_emit( PpdFile * ppd,FILE *fp,PpdSectionOrder section );
 gboolean ppd_emitfd( PpdFile * ppd, int fd,PpdSectionOrder section );
 
 

DESCRIPTION

The ppd_emit_* functions output the device specific code appropriate to the specified section that has not already been emitted.. The PpdFile pointer is obtained from opening a PPD file via the ppd_load(3) family of functions. The section can be any one of the following:
PPD_ORDER_ANY
Option code can be anywhere in the file
PPD_ORDER_DOCUMENT
Option code must be in the DocumentSetup section
PPD_ORDER_EXIT
Option code must be sent prior to the document
PPD_ORDER_JCL
Option code must be sent as a JCL command
PPD_ORDER_PAGE
Option code must be in the PageSetup section
PPD_ORDER_PROLOG
Option code must be in the Prolog section

The sections PPD_ORDER_DOCUMENT and PPD_ORDER_PAGE will also output code from the PPD_ORDER_ANY section.

Once a code section has been emitted it is marked as such and will not be emitted unless it is re-marked.

EXAMPLE

         /* Setup code to emitted */
         ppd_mark_defaults(ppd);
         ppd_mark_option(ppd,"Duplex","DuplexNoTumble");
         ppd_mark_option(ppd,"PageSize","A4");
 
         /* Emit initial code (including any reset and JCL code) */
         ppd_emit_to_file(ppd,stdout,PPD_ORDER_EXIT);
         fputs(ppd->jcl_begin->str,stdout);
         ppd_emit_to_file(ppd, stdout, PPD_ORDER_JCL);
         fputs(ppd->jcl_ps->str, stdout);
 
         /* Any header comments go here */
         ...
 
         /* Prolog section */
         printf("%%%%BeginProlog);
         ppd_emit_to_file(ppd, stdout, PPD_ORDER_PROLOG);
         printf("%%%%EndProlog);
 
         /* Setup section */
         printf("%%%%BeginSetup);
         ppd_emit_to_file(ppd, stdout, PPD_ORDER_DOCUMENT);
         printf("%%%%EndSetup);
 
         /* Main document begins */
         for (...) {
                 printf("%%%%Page: 1 1);
         
                 /* Re-mark so that this is emitted on each page */
                 ppd_mark_option(ppd,"PageSize","A4");
                 printf("%%%%PageSetup);
                 ppd_emit_to_file(ppd, stdout, PPD_ORDER_PAGE);
                 printf("%%%%EndPageSetup);
 
                 /* Page info goes here */
                 ...
         }
 
         /* Send ending JCL code */
         fputs(ppd->jcl_end->str,stdout);
 

SEE ALSO

ppd_file_new(3), ppd_file_free(3)