diff options
author | yzrh <yzrh@noema.org> | 2022-12-29 02:49:05 +0000 |
---|---|---|
committer | yzrh <yzrh@noema.org> | 2022-12-29 03:00:11 +0000 |
commit | 988a751c15b43942b20ed437a15d6da6945aa883 (patch) | |
tree | 3e1d99fe4f456f12ac7206596096f934e0cd0466 /src | |
parent | 8083b30530a37d3529d453515465a00aac74a154 (diff) | |
download | melon-988a751c15b43942b20ed437a15d6da6945aa883.tar.gz melon-988a751c15b43942b20ed437a15d6da6945aa883.tar.zst |
Handle missing root object which is parent of others.
Signed-off-by: yzrh <yzrh@noema.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/cnki_pdf.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/cnki_pdf.c b/src/cnki_pdf.c index 887e5f4..502a0ce 100644 --- a/src/cnki_pdf.c +++ b/src/cnki_pdf.c @@ -309,7 +309,9 @@ cnki_pdf(cnki_t **param) if (parent_missing[i] == 1) root_kid++; - if (root_kid <= 1) { + if (root_kid > 1) { + root = pdf_get_free_id(&pdf); + } else { if (root_kid == 0) { for (int i = 1; i <= parent[0]; i++) if (root == 0 || root < parent[i]) @@ -323,15 +325,15 @@ cnki_pdf(cnki_t **param) if ((*param)->stat > 0) printf("Root object is %d.\n", root); - } else { + } + + if (pdf_get_kid_count(&pdf, root) == 0) { if ((*param)->stat > 0) printf("Root object is missing\n"); if ((*param)->stat > 1) printf("Generating root object\n"); - root = pdf_get_free_id(&pdf); - snprintf(buf, 64, "<<\n/Type /Pages\n/Kids "); strcat(dictionary, buf); @@ -886,7 +888,7 @@ cnki_pdf_hn(cnki_t **param) free(dictionary); } - dictionary_size = 64 + 128 * ptr->image_length; + dictionary_size = 128 + 128 * ptr->image_length; dictionary = malloc(dictionary_size); if (dictionary == NULL) { |