int main(void) { try { PDFlib *p; int image; char *imagefile = (char *) "nesrin.jpg"; // This is where font/image/PDF input files live. Adjust as necessary. char *searchpath = (char *) "../data"; p = new PDFlib(); // This means we must check return values of load_font() etc. p->set_parameter("errorpolicy", "return"); p->set_parameter("SearchPath", searchpath); // This line is required to avoid problems on Japanese systems p->set_parameter("hypertextencoding", "host"); if (p->begin_document("image.pdf", "") == -1) { cerr << "Error: " << p->get_errmsg() << endl; return 2; } p->set_info("Creator", "image.cpp"); p->set_info("Author", "Thomas Merz"); p->set_info("Title", "image sample (C++)!"); image = p->load_image("auto", imagefile, ""); if (image == -1) { cerr << "Error: " << p->get_errmsg() << endl; exit(3); } // dummy page size, will be adjusted by PDF_fit_image() p->begin_page_ext(10, 10, ""); p->fit_image(image, 0.0, 0.0, "adjustpage"); p->close_image(image); p->end_page_ext(""); p->end_document(""); } catch (PDFlib::Exception &ex) { cerr << "PDFlib exception occurred in hello sample: " << endl; cerr << "[" << ex.get_errnum() << "] " << ex.get_apiname() << ": " << ex.get_errmsg() << endl; return 2; } return 0; }
int main(void) { try { /* This is where the data files are. Adjust as necessary. */ const wstring searchpath = L"../data"; PDFlib p; const wstring imagefile = L"nesrin.jpg"; int font; int image; // This means we must check return values of load_font() etc. p.set_parameter(L"errorpolicy", L"return"); p.set_parameter(L"SearchPath", searchpath); if (p.begin_document(L"starter_pdfa1b.pdf", L"pdfa=PDF/A-1b:2005") == -1) { wcerr << L"Error: " << p.get_errmsg() << endl; return 2; } /* * We use sRGB as output intent since it allows the color * spaces CIELab, ICC-based, grayscale, and RGB. * * If you need CMYK color you must use a CMYK output profile. */ p.load_iccprofile(L"sRGB", L"usage=outputintent"); p.set_info(L"Creator", L"PDFlib starter sample"); p.set_info(L"Title", L"starter_pdfa1b"); p.begin_page_ext(595, 842, L""); /* Font embedding is required for PDF/A */ font = p.load_font(L"LuciduxSans-Oblique", L"winansi", L"embedding"); if (font == -1) { wcerr << L"Error: " << p.get_errmsg() << endl; return 2; } p.setfont(font, 24); p.fit_textline(L"PDF/A-1b:2005 starter", 50, 700, L""); /* We can use an RGB image since we already supplied an * output intent profile. */ image = p.load_image(L"auto", imagefile, L""); if (image == -1){ wcerr << L"Error: " << p.get_errmsg() << endl; return 2; } /* Place the image at the bottom of the page */ p.fit_image(image, 0.0, 0.0, L"scale=0.5"); p.end_page_ext(L""); p.close_image(image); p.end_document(L""); } catch (PDFlib::Exception &ex) { wcerr << L"PDFlib exception occurred:" << endl << L"[" << ex.get_errnum() << L"] " << ex.get_apiname() << L": " << ex.get_errmsg() << endl; return 2; } return 0; }
int main(void) { try { /* This is where the data files are. Adjust as necessary. */ string searchpath = "../data"; string outfile = "starter_image.pdf"; #define BUFLEN 1024 char buf[BUFLEN]; PDFlib p; string imagefile = "lionel.jpg"; int font, image; int bw = 400, bh = 200; int x = 20, y = 580, yoffset = 260; p.set_parameter("SearchPath", searchpath); /* This means we must check return values of load_font() etc. */ p.set_parameter("errorpolicy", "return"); if (p.begin_document(outfile, "") == -1) { cerr << "Error: " << p.get_errmsg() << endl; return 2; } p.set_info("Creator", "PDFlib starter sample"); p.set_info("Title", "starter_image"); /* For PDFlib Lite: change "unicode" to "winansi" */ font = p.load_font("Helvetica", "winansi", ""); if (font == -1) { cerr << "Error: " << p.get_errmsg() << endl; return 2; } /* Load the image */ image = p.load_image("auto", imagefile, ""); if (image == -1) { cerr << "Error: " << p.get_errmsg() << endl; return 2; } /* Start page 1 */ p.begin_page_ext(0, 0, "width=a4.width height=a4.height"); p.setfont(font, 12); /* ------------------------------------ * Place the image in its original size * ------------------------------------ */ /* Position the image in its original size with its lower left corner * at the reference point (20, 380) */ p.fit_image(image, 20, 380, ""); /* Output some descriptive text */ p.fit_textline( "The image is placed with the lower left corner in its original " "size at reference point (20, 380):", 20, 820, ""); p.fit_textline("fit_image(image, 20, 380, \"\");", 20, 800, ""); /* -------------------------------------------------------- * Place the image with scaling and orientation to the west * -------------------------------------------------------- */ /* Position the image with its lower right corner at the reference * point (580, 20). * "scale=0.5" scales the image by 0.5. * "orientate=west" orientates the image to the west. */ p.fit_image(image, 580, 20, "scale=0.5 position={right bottom} orientate=west"); /* Output some descriptive text */ p.fit_textline( "The image is placed with a scaling of 0.5 and an orientation to " "the west with the lower right corner", 580, 320, "position={right bottom}"); p.fit_textline( " at reference point (580, 20): fit_image(image, 580, 20, " "\"scale=0.5 orientate=west position={right bottom}\");", 580, 300, "position={right bottom}"); p.end_page_ext(""); /* Start page 2 */ p.begin_page_ext(0, 0, "width=a4.width height=a4.height"); p.setfont(font, 12); /* -------------------------------------- * Fit the image into a box with clipping * -------------------------------------- */ /* The "boxsize" option defines a box with a given width and height and * its lower left corner located at the reference point. * "position={right top}" positions the image on the top right of the * box. * "fitmethod=clip" clips the image to fit it into the box. */ sprintf(buf, "boxsize={%d %d} position={right top} fitmethod=clip", bw, bh); p.fit_image(image, x, y, buf); /* Output some descriptive text */ p.fit_textline( "fit_image(image, x, y, \"boxsize={400 200} position={right top} " "fitmethod=clip\");", 20, y+bh+10, ""); /* --------------------------------------------------- * Fit the image into a box with proportional resizing * --------------------------------------------------- */ /* The "boxsize" option defines a box with a given width and height and * its lower left corner located at the reference point. * "position={center}" positions the image in the center of the * box. * "fitmethod=meet" resizes the image proportionally until its height * or width completely fits into the box. * The "showborder" option is used to illustrate the borders of the box. */ sprintf(buf, "boxsize={%d %d} position={center} fitmethod=meet showborder", bw, bh); p.fit_image(image, x, y-=yoffset, buf); /* Output some descriptive text */ p.fit_textline( "fit_image(image, x, y, \"boxsize={400 200} position={center} " "fitmethod=meet showborder\");", 20, y+bh+10, ""); /* --------------------------------- * Fit the image into a box entirely * --------------------------------- */ /* The "boxsize" option defines a box with a given width and height and * its lower left corner located at the reference point. * By default, the image is positioned in the lower left corner of the * box. * "fitmethod=entire" resizes the image proportionally until its height * or width completely fits into the box. */ sprintf(buf, "boxsize={%d %d} fitmethod=entire", bw, bh); p.fit_image(image, x, y-=yoffset, buf); /* Output some descriptive text */ p.fit_textline( "fit_image(image, x, y, \"boxsize={400 200} fitmethod=entire\");", 20, y+bh+10, ""); p.end_page_ext(""); p.close_image(image); p.end_document(""); } catch (PDFlib::Exception &ex) { cerr << "PDFlib exception occurred:" << endl; cerr << "[" << ex.get_errnum() << "] " << ex.get_apiname() << ": " << ex.get_errmsg() << endl; return 2; } return 0; }