Exemple #1
0
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;
}