DOKK / manpages / debian 11 / libppd-dev / ppd_emit_to_file.3.en
ppd_emit_to_file(3) Library Functions Manual ppd_emit_to_file(3)

ppd_emit_to_file, ppd_emit_to_fd - Output device specific code.

#include <ppd/ppd.h>

gboolean ppd_emit( PpdFile * ppd,FILE *fp,PpdSectionOrder section );
gboolean ppd_emitfd( PpdFile * ppd, int fd,PpdSectionOrder section );

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:

Option code can be anywhere in the file
Option code must be in the DocumentSetup section
Option code must be sent prior to the document
Option code must be sent as a JCL command
Option code must be in the PageSetup section
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.

	/* 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("%%%%BeginProlog0);
ppd_emit_to_file(ppd, stdout, PPD_ORDER_PROLOG);
printf("%%%%EndProlog0); /* Setup section */
printf("%%%%BeginSetup0);
ppd_emit_to_file(ppd, stdout, PPD_ORDER_DOCUMENT);
printf("%%%%EndSetup0); /* Main document begins */ for (...) { printf("%%%%Page: 1 10); /* Re-mark so that this is emitted on each page */
ppd_mark_option(ppd,"PageSize","A4");
printf("%%%%PageSetup0);
ppd_emit_to_file(ppd, stdout, PPD_ORDER_PAGE);
printf("%%%%EndPageSetup0); /* Page info goes here */ ... } /* Send ending JCL code */
fputs(ppd->jcl_end->str,stdout);

ppd_file_new(3), ppd_file_free(3)