fz_obj *xps_extract_doc_props(xps_context *ctx) { char path[1024]; xps_part *part; fz_obj *dict; if (xps_find_doc_props_path(ctx, path) != fz_okay) fz_error_handle(ctx->ctx, -1, "ignore broken part '/_rels/.rels'"); if (!*path) return NULL; part = xps_read_part(ctx, path); if (!part) { fz_error_handle(ctx->ctx, -1, "cannot read zip part '%s'", path); return NULL; } dict = fz_new_dict(ctx->ctx, 8); xps_hacky_get_prop(ctx->ctx, part->data, dict, "Title", "dc:title"); xps_hacky_get_prop(ctx->ctx, part->data, dict, "Subject", "dc:subject"); xps_hacky_get_prop(ctx->ctx, part->data, dict, "Author", "dc:creator"); xps_hacky_get_prop(ctx->ctx, part->data, dict, "CreationDate", "dcterms:created"); xps_hacky_get_prop(ctx->ctx, part->data, dict, "ModDate", "dcterms:modified"); xps_free_part(ctx, part); return dict; }
fz_obj *xps_extract_doc_props(xps_context *ctx) { char path[1024]; xps_part *part; fz_obj *dict; if (xps_find_doc_props_path(ctx, path) != fz_okay) { fz_catch(-1, "couldn't find the exact part name for /docProps/core.xml"); fz_strlcpy(path, "/docProps/core.xml", sizeof(path)); } if (!*path) return NULL; part = xps_read_part(ctx, path); if (!part) { fz_catch(-1, "cannot read zip part '%s'", path); return NULL; } dict = fz_new_dict(8); xps_hacky_get_prop(part->data, dict, "Title", "dc:title"); xps_hacky_get_prop(part->data, dict, "Subject", "dc:subject"); xps_hacky_get_prop(part->data, dict, "Author", "dc:creator"); xps_hacky_get_prop(part->data, dict, "CreationDate", "dcterms:created"); xps_hacky_get_prop(part->data, dict, "ModDate", "dcterms:modified"); xps_free_part(ctx, part); return dict; }