pdc_bool pdc_init_output( void *opaque, pdc_output *out, int compatibility, pdc_outctl *oc) { static const char *fn = "pdc_init_output"; pdc_core *pdc = out->pdc; int i; pdc_cleanup_output(out, pdc_false); out->opaque = opaque; out->lastobj = 0; #if defined(MVS) || defined(MVS_TEST) out->fopenparams = oc->fopenparams; out->recordsize = oc->recordsize; #endif if (out->file_offset == NULL) { out->file_offset_capacity = ID_CHUNKSIZE; out->file_offset = (pdc_off_t *) pdc_malloc(pdc, sizeof(pdc_off_t) * out->file_offset_capacity, fn); } for (i = 1; i < out->file_offset_capacity; ++i) out->file_offset[i] = PDC_BAD_ID; out->compresslevel = PDF_DEFAULT_COMPRESSION; out->compr_changed = pdc_false; out->flush = oc->flush; memcpy(out->id[0], out->id[1], MD5_DIGEST_LENGTH); if (!pdc_init_stream(pdc, out, oc->filename, oc->fp, oc->writeproc)) return pdc_false; { /* Write the document header */ pdc_printf(out, "%%PDF-%s\n", pdc_get_pdfversion(pdc, compatibility)); #define PDC_MAGIC_BINARY "\045\344\343\317\322\012" pdc_write(out, PDC_MAGIC_BINARY, sizeof(PDC_MAGIC_BINARY) - 1); } out->open = pdc_true; return pdc_true; }
pdc_bool pdc_init_output( void *opaque, pdc_output *out, const char *filename, FILE *fp, size_t (*writeproc)(pdc_output *out, void *data, size_t size), int compatibility) { static const char *fn = "pdc_init_output"; pdc_core *pdc = out->pdc; int i; out->lastobj = 0; if (out->file_offset == NULL) { out->file_offset_capacity = + ID_CHUNKSIZE; out->file_offset = (long *) pdc_malloc(pdc, sizeof(long) * out->file_offset_capacity, fn); } for (i = 1; i < out->file_offset_capacity; ++i) out->file_offset[i] = PDC_BAD_ID; out->compresslevel = PDF_DEFAULT_COMPRESSION; out->compr_changed = pdc_false; out->opaque = opaque; memcpy(out->id[0], out->id[1], MD5_DIGEST_LENGTH); if (!pdc_init_stream(pdc, out, filename, fp, writeproc)) return pdc_false; /* Write the document header */ if (compatibility == PDC_1_5) pdc_puts(out, "%PDF-1.5\n"); else if (compatibility == PDC_1_4) pdc_puts(out, "%PDF-1.4\n"); else pdc_puts(out, "%PDF-1.3\n"); /* binary magic number */ #define PDC_MAGIC_BINARY "\045\344\343\317\322\012" pdc_write(out, PDC_MAGIC_BINARY, sizeof(PDC_MAGIC_BINARY) - 1); return pdc_true; }