void xps_read_page_list(fz_context *ctx, xps_document *doc) { xps_fixdoc *fixdoc; xps_read_and_process_metadata_part(ctx, doc, "/_rels/.rels", NULL); if (!doc->start_part) fz_throw(ctx, FZ_ERROR_GENERIC, "cannot find fixed document sequence start part"); xps_read_and_process_metadata_part(ctx, doc, doc->start_part, NULL); for (fixdoc = doc->first_fixdoc; fixdoc; fixdoc = fixdoc->next) { char relbuf[1024]; fz_try(ctx) { xps_rels_for_part(ctx, doc, relbuf, fixdoc->name, sizeof relbuf); xps_read_and_process_metadata_part(ctx, doc, relbuf, fixdoc); } fz_catch(ctx) { fz_rethrow_if(ctx, FZ_ERROR_TRYLATER); fz_warn(ctx, "cannot process FixedDocument rels part"); } xps_read_and_process_metadata_part(ctx, doc, fixdoc->name, fixdoc); } }
int xps_read_page_list(xps_context *ctx) { xps_document *doc; int code; code = xps_read_and_process_metadata_part(ctx, "/_rels/.rels"); if (code) return fz_rethrow(code, "cannot process root relationship part"); if (!ctx->start_part) return fz_throw("cannot find fixed document sequence start part"); code = xps_read_and_process_metadata_part(ctx, ctx->start_part); if (code) return fz_rethrow(code, "cannot process FixedDocumentSequence part"); for (doc = ctx->first_fixdoc; doc; doc = doc->next) { code = xps_read_and_process_metadata_part(ctx, doc->name); if (code) return fz_rethrow(code, "cannot process FixedDocument part"); } return fz_okay; }