/* * フォームとレイヤー: * 英語とドイツ語コンテンツのための2つのレイヤーを定義し、フィールドボ * タンを経由して表示、非表示を行います。 * * いくつかのテキストと"combobox"フィールドを持つ2つのレイヤーを定義します。 * "combobox"フィールドでは英語またはドイツ語でリスト項目を持ちます。 * ユーザーがボタンを押した時、英語、またはドイツ語のレイヤーを表示する * ため "English"と"Deutsch"の2つのフォームフィールドボタンを作成します。 * * 必要な製品 : PDFlib/PDFlib+PDI/PPS 9 * 必要なデータ : 無し */ package com.pdflib.cookbook.pdflib.form_fields; import com.pdflib.pdflib; import com.pdflib.PDFlibException; public class form_and_layers { public static void main(String argv[]) { /* 必要に応じてデータファイルがあるフォルダのパスを指定する */ String searchpath = "../input"; String outfile = "form_and_layers.pdf"; String title = "Form and Layers"; pdflib p = null; int exitcode = 0; String optlist; int font, en_act, de_act, layerEN, layerDE; double width = 100, height = 18, llx = 100, lly = 600; try { p = new pdflib(); p.set_option("searchpath={" + searchpath + "}"); /* load_font() 等でエラーが起きた場合、-1を返す */ p.set_option("errorpolicy=return"); /* レイヤーパネルを表示してドキュメントを開く */ if (p.begin_document(outfile, "openmode=layers") == -1) throw new Exception("Error: " + p.get_errmsg()); p.set_info("Creator", "PDFlib Cookbook"); p.set_info("Title", title); /* フォントをロードする */ font = p.load_font("Helvetica", "winansi", ""); if (font == -1) { throw new Exception("Error: " + p.get_errmsg()); } /* ページを始める */ p.begin_page_ext(0, 0, "width=a4.width height=a4.height"); /* * ------------------------------------------------------------------ * "English"レイヤーを定義し、英語のテキストだけでなく、英語リストの * アイテムを表示する。 * "combobox"タイプのフォームフィールドを配置する。 * ---------------------------------------------------------------- * -- */ layerEN = p.define_layer("English", ""); p.begin_layer(layerEN); /* コンボボックスのタイトルを英語で出力する */ p.setfont(font, 12); p.fit_textline( "Choose a color from the list or enter an individual " + "color:", llx, lly, ""); lly -= 30; /* * 英語のリストアイテムを持つコンボボックスタイプの"color"フォームフィー * ルドを作成する。 * もう片方のリストアイテムと高さを揃える。 */ optlist = "font=" + font + " fontsize=14 backgroundcolor={gray 0.9} " + "bordercolor={gray 0.7} itemnamelist={0 1 2 3 4} currentvalue=4 " + "itemtextlist={yellow green blue red white} editable=true layer=" + layerEN; p.create_field(llx, lly, llx + width, lly + height, "color", "combobox", optlist); /* * ----------------------------------------------------------------- * "German"レイヤーを定義し、ドイツ語のテキストだけでなく、ドイツ語 * リストのアイテムを表示する。 * "combobox"タイプのフォームフィールドを配置する。 * ----------------------------------------------------------------- */ layerDE = p.define_layer("German", "initialviewstate=false " + "initialprintstate=false"); p.begin_layer(layerDE); lly = 600; p.fit_textline( "W\u00E4hlen Sie eine Farbe aus der Liste oder geben Sie " + "eine eigene Farbe ein:", llx, lly, ""); lly -= 30; /* * ドイツ語のリストアイテムを持つ"combobox"タイプの"farbe"フォーム * フィールドを作成する。 * もう片方のリストアイテムと高さを揃える。 */ optlist = "font=" + font + " fontsize=14 backgroundcolor={gray 0.9} " + "bordercolor={gray 0.7} itemnamelist={0 1 2 3 4} currentvalue=4 " + "itemtextlist={gelb gr\u00FCn blau rot wei\u00DF} editable=true layer=" + layerDE; p.create_field(llx, lly, llx + width, lly + height, "farbe", "combobox", optlist); /* * "English" と "German"のレイヤーが表示される */ p.set_layer_dependency("Radiobtn", "group={" + layerEN + " " + layerDE + "}"); /* * English レイヤーを表示する "SetOCGState" アクションを作成する。 * レイヤーが表示されている場合、German レイヤーを隠す必要はない。 */ en_act = p.create_action("SetOCGState", "layerstate={on " + layerEN + "}"); /* * German レイヤーを表示する "SetOCGState" アクションを作成する。 * レイヤーが表示されている場合、English レイヤーを隠す必要はない。 */ de_act = p.create_action("SetOCGState", "layerstate={on " + layerDE + "}"); /* * "english" and "german" フォームフィールドを "pushbutton"タイプで * 作成する。 * ユーザーがフォームフィールド内でマウスボタンを離したとき、他のレイ * ヤーのスイッチ上に定義されたアクションを使用する * (action={up }). */ lly = 680; optlist = "bordercolor={rgb 0.25 0 0.95} backgroundcolor={rgb 0.95 0.95 1} " + "fillcolor={rgb 0.25 0 0.95} font=" + font + " fontsize=14"; p.create_field(llx, lly, llx + width, lly + height, "english", "pushbutton", optlist + " caption={English} action={up " + en_act + "}"); llx += 150; p.create_field(llx, lly, llx + width, lly + height, "german", "pushbutton", optlist + " caption={Deutsch} action={up " + de_act + "}"); /* 全てのレイヤーを終了する */ p.end_layer(); 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); } } }