WordConverter *WordConverterNew(DFDocument *html, const char *abstractPath, const char *idPrefix, WordPackage *package, DFBuffer *warnings) { WordConverter *converter = (WordConverter *)calloc(1,sizeof(WordConverter)); if ((abstractPath == NULL) || (strlen(abstractPath) == 0)) abstractPath = "."; converter->html = DFDocumentRetain(html); converter->abstractPath = strdup(abstractPath); converter->concretePath = strdup(package->tempPath); converter->idPrefix = DFStrDup(idPrefix); converter->package = WordPackageRetain(package); converter->styles = WordSheetNew(converter->package->styles); converter->numbering = WordNumberingNew(converter->package); converter->theme = WordThemeNew(converter->package); converter->mainSection = WordSectionNew(); converter->objects = WordObjectsNew(converter->package); converter->footnotes = WordNoteGroupNewFootnotes(converter->package->footnotes); converter->endnotes = WordNoteGroupNewEndnotes(converter->package->endnotes); converter->supportedContentTypes = DFHashTableNew((DFCopyFunction)strdup,free); DFHashTableAdd(converter->supportedContentTypes,"jpg","image/jpeg"); DFHashTableAdd(converter->supportedContentTypes,"jpeg","image/jpeg"); DFHashTableAdd(converter->supportedContentTypes,"tif","image/tiff"); DFHashTableAdd(converter->supportedContentTypes,"tiff","image/tiff"); DFHashTableAdd(converter->supportedContentTypes,"gif","image/gif"); DFHashTableAdd(converter->supportedContentTypes,"bmp","image/bmp"); DFHashTableAdd(converter->supportedContentTypes,"png","image/png"); converter->warnings = DFBufferRetain(warnings); return converter; }
ODFManifest *ODFManifestNewWithDoc(DFDocument *doc) { ODFManifest *manifest = (ODFManifest *)calloc(1,sizeof(ODFManifest)); manifest->doc = DFDocumentRetain(doc); manifest->entriesByPath = DFHashTableNew(NULL,NULL); ODFManifestParse(manifest); return manifest; }
DFDocument *DFParseXMLString(const char *str, DFError **error) { DFSAXParser *parser = DFSAXParserNew(); DFSAXParserParse(parser,str,strlen(str)); if (parser->fatalErrors->len > 0) { DFErrorFormat(error,"%s",parser->fatalErrors->data); DFSAXParserFree(parser); return NULL; } else if (parser->errors->len > 0) { DFErrorFormat(error,"%s",parser->errors->data); DFSAXParserFree(parser); return NULL; } else if (parser->document->root == NULL) { DFErrorFormat(error,"No root element"); DFSAXParserFree(parser); return NULL; } DFDocument *result = DFDocumentRetain(parser->document); DFSAXParserFree(parser); return result; }