diff options
Diffstat (limited to 'src/cnki_pdf.c')
-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) { |