HPDF_LoadTTFontFromFile2 (HPDF_Doc pdf, const char *file_name, HPDF_UINT index, HPDF_BOOL embedding) { HPDF_Stream font_data; const char *ret; HPDF_PTRACE ((" HPDF_LoadTTFontFromFile2\n")); if (!HPDF_HasDoc (pdf)) return NULL; /* create file stream */ font_data = HPDF_FileReader_New (pdf->mmgr, file_name); if (HPDF_Stream_Validate (font_data)) { ret = LoadTTFontFromStream2 (pdf, font_data, index, embedding, file_name); } else ret = NULL; if (!ret) HPDF_CheckError (&pdf->error); return ret; }
HPDF_LoadU3DFromFile (HPDF_Doc pdf, const char *filename) { HPDF_Stream imagedata; HPDF_Image image; HPDF_PTRACE ((" HPDF_LoadU3DFromFile\n")); if (!HPDF_HasDoc (pdf)) { return NULL; } /* create file stream */ imagedata = HPDF_FileReader_New (pdf->mmgr, filename); if (HPDF_Stream_Validate (imagedata)) { image = HPDF_U3D_LoadU3D (pdf->mmgr, imagedata, pdf->xref); } else { image = NULL; } /* destroy file stream */ HPDF_Stream_Free (imagedata); if (!image) { HPDF_CheckError (&pdf->error); } return image; }
HPDF_LoadRawImageFromFile (HPDF_Doc pdf, const char *filename, HPDF_UINT width, HPDF_UINT height, HPDF_ColorSpace color_space) { HPDF_Stream imagedata; HPDF_Image image; HPDF_PTRACE ((" HPDF_LoadRawImageFromFile\n")); if (!HPDF_HasDoc (pdf)) return NULL; /* create file stream */ imagedata = HPDF_FileReader_New (pdf->mmgr, filename); if (HPDF_Stream_Validate (imagedata)) image = HPDF_Image_LoadRawImage (pdf->mmgr, imagedata, pdf->xref, width, height, color_space); else image = NULL; /* destroy file stream */ HPDF_Stream_Free (imagedata); if (!image) HPDF_CheckError (&pdf->error); if (image && pdf->compression_mode & HPDF_COMP_IMAGE) image->filter = HPDF_STREAM_FILTER_FLATE_DECODE; return image; }
HPDF_LoadPngImageFromFile (HPDF_Doc pdf, const HPDF_CHAR *filename) { HPDF_Stream imagedata; HPDF_Image image; HPDF_PTRACE ((" HPDF_LoadPngImageFromFile\n")); if (!HPDF_HasDoc (pdf)) return NULL; /* create file stream */ imagedata = HPDF_FileReader_New (pdf->mmgr, filename); if (HPDF_Stream_Validate (imagedata)) image = LoadPngImageFromStream (pdf, imagedata, HPDF_FALSE); else image = NULL; /* destroy file stream */ if (imagedata) HPDF_Stream_Free (imagedata); if (!image) HPDF_CheckError (&pdf->error); return image; }
HPDF_LoadType1FontFromFile (HPDF_Doc pdf, const char *afm_file_name, const char *data_file_name) { HPDF_Stream afm; HPDF_Stream pfm = NULL; const char *ret; HPDF_PTRACE ((" HPDF_LoadType1FontFromFile\n")); if (!HPDF_HasDoc (pdf)) return NULL; /* create file stream */ afm = HPDF_FileReader_New (pdf->mmgr, afm_file_name); if (data_file_name) pfm = HPDF_FileReader_New (pdf->mmgr, data_file_name); if (HPDF_Stream_Validate (afm) && (!data_file_name || HPDF_Stream_Validate (pfm))) { ret = LoadType1FontFromStream (pdf, afm, pfm); } else ret = NULL; /* destroy file stream */ if (afm) HPDF_Stream_Free (afm); if (pfm) HPDF_Stream_Free (pfm); if (!ret) HPDF_CheckError (&pdf->error); return ret; }
HPDF_LoadPngImageFromFile2 (HPDF_Doc pdf, const char *filename) { HPDF_Stream imagedata; HPDF_Image image; HPDF_String fname; HPDF_PTRACE ((" HPDF_LoadPngImageFromFile\n")); if (!HPDF_HasDoc (pdf)) return NULL; /* check whether file name is valid or not. */ imagedata = HPDF_FileReader_New (pdf->mmgr, filename); if (HPDF_Stream_Validate (imagedata)) image = LoadPngImageFromStream (pdf, imagedata, HPDF_TRUE); else image = NULL; /* destroy file stream */ if (imagedata) HPDF_Stream_Free (imagedata); if (!image) { HPDF_CheckError (&pdf->error); return NULL; } /* add file-name to image dictionary as a hidden entry. * it is used when the image data is needed. */ fname = HPDF_String_New (pdf->mmgr, filename, NULL); if (!fname) { HPDF_CheckError (&pdf->error); return NULL; } fname->header.obj_id |= HPDF_OTYPE_HIDDEN; if ((HPDF_Dict_Add (image, "_FILE_NAME", fname)) != HPDF_OK) { HPDF_CheckError (&pdf->error); return NULL; } return image; }
HPDF_EmbeddedFile HPDF_EmbeddedFile_New (HPDF_MMgr mmgr, HPDF_Xref xref, const char *file) { HPDF_STATUS ret = HPDF_OK; HPDF_Dict ef; /* the dictionary for the embedded file: /Type /EF */ HPDF_String name; /* the name of the file: /F (name) */ HPDF_Dict eff; /* ef has an /EF <<blah>> key - this is it */ HPDF_Dict filestream; /* the stream that /EF <</F _ _ R>> refers to */ HPDF_Stream stream; ef = HPDF_Dict_New (mmgr); if (!ef) return NULL; if (HPDF_Xref_Add (xref, ef) != HPDF_OK) return NULL; filestream = HPDF_DictStream_New (mmgr, xref); if (!filestream) return NULL; stream = HPDF_FileReader_New (mmgr, file); if (!stream) return NULL; HPDF_Stream_Free(filestream->stream); filestream->stream = stream; filestream->filter = HPDF_STREAM_FILTER_FLATE_DECODE; eff = HPDF_Dict_New (mmgr); if (!eff) return NULL; name = HPDF_String_New (mmgr, file, NULL); if (!name) return NULL; ret += HPDF_Dict_AddName (ef, "Type", "F"); ret += HPDF_Dict_Add (ef, "F", name); ret += HPDF_Dict_Add (ef, "EF", eff); ret += HPDF_Dict_Add (eff, "F", filestream); if (ret != HPDF_OK) return NULL; return ef; }
HPDF_GetTTFontDefFromFile (HPDF_Doc pdf, const char *file_name, HPDF_BOOL embedding) { HPDF_Stream font_data; HPDF_FontDef def; HPDF_PTRACE ((" HPDF_GetTTFontDefFromFile\n")); /* create file stream */ font_data = HPDF_FileReader_New (pdf->mmgr, file_name); if (HPDF_Stream_Validate (font_data)) { def = HPDF_TTFontDef_Load (pdf->mmgr, font_data, embedding); } else { HPDF_CheckError (&pdf->error); return NULL; } return def; }
static HPDF_STATUS PngBeforeWrite (HPDF_Dict obj) { HPDF_STATUS ret; png_byte header[HPDF_PNG_BYTES_TO_CHECK]; HPDF_UINT len = HPDF_PNG_BYTES_TO_CHECK; HPDF_Stream png_data; HPDF_String s; HPDF_PTRACE ((" PngBeforeWrite\n")); HPDF_MemStream_FreeData(obj->stream); s = HPDF_Dict_GetItem (obj, "_FILE_NAME", HPDF_OCLASS_STRING); if (!s) return HPDF_SetError (obj->error, HPDF_MISSING_FILE_NAME_ENTRY, 0); png_data = HPDF_FileReader_New (obj->mmgr, (const char *)(s->value)); if (!HPDF_Stream_Validate (png_data)) return obj->error->error_no; HPDF_MemSet (header, 0x00, HPDF_PNG_BYTES_TO_CHECK); ret = HPDF_Stream_Read (png_data, header, &len); if (ret != HPDF_OK || png_sig_cmp (header, (png_size_t)0, HPDF_PNG_BYTES_TO_CHECK)) { HPDF_Stream_Free(png_data); return HPDF_SetError (obj->error, HPDF_INVALID_PNG_IMAGE, 0); } if ((ret = LoadPngData (obj, NULL, png_data, HPDF_FALSE)) != HPDF_OK) { HPDF_Stream_Free(png_data); return ret; } HPDF_Stream_Free(png_data); return HPDF_OK; }