pdf.c

changeset 133
76c197fe2eeb
parent 131
4b8c80d77f76
     1.1 diff -r ccf1c28a2940 -r 76c197fe2eeb pdf.c
     1.2 --- a/pdf.c	Fri Mar 14 08:56:38 2003 +0000
     1.3 +++ b/pdf.c	Fri Mar 14 08:57:40 2003 +0000
     1.4 @@ -2,7 +2,7 @@
     1.5   * tumble: build a PDF file from image files
     1.6   *
     1.7   * PDF routines
     1.8 - * $Id: pdf.c,v 1.12 2003/03/14 00:24:37 eric Exp $
     1.9 + * $Id: pdf.c,v 1.13 2003/03/14 00:57:40 eric Exp $
    1.10   * Copyright 2001, 2002, 2003 Eric Smith <eric@brouhaha.com>
    1.11   *
    1.12   * This program is free software; you can redistribute it and/or modify
    1.13 @@ -67,19 +67,9 @@
    1.14  }
    1.15  
    1.16  
    1.17 -pdf_file_handle pdf_create (char *filename, int page_mode)
    1.18 +pdf_file_handle pdf_create (char *filename)
    1.19  {
    1.20    pdf_file_handle pdf_file;
    1.21 -  char *page_mode_string;
    1.22 -
    1.23 -  switch (page_mode)
    1.24 -    {
    1.25 -    case PDF_PAGE_MODE_USE_NONE:      page_mode_string = "UseNone";     break;
    1.26 -    case PDF_PAGE_MODE_USE_OUTLINES:  page_mode_string = "UseOutlines"; break;
    1.27 -    case PDF_PAGE_MODE_USE_THUMBS:    page_mode_string = "UseThumbs";   break;
    1.28 -    default:
    1.29 -      pdf_fatal ("invalid page mode\n");
    1.30 -    }
    1.31  
    1.32    pdf_file = pdf_calloc (1, sizeof (struct pdf_file));
    1.33  
    1.34 @@ -95,9 +85,6 @@
    1.35    pdf_set_dict_entry (pdf_file->catalog, "Type", pdf_new_name ("Catalog"));
    1.36    pdf_set_dict_entry (pdf_file->catalog, "Pages", pdf_file->root->pages_dict);
    1.37    /* Outlines dictionary will be created later if needed */
    1.38 -  pdf_set_dict_entry (pdf_file->catalog,
    1.39 -		      "PageMode",
    1.40 -		      pdf_new_name (page_mode_string));
    1.41    pdf_set_dict_entry (pdf_file->catalog, "PageLayout", pdf_new_name ("SinglePage"));
    1.42  
    1.43    pdf_file->info    = pdf_new_ind_ref (pdf_file, pdf_new_obj (PT_DICTIONARY));
    1.44 @@ -119,8 +106,31 @@
    1.45  }
    1.46  
    1.47  
    1.48 -void pdf_close (pdf_file_handle pdf_file)
    1.49 +void pdf_close (pdf_file_handle pdf_file, int page_mode)
    1.50  {
    1.51 +  char *page_mode_string;
    1.52 +
    1.53 +  page_mode_string = "UseNone";
    1.54 +
    1.55 +  switch (page_mode)
    1.56 +    {
    1.57 +    case PDF_PAGE_MODE_USE_NONE:
    1.58 +      break;
    1.59 +    case PDF_PAGE_MODE_USE_OUTLINES:
    1.60 +      if (pdf_file->outline_root)
    1.61 +	page_mode_string = "UseOutlines";
    1.62 +      break;
    1.63 +    case PDF_PAGE_MODE_USE_THUMBS:
    1.64 +      page_mode_string = "UseThumbs";
    1.65 +      break;
    1.66 +    default:
    1.67 +      pdf_fatal ("invalid page mode\n");
    1.68 +    }
    1.69 +
    1.70 +  pdf_set_dict_entry (pdf_file->catalog,
    1.71 +		      "PageMode",
    1.72 +		      pdf_new_name (page_mode_string));
    1.73 +
    1.74    /* finalize trees, object numbers aren't allocated until this step */
    1.75    pdf_finalize_name_trees (pdf_file);
    1.76