/* * アンダーラインテキスト: * * テキストラインのバリエーション: * - デフォルト設定のアンダーライン付きテキスト * - 下線の太さと位置をカスタム設定したアンダーライン付きテキスト * * テキストフローのバリエーション: * - デフォルト設定のアンダーライン付きテキスト * - 下線の太さと位置をカスタム設定したアンダーライン付きテキスト * - マッチボックス付きのアンダーライン付きテキスト * 必要な製品: PDFlib/PDFlib+PDI/PPS 10 * 必要なデータ: 無し */ package com.pdflib.cookbook.pdflib.textflow; import com.pdflib.pdflib; import com.pdflib.PDFlibException; public class underlined_text { public static void main (String argv[]) { /* 必要に応じてデータファイルがあるフォルダのパスを指定する */ final String searchpath = "../input"; pdflib p = null; String outfile = "underlined_text.pdf"; String title = "Underlined Text"; int tf = -1, font; final double llx= 50, lly=50, urx=500, ury=800; double y = ury; String result; int exitcode = 0; final String optlist = "fontname=NotoSerif-Regular fontsize=13 " + "fillcolor={gray 0} alignment=justify charref"; /* テキストフローサンプル用のテキスト。 * 段に流し込むダミーテキスト。ソフトハイフンは文字参照"­"で表す。 * (文字参照はcharrefオプションで有効となる) */ final String text= "Our paper planes" + " are the " + "ideal " + "way of passing the time. We offer " + "re­volu­tionary " + "new develop­ments of the traditional common paper planes. If your " + "lesson, conference, or lecture turn out to be deadly boring, you " + "can have a wonderful time with our planes. All our models are " + "fol­ded from one paper sheet. They are exclu­sively folded " + "with­out using any adhesive. Several models are equipped with " + "a folded landing gear enabling a " + "safe landing " + "on the intended loca­tion provided that you " + "have aimed well. Other models are able to fly loops or cover long " + "distances. Let them start from a vista point in the mountains " + "and see where they touch the ground. "; /* アンダーラインの装飾にマッチボックスを使用するテキスト */ final String coloredtext = "" + "Our paper planes" + " " + "are the " + "" + "ideal" + " " + "way of passing the time. We offer " + "" + "re­volu­tionary" + " " + "new develop­ments of the traditional " + "common paper planes. If your lesson, conference, or lecture turn " + "out to be deadly boring, you can have a wonderful time with our " + "planes. All our models are fol­ded from one paper sheet. They " + "are exclu­sively folded with­out using any adhesive. " + "Several models are equipped with a folded landing gear enabling a " + "" + "safe landing" + " " + "on the intended loca­tion provided that you " + "have aimed well. Other models are able to fly loops or cover long " + "distances. Let them start from a vista point in the mountains and "+ "see where they touch the ground. "; try { p = new pdflib(); /* load_font() 等の戻り値を確認する */ p.set_option("errorpolicy=return"); p.set_option("searchpath={" + searchpath + "}"); if (p.begin_document(outfile, "") == -1) throw new Exception("Error: " + p.get_errmsg()); p.set_info("Creator", "PDFlib Cookbook"); p.set_info("Title", title); font = p.load_font("NotoSerif-Regular", "unicode", ""); if (font == -1) throw new Exception("Error: " + p.get_errmsg()); p.begin_page_ext(0, 0, "width=a4.width height=a4.height"); p.setfont(font, 18); /* ******************************************************** */ p.fit_textline("Textline with default underline settings:", llx, y, "fillcolor=red"); p.fit_textline("Our paper planes are the ideal way of passing the time.", llx, y-=25, "underline"); /* ******************************************************** */ p.fit_textline("Textline with custom underline width and position:", llx, y-=50, "fillcolor=red"); p.fit_textline("Our paper planes are the ideal way of passing the time.", llx, y-=25, "underline underlinewidth=3 underlineposition=-40%"); /* ******************************************************** */ p.fit_textline("Textflow with default underline settings:", llx, y-=65, "fillcolor=red"); tf = p.create_textflow(text, optlist + " leading=120% "); if (tf == -1) throw new Exception("Error: " + p.get_errmsg()); result = p.fit_textflow(tf, llx, lly, urx, y-=10, ""); if (!result.equals("_stop")) { /* さらに処理を行う */ } p.delete_textflow(tf); /* ******************************************************** */ p.fit_textline("Textflow with custom underline width and position:", llx, y-=190, "fillcolor=red"); tf = p.create_textflow(text, optlist + " leading=140% " + "underlinewidth=1.5 underlineposition=-30%"); if (tf == -1) throw new Exception("Error: " + p.get_errmsg()); result = p.fit_textflow(tf, llx, lly, urx, y-=10, ""); if (!result.equals("_stop")) { /* さらに処理を行う */ } p.delete_textflow(tf); /* ******************************************************** */ p.fit_textline("Textflow with custom underlines via matchboxes:", llx, y-=220, "fillcolor=red"); tf = p.create_textflow(coloredtext, optlist + " leading=120% "); if (tf == -1) throw new Exception("Error: " + p.get_errmsg()); result = p.fit_textflow(tf, llx, lly, urx, y-=10, ""); if (!result.equals("_stop")) { /* さらに処理を行う */ } p.delete_textflow(tf); 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); } } }