/* * Image from URL: * Read image data from a URL and place it in a PDF document * * Read an image from the URL and store in a PDFlib virtual file (PVF). * Then load the image data from the PVF file and place it on the page. * * Required software: PDFlib/PDFlib+PDI/PPS 10 * Required data: none */ package com.pdflib.cookbook.pdflib.images; import java.io.*; import java.net.*; import com.pdflib.pdflib; import com.pdflib.PDFlibException; public class image_from_url { public static void main(String argv[]) { /* This is where the data files are. Adjust as necessary. */ String searchpath = "../input"; String outfile = "image_from_url.pdf"; String title = "Image from URL"; pdflib p = null; int exitcode = 0; final String image_url = "https://www.pdflib.com/fileadmin/cookbooks/PDFlib/PDFlib-Cookbook/input/kraxi_logo.tif"; try { p = new pdflib(); p.set_option("searchpath={" + searchpath + "}"); /* This means we must check return values of load_image() etc. */ p.set_option("errorpolicy=return"); if (p.begin_document(outfile, "") == -1) throw new Exception("Error: " + p.get_errmsg()); p.set_info("Creator", "PDFlib Cookbook"); p.set_info("Title", title); // Download image data from URL and store it in a PVF file if (p.download("/pvf/image", "createpvf source={url=" + image_url + "}") == -1) throw new Exception("Error: " + p.get_errmsg()); // Load the image from the PVF int image = p.load_image("auto", "/pvf/image", ""); if (image == -1) throw new Exception("Error: " + p.get_errmsg()); // Start a page, place the image, and finish the page p.begin_page_ext(400, 200, ""); p.fit_image(image, 50, 100, ""); p.end_page_ext(""); /* Delete the virtual file to free the allocated memory */ p.delete_pvf("/pvf/image"); p.end_document(""); } catch (PDFlibException e) { System.err.println("PDFlib exception occurred:"); System.err.println("[" + e.get_errnum() + "] " + e.get_apiname() + ": " + e.get_errmsg()); exitcode = 1; } catch (Exception e) { System.err.println(e); exitcode = 1; } finally { if (p != null) { p.delete(); } System.exit(exitcode); } } }