/*
Antenna House PDF Tool API V8.0
Java Interface sample program

概要：テキストボックス

Copyright 2021-2025 Antenna House,Inc.
*/

package Sample;

import jp.co.antenna.ptl.*;

public class TextBoxOutlineStyle {

	public static void main(String[] args) {
	    if (args.length < 2)
	    {
	        System.out.println("usage: java TextBoxOutlineStyle in-pdf-file out-pdf-file");
	        return;
	    }
	
	    try (PtlParamInput inputFile = new PtlParamInput(args[0]);
	         PtlParamOutput outputFile = new PtlParamOutput(args[1]);
	         PtlPDFDocument doc = new PtlPDFDocument();
	         PtlOption option = new PtlOption())
	    {
	        option.setUnit(PtlOption.UNIT.UNIT_PT);
	
	        doc.load(inputFile);
	
	        String fontName = "メイリオ";
	        float fontSize = 12.0f;
	
	        try (PtlParamFont fontNormal = new PtlParamFont(fontName, fontSize, false, false, true);
	        		PtlColorDeviceRGB colorBlack = new PtlColorDeviceRGB(0.0f, 0.0f, 0.0f);
	        		PtlColorDeviceRGB colorRed = new PtlColorDeviceRGB(1.0f, 0.0f, 0.0f);
	        		PtlColorDeviceRGB colorBlue = new PtlColorDeviceRGB(0.0f, 0.0f, 1.0f);
	        		PtlColorDeviceRGB colorWite = new PtlColorDeviceRGB(1.0f, 1.0f, 1.0f);
	        		PtlColorDeviceRGB colorYellow = new PtlColorDeviceRGB(1.0f, 1.0f, 0.0f);
    				PtlPages pages = doc.getPages();
	                PtlPage page = pages.get(0);     //1ページ目
	                PtlSize pageSize = page.getSize();
	                PtlContent content = page.getContent();
	                PtlRect rect = new PtlRect(80, 80, pageSize.getWidth() - 80, pageSize.getHeight() - 80))
	        {
	        	
            		// 実線
            		{
                    	PtlTextBox textBox = content.drawTextBox(rect, PtlContent.ALIGN.ALIGN_TOP_LEFT, 200, 200);

            			// TextBoxの線スタイル
            			textBox.setOutlineStyle(PtlTextBox.OUTLINE_STYLE.OUTLINE_STYLE_SOLID);
            			// TextBoxの縁取りを付ける
            			textBox.setOutlineColor(colorRed);
            			// 縁取りがテキストを囲むサイズに変わるよう指定
            			textBox.fitToBBox(true);

            			PtlParamWriteStringTextBox paramWriteString = new PtlParamWriteStringTextBox();
            			paramWriteString.setFont(fontNormal);
            			paramWriteString.setTextColor(colorRed);

            			String text = "実線赤・背景色なし（テキストを囲むサイズ）";
            			textBox.writeStringNL(text, paramWriteString);

            			textBox.terminate();
            		}
            		// 破線
            		{
                    	PtlTextBox textBox = content.drawTextBox(rect, PtlContent.ALIGN.ALIGN_RIGHT, 200, 200);

            			// TextBoxの線スタイル
            			textBox.setOutlineStyle(PtlTextBox.OUTLINE_STYLE.OUTLINE_STYLE_DASHED);
            			// TextBoxの縁取りを付ける
            			textBox.setOutlineColor(colorBlue);
            			// TextBoxの塗りつぶし色
            			textBox.setBackColor(colorWite);
            			// 縁取りがテキストを囲むサイズに変わるよう指定
            			textBox.fitToBBox(false);

            			PtlParamWriteStringTextBox paramWriteString = new PtlParamWriteStringTextBox();
            			paramWriteString.setFont(fontNormal);
            			paramWriteString.setTextColor(colorBlack);

            			String text = "破線青・背景色白";
            			textBox.writeStringNL(text, paramWriteString);

            			textBox.terminate();
            		}
            		// 縁取りなし
                	{
                    	PtlTextBox textBox = content.drawTextBox(rect, PtlContent.ALIGN.ALIGN_BOTTOM_LEFT, 200, 200);

            			// TextBoxの塗りつぶし色
            			textBox.setBackColor(colorYellow);
            			// 縁取りがテキストを囲むサイズに変わるよう指定
            			textBox.fitToBBox(true);

            			PtlParamWriteStringTextBox paramWriteString = new PtlParamWriteStringTextBox();
            			paramWriteString.setFont(fontNormal);
            			paramWriteString.setTextColor(colorBlack);

            			String text = "縁取り線なし・背景色黄（テキストを囲むサイズ）";
            			textBox.writeStringNL(text, paramWriteString);

            			textBox.terminate();
            		}

                    doc.save(outputFile);
            	}
	    }
	    catch (PtlException pex) {
	        System.out.println("PtlException : ErrorCode = " + pex.getErrorCode() + "\n  " + pex.getErrorMessage());
	    }
	    catch (Exception ex) {
	        System.out.println(ex.getMessage());
	        ex.printStackTrace();
	    }
	    catch (Error ex) {
	        System.out.println(ex.getMessage());
	        ex.printStackTrace();
	    }
	    finally {
	        System.out.println("-- 完了 --");
	    }
	}
}

