Replace catalog object if found.

Signed-off-by: yzrh <yzrh@noema.org>
This commit is contained in:
yzrh 2023-01-04 17:07:57 +00:00
parent 8276423eb8
commit 8cd8a8fbba

View file

@ -244,10 +244,6 @@ cnki_pdf(cnki_t **param)
printf("Loaded %d object(s)\n", printf("Loaded %d object(s)\n",
pdf_get_count(&pdf)); pdf_get_count(&pdf));
pdf_obj_sort(&pdf);
_pdf_obj_dedup(param, &pdf);
int dictionary_size; int dictionary_size;
char *dictionary; char *dictionary;
@ -262,6 +258,10 @@ cnki_pdf(cnki_t **param)
if ((*param)->stat > 0) if ((*param)->stat > 0)
printf("Discovered %d parent object(s)\n", parent[0]); printf("Discovered %d parent object(s)\n", parent[0]);
pdf_obj_sort(&pdf);
_pdf_obj_dedup(param, &pdf);
int8_t *parent_missing; int8_t *parent_missing;
int *kid; int *kid;
@ -419,6 +419,20 @@ cnki_pdf(cnki_t **param)
int outline = _pdf_cnki_outline(param, &pdf); int outline = _pdf_cnki_outline(param, &pdf);
snprintf(buf, 64,
"<<\n/Type /Catalog\n/Pages %d 0 R\n",
root);
strcat(dictionary, buf);
if (outline != -1) {
snprintf(buf, 64,
"/Outlines %d 0 R\n/PageMode /UseOutlines\n",
outline);
strcat(dictionary, buf);
}
strcat(dictionary, ">>");
if ((*param)->stat > 1) if ((*param)->stat > 1)
printf("Searching for catalog object\n"); printf("Searching for catalog object\n");
@ -427,6 +441,14 @@ cnki_pdf(cnki_t **param)
if (catalog != 0) { if (catalog != 0) {
if ((*param)->stat > 0) if ((*param)->stat > 0)
printf("Catalog object is %d.\n", catalog); printf("Catalog object is %d.\n", catalog);
if ((*param)->stat > 1)
printf("Replacing catalog object\n");
pdf_obj_replace(&pdf, catalog, NULL, dictionary, NULL, 0);
if ((*param)->stat > 0)
printf("Replaced catalog object\n");
} else { } else {
if ((*param)->stat > 0) if ((*param)->stat > 0)
printf("Catalog object is missing\n"); printf("Catalog object is missing\n");
@ -434,20 +456,6 @@ cnki_pdf(cnki_t **param)
if ((*param)->stat > 1) if ((*param)->stat > 1)
printf("Generating catalog object\n"); printf("Generating catalog object\n");
snprintf(buf, 64,
"<<\n/Type /Catalog\n/Pages %d 0 R\n",
root);
strcat(dictionary, buf);
if (outline != -1) {
snprintf(buf, 64,
"/Outlines %d 0 R\n/PageMode /UseOutlines\n",
outline);
strcat(dictionary, buf);
}
strcat(dictionary, ">>");
pdf_obj_append(&pdf, 0, NULL, dictionary, NULL, 0); pdf_obj_append(&pdf, 0, NULL, dictionary, NULL, 0);
if ((*param)->stat > 0) if ((*param)->stat > 0)