images/align_text_at_image
Align text at an image.
Download Java Code Switch to PHP Code Show Output
/*
* Align text at image:
* Align text at an image
*
* Align text orientated to the west at the lower right corner of an image by
* retrieving the coordinates of the image matchbox.
* Align text orientated to the west at the lower right corner of an image
* orientated to the west.
*
* Required software: PDFlib/PDFlib+PDI/PPS 10
* Required data: image file
*/
package com.pdflib.cookbook.pdflib.images;
import com.pdflib.pdflib;
import com.pdflib.PDFlibException;
public class align_text_at_image
{
public static void main (String argv[])
{
/* This is where the data files are. Adjust as necessary. */
String searchpath = "../input";
String outfile = "align_text_at_image.pdf";
String title = "Align Text at Image";
pdflib p = null;
int exitcode = 0;
String imagefile = "kraxi_logo.tif";
String optlist;
int image;
double x1 = 0, x2 = 0, y1 = 0, y2 = 0;
try {
p = new pdflib();
p.set_option("searchpath={" + searchpath + "}");
/* This means we must check return values of load_font() 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);
/* Start page */
p.begin_page_ext(0, 0, "width=a4.width height=a4.height");
/* Load the image */
image = p.load_image("auto", imagefile, "");
if (image == -1)
throw new Exception("Error: " + p.get_errmsg());
/* -----------------------------------------------------------------
* Align text orientated to the west at the lower right corner of an
* image
* -----------------------------------------------------------------
*/
/* Place the image in the center of a box using the "boxsize" and
* "position" options. Maintain its proportions using "fitmethod=meet".
* Use the "matchbox" option with the "borderwidth" suboption to draw a
* small rectangle around the image with the "strokecolor" suboption
* determining the border color.
*/
/* Fit the image */
optlist = "boxsize={300 200} position={center} " +
"fitmethod=meet matchbox={name=giantwing borderwidth=3 " +
"strokecolor={rgb 0.85 0.83 0.85}}";
p.fit_image(image, 100, 500, optlist);
/* Retrieve the coordinates of the second (lower right) matchbox corner.
* The parameter "1" indicates the first instance of the "giantwing"
* matchbox.
*/
if ((int) p.info_matchbox("giantwing", 1, "exists") == 1) {
x2 = p.info_matchbox("giantwing", 1, "x2");
y2 = p.info_matchbox("giantwing", 1, "y2");
}
/* Start the text line orientated to the west at the corner coordinates
* retrieved (x2, y2) with a small offset of 3 or 2, respectively.
*/
optlist = "fontname=NotoSerif-Regular fontsize=12 orientate=west";
p.fit_textline("Foto: Kraxi", x2+3, y2+2, optlist);
/* -----------------------------------------------------------------
* Align text orientated to the west at the lower right corner of an
* image orientated to the west as well.
* -----------------------------------------------------------------
*/
/* Place the image in the center of a box using the "boxsize" and
* "position" options. Maintain its proportions using "fitmethod=meet".
* Using the "orientate" option orientate the image to the west. Use the
* "matchbox" option with the "borderwidth" suboption to draw a small
* rectangle around the image with the "strokecolor" suboption
* determining the border color.
*/
optlist = "boxsize={200 300} position={center} fitmethod=meet " +
"orientate=west matchbox={name=giantwing borderwidth=3 " +
"strokecolor={rgb 0.85 0.83 0.85}}";
p.fit_image(image, 100, 100, optlist);
/* Retrieve the coordinates of the first matchbox corner; usually this
* will be the lower left corner but with being orientated to the west
* it will be moved to the bottom right. The parameter "2" indicates the
* second instance of the "giantwing" matchbox.
*/
if ((int) p.info_matchbox("giantwing", 2, "exists") == 1) {
x1 = p.info_matchbox("giantwing", 2, "x1");
y1 = p.info_matchbox("giantwing", 2, "y1");
}
/* Start the text line orientated to the west at the corner coordinates
* retrieved (x1, y1) with a small offset of 3 or 2, respectively.
*/
optlist = "fontname=NotoSerif-Regular fontsize=12 orientate=west";
p.fit_textline("Foto: Kraxi", x1+3, y1+2, optlist);
p.close_image(image);
p.end_page_ext("");
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);
}
}
}