1// $Id: quickreference.cpp 14574 2005-10-29 16:27:43Z bonefish $ 2// 3// PDFlib/PDI client: mini imposition demo 4// 5#include <iostream> 6 7#include "pdflib.hpp" 8 9int 10main(void) 11{ 12 try { 13 PDFlib *p; // pointer to the PDFlib class 14 int manual, page; 15 int font, row, col; 16 const int maxrow = 2; 17 const int maxcol = 2; 18 char optlist[128]; 19 int startpage = 1, endpage = 4; 20 const float width = 500, height = 770; 21 int pageno; 22 const string infile = "reference.pdf"; 23 /* This is where font/image/PDF input files live. Adjust as necessary.*/ 24 const string searchpath = "../data"; 25 26 p = new PDFlib(); 27 28 // open new PDF file 29 if (p->open_file("quickreference.pdf") == -1) { 30 cerr << "Error: " << p->get_errmsg() << endl; 31 return 2; 32 } 33 34 p->set_parameter("SearchPath", searchpath); 35 36 // This line is required to avoid problems on Japanese systems 37 p->set_parameter("hypertextencoding", "host"); 38 39 p->set_info("Creator", "quickreference.cpp"); 40 p->set_info("Author", "Thomas Merz"); 41 p->set_info("Title", "mini imposition demo (C++)"); 42 43 manual = p->open_pdi(infile, "", 0); 44 if (manual == -1) { 45 cerr << "Error: " << p->get_errmsg() << endl; 46 return 2; 47 } 48 49 row = 0; 50 col = 0; 51 52 p->set_parameter("topdown", "true"); 53 54 for (pageno = startpage; pageno <= endpage; pageno++) { 55 if (row == 0 && col == 0) { 56 p->begin_page(width, height); 57 font = p->load_font("Helvetica-Bold", "host", ""); 58 p->setfont(font, 18); 59 p->set_text_pos(24, 24); 60 p->show("PDFlib Quick Reference"); 61 } 62 63 page = p->open_pdi_page(manual, pageno, ""); 64 65 if (page == -1) { 66 cerr << "Error: " << p->get_errmsg() << endl; 67 return 2; 68 } 69 70 sprintf(optlist, "scale %f", (float) 1/maxrow); 71 p->fit_pdi_page(page, width/maxcol*col, 72 (row + 1) * height/maxrow, optlist); 73 p->close_pdi_page(page); 74 75 col++; 76 if (col == maxcol) { 77 col = 0; 78 row++; 79 } 80 if (row == maxrow) { 81 row = 0; 82 p->end_page(); 83 } 84 } 85 86 // finish the last partial page 87 if (row != 0 || col != 0) 88 p->end_page(); 89 90 p->close(); 91 p->close_pdi(manual); 92 93 } 94 catch (PDFlib::Exception &ex) { 95 cerr << "PDFlib exception occurred in quickreference sample: " << endl; 96 cerr << "[" << ex.get_errnum() << "] " << ex.get_apiname() 97 << ": " << ex.get_errmsg() << endl; 98 return 2; 99 } 100 101 return 0; 102} 103