OEM販売のご相談
ご相談ください!

PDF Tool APIサンプルコード:テキストボックス

機能イメージ

テキストボックスを用いてPDFにテキストを描画します。

概要

サンプルコードの概要

PDF文書の総ページ数を調べます。

  • PtlContent.drawTextBox(PtlRect rectMM, PtlContent.ALIGN align, float width, float height): テキストボックスを描画
    テキストボックスが矩形より大きい場合は矩形のサイズに縮小されます
  • PtlTextBox: ページに描画されるテキストボックスを表現するクラス
  • PtlTextBox.writeString(java.lang.String str, ptlParamWriteStringTextBox paramWriteString): 文字列をテキストボックス上に出力
  • PtlTextBox.terminate(): テキストボックスを終了しページコンテントに書き出し

サンプルコード

/*
Antenna House PDF Tool API V7.0
C++ Interface sample program

概要:テキストボックス

Copyright 2021 Antenna House, Inc.
*/

#include < PdfTk.h >

using namespace std;
using namespace PdfTk;

int main(int argc, char* argv[])
{
	if (argc != 3)
	{
		printf("usage: DrawTextBox.exe in-pdf-file out-pdf-file \n");
		return 1;
	}

	try {
		PtlParamInput input(argv[1]);
		PtlParamOutput output(argv[2]);
		PtlPDFDocument aDoc;
		aDoc.load(input);

		PtlOption option;
		option.setUnit(PtlOption::UNIT_PT);

		PtlPages& pages = aDoc.getPages();

		PtlPage page0 = pages.get(0);
		PtlSize pageSize = page0.getSize();

		// TextBoxを書き込む領域矩形はページサイズより上下左右20ポイント小さいものにする
		PtlRect rect(20, 20, pageSize.getWidth()-20, pageSize.getHeight()-20);

		PtlContent& content = page0.getContent();

		float fontSize = 12.0f;
		PtlParamString fontname = "MS ゴシック";

		PtlParamFont fontNormal(fontname, fontSize, false, false, true);
		PtlParamFont fontBoldItalic(fontname, fontSize, true, true, true);

		PtlColorDeviceRGB colorBlack = PtlColorDeviceRGB(0.0f, 0.0f, 0.0f);
		PtlColorDeviceRGB colorRed = PtlColorDeviceRGB(1.0f, 0.0f, 0.0f);
		PtlColorDeviceRGB colorBlue = PtlColorDeviceRGB(0.0f, 0.0f, 1.0f);
		PtlColorDeviceRGB colorBack = PtlColorDeviceRGB(0.5f, 0.8f, 0.8f);
		PtlColorDeviceRGB colorBack2 = PtlColorDeviceRGB(0.8f, 0.5f, 0.8f);

		// rectに300×400のTextBoxを左上に書く
		PtlTextBox& textBox = content.drawTextBox(rect, PtlContent::ALIGN_TOP_LEFT, 300, 400);

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

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

		const char*  text1("長いテキストは折り返されます。あああああいいいいいうううううえええええおおおおお。");
		textBox.writeStringNL(PtlParamString(text1), paramWriteString);

		const char*  text2("英字は途中で折り返されません。TextBoxはPtlParamWriteStringTextBoxを使います。");
		textBox.writeStringNL(PtlParamString(text2), paramWriteString);

		textBox.writeNL();
		paramWriteString.setUnderline(true);
		paramWriteString.setStrikeOut(true);
		const char*  text3("下線と取り消し線はPtlParamWriteStringTextBoxで指定して書くことができます。");
		textBox.writeString(PtlParamString(text3), paramWriteString);
		paramWriteString.setUnderline(false);
		paramWriteString.setStrikeOut(false);

		PtlParamWriteStringTextBox paramWriteStringBoldItalic;
		paramWriteStringBoldItalic.setFont(fontBoldItalic);
		const char*  text4("太字、斜体のフォントスタイルはPtlParamFontで設定します。");
		textBox.writeStringNL(PtlParamString(text4), paramWriteStringBoldItalic);

		textBox.writeNL();
		PtlParamWriteStringTextBox paramWriteStringColor;
		fontNormal.setFontSize(24);
		paramWriteStringColor.setFont(fontNormal);
		paramWriteStringColor.setTextColor(colorRed);
		paramWriteStringColor.setBackColor(colorBack);
		const char*  text41("フォントサイズを24にして文字の色をかえてみます。");
		textBox.writeStringNL(PtlParamString(text41), paramWriteStringColor);
		paramWriteStringColor.setTextColor(colorBack);
		paramWriteStringColor.setOutlineColor(colorBlack);
		paramWriteStringColor.setBackColor(colorBack2);
		const char*  text42("文字の縁取りの色をかえてみます。");
		textBox.writeStringNL(PtlParamString(text42), paramWriteStringColor);
		fontNormal.setFontSize(12);

		textBox.writeNL(12);	// そのまま改行すると、24で改行されるので12にする
		PtlParamWriteStringTextBox paramWriteString5;
		const char*  text52("上付き文字");
		paramWriteString5.setFont(fontNormal);
		paramWriteString5.setFormat(PtlParamWriteStringTextBox::FORM_SUP);
		paramWriteString5.setBackColor(colorBack2);
		paramWriteString5.setUnderline(true);
		paramWriteString5.setStrikeOut(true);
		textBox.writeString(PtlParamString(text52), paramWriteString5);
		const char*  text53("と");
		paramWriteString5.setFormat(PtlParamWriteStringTextBox::FORM_NORMAL);
		paramWriteString5.setBackColor(colorBack);
		textBox.writeString(PtlParamString(text53), paramWriteString5);
		const char*  text54("下付き文字。");
		paramWriteString5.setBackColor(colorBack2);
		paramWriteString5.setFormat(PtlParamWriteStringTextBox::FORM_SUB);
		textBox.writeString(PtlParamString(text54), paramWriteString5);
		const char*  text55("通常文字。");
		paramWriteString5.setFormat(PtlParamWriteStringTextBox::FORM_NORMAL);
		paramWriteString5.setBackColor(colorBack);
		textBox.writeString(PtlParamString(text55), paramWriteString5);

		const char*  text6("行間を広くして書いてみます。");
		PtlParamWriteStringTextBox paramWriteString6;
		paramWriteString6.setFont(fontNormal);
		paramWriteString6.setBackColor(colorBack2);
		paramWriteString6.setLineSpacing(1.5);
		textBox.writeStringNL(PtlParamString(text6), paramWriteString6);

		textBox.writeNL();
		const char*  text7("文字間隔をかえてみます。");
		PtlParamWriteStringTextBox paramWriteString7;
		paramWriteString7.setFont(fontNormal);
		paramWriteString7.setBackColor(colorBack);
		textBox.writeStringNL(PtlParamString(text7), paramWriteString7);
		const char*  text72("文字間隔狭い(-1)。");
		paramWriteString7.setCharSpacing(-1);
		textBox.writeStringNL(PtlParamString(text72), paramWriteString7);
		const char*  text73("文字間隔広い(1)。");
		paramWriteString7.setCharSpacing(1);
		textBox.writeStringNL(PtlParamString(text73), paramWriteString7);
		const char*  text74("文字間隔広い(2)。");
		paramWriteString7.setCharSpacing(2);
		paramWriteString7.setUnderline(true);
		paramWriteString7.setStrikeOut(true);
		textBox.writeStringNL(PtlParamString(text74), paramWriteString7);

		textBox.writeNL();
		PtlParamWriteStringTextBox paramWriteString8;
		paramWriteString8.setFont(fontNormal);
		const char*  text8("化学式を上付き文字と下付き文字を使って書いてみます。");
		textBox.writeStringNL(PtlParamString(text8), paramWriteString8);
		PtlParamWriteStringTextBox paramWriteString8Sup;
		paramWriteString8Sup.setFont(fontNormal);
		paramWriteString8Sup.setFormat(PtlParamWriteStringTextBox::FORM_SUP);
		PtlParamWriteStringTextBox paramWriteString8Sub;
		paramWriteString8Sub.setFont(fontNormal);
		paramWriteString8Sub.setFormat(PtlParamWriteStringTextBox::FORM_SUB);

		// C4H8O2
		const char*  C4H8O2_C("C");
		textBox.writeString(PtlParamString(C4H8O2_C), paramWriteString8);
		const char*  C4H8O2_4("4");
		textBox.writeString(PtlParamString(C4H8O2_4), paramWriteString8Sub);
		const char*  C4H8O2_H("H");
		textBox.writeString(PtlParamString(C4H8O2_H), paramWriteString8);
		const char*  C4H8O2_8("8");
		textBox.writeString(PtlParamString(C4H8O2_8), paramWriteString8Sub);
		const char*  C4H8O2_O("O");
		textBox.writeString(PtlParamString(C4H8O2_C), paramWriteString8);
		const char*  C4H8O2_2("2");
		textBox.writeStringNL(PtlParamString(C4H8O2_2), paramWriteString8Sub);
		// SO42-
		const char*  SO42__SO("SO");
		textBox.writeString(PtlParamString(SO42__SO), paramWriteString8);
		const char*  SO42__4("4");
		textBox.writeString(PtlParamString(SO42__4), paramWriteString8Sub);
		const char*  SO42__2_("2-");
		textBox.writeString(PtlParamString(SO42__2_), paramWriteString8Sup);

		textBox.terminate();

		aDoc.save(output);

		printf("-- 完了 --\n");

	} catch (PtlException e) {
		fprintf(stderr, "Error code : %d\n %s\n", e.getErrorCode(), e.getErrorMessage().c_str());

	} catch (...) {
		printf("Exception\n");
	}
}
            
/*
	Antenna House PDF Tool API V7.0
	Java Interface sample program

	概要:テキストボックス

	Copyright 2021 Antenna House,Inc.
*/

package Sample;

import jp.co.antenna.ptl.*;

public class DrawTextBox {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 2)
        {
            System.out.println("usage: java DrawTextBox 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);
                 PtlParamFont fontBoldItalic = new PtlParamFont(fontName, fontSize, true, true, 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 colorBack = new PtlColorDeviceRGB(0.5f, 0.8f, 0.8f);
                 PtlColorDeviceRGB colorBack2 = new PtlColorDeviceRGB(0.8f, 0.5f, 0.8f))
            {
                try (PtlPages pages = doc.getPages();
                     PtlPage page = pages.get(0);     //1ページ目
                     PtlSize pageSize = page.getSize();
                     PtlContent content = page.getContent();
                     PtlRect rect = new PtlRect(20, 20, pageSize.getWidth() - 20, pageSize.getHeight() - 20))
                {
                    try (PtlParamWriteStringTextBox paramWriteString = new PtlParamWriteStringTextBox();
                         PtlParamWriteStringTextBox paramWriteStringBoldItalic = new PtlParamWriteStringTextBox();
                         PtlParamWriteStringTextBox paramWriteStringColor = new PtlParamWriteStringTextBox();
                         PtlParamWriteStringTextBox paramWriteString5 = new PtlParamWriteStringTextBox();
                         PtlParamWriteStringTextBox paramWriteString6 = new PtlParamWriteStringTextBox();
                         PtlParamWriteStringTextBox paramWriteString7 = new PtlParamWriteStringTextBox();
                         PtlParamWriteStringTextBox paramWriteString8 = new PtlParamWriteStringTextBox();
                         PtlParamWriteStringTextBox paramWriteString8Sup = new PtlParamWriteStringTextBox();
                         PtlParamWriteStringTextBox paramWriteString8Sub = new PtlParamWriteStringTextBox();
                         PtlTextBox textBox = content.drawTextBox(rect, PtlContent.ALIGN.ALIGN_TOP_LEFT, 300, 400))
                    {
                        // TextBoxの縁取りを付ける
                        textBox.setOutlineColor(colorRed);

                        // 縁取りがテキストを囲むサイズに変わるよう指定
                        textBox.fitToBBox(true);

                        paramWriteString.setFont(fontNormal);
                        paramWriteString.setTextColor(colorBlack);

                        String text1 = "長いテキストは折り返されます。あああああいいいいいうううううえええええおおおおお。";
                        textBox.writeStringNL(text1, paramWriteString);

                        String text2 = ("英字は途中で折り返されません。TextBoxはPtlParamWriteStringTextBoxを使います。");
                        textBox.writeStringNL(text2, paramWriteString);

                        textBox.writeNL();
                        paramWriteString.setUnderline(true);
                        paramWriteString.setStrikeOut(true);
                        String text3 = ("下線と取り消し線はPtlParamWriteStringTextBoxで指定して書くことができます。");
                        textBox.writeString(text3, paramWriteString);
                        paramWriteString.setUnderline(false);
                        paramWriteString.setStrikeOut(false);

                        paramWriteStringBoldItalic.setFont(fontBoldItalic);
                        String text4 = ("太字、斜体のフォントスタイルはPtlParamFontで設定します。");
                        textBox.writeStringNL(text4, paramWriteStringBoldItalic);

                        textBox.writeNL();
                        fontNormal.setFontSize(24);
                        paramWriteStringColor.setFont(fontNormal);
                        paramWriteStringColor.setTextColor(colorRed);
                        paramWriteStringColor.setBackColor(colorBack);
                        String text41 = ("フォントサイズを24にして文字の色をかえてみます。");
                        textBox.writeStringNL(text41, paramWriteStringColor);
                        paramWriteStringColor.setTextColor(colorBack);
                        paramWriteStringColor.setOutlineColor(colorBlack);
                        paramWriteStringColor.setBackColor(colorBack2);
                        String text42 = ("文字の縁取りの色をかえてみます。");
                        textBox.writeStringNL(text42, paramWriteStringColor);
                        fontNormal.setFontSize(12);

                        textBox.writeNL(12);    // そのまま改行すると、24で改行されるので12にする
                        String text52 = ("上付き文字");
                    	paramWriteString5.setFont(fontNormal);
                        paramWriteString5.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUP);
                        paramWriteString5.setBackColor(colorBack2);
                        paramWriteString5.setUnderline(true);
                        paramWriteString5.setStrikeOut(true);
                        textBox.writeString(text52, paramWriteString5);
                        String text53 = ("と");
                        paramWriteString5.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_NORMAL);
                        paramWriteString5.setBackColor(colorBack);
                        textBox.writeString(text53, paramWriteString5);
                        String text54 = ("下付き文字。");
                        paramWriteString5.setBackColor(colorBack2);
                        paramWriteString5.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUB);
                        textBox.writeString(text54, paramWriteString5);
                        String text55 = ("通常文字。");
                        paramWriteString5.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_NORMAL);
                        paramWriteString5.setBackColor(colorBack);
                        textBox.writeString(text55, paramWriteString5);

                        String text6 = ("行間を広くして書いてみます。");
                        paramWriteString6.setFont(fontNormal);
                        paramWriteString6.setBackColor(colorBack2);
                        paramWriteString6.setLineSpacing(1.5f);
                        textBox.writeStringNL(text6, paramWriteString6);

                        textBox.writeNL();
                        String text7 = ("文字間隔をかえてみます。");
                        paramWriteString7.setFont(fontNormal);
                        paramWriteString7.setBackColor(colorBack);
                        textBox.writeStringNL(text7, paramWriteString7);
                        String text72 = ("文字間隔狭い(-1)。");
                        paramWriteString7.setCharSpacing(-1);
                        textBox.writeStringNL(text72, paramWriteString7);
                        String text73 = ("文字間隔広い(1)。");
                        paramWriteString7.setCharSpacing(1);
                        textBox.writeStringNL(text73, paramWriteString7);
                        String text74 = ("文字間隔広い(2)。");
                        paramWriteString7.setCharSpacing(2);
                        paramWriteString7.setUnderline(true);
                        paramWriteString7.setStrikeOut(true);
                        textBox.writeStringNL(text74, paramWriteString7);


                        textBox.writeNL();
                        paramWriteString8.setFont(fontNormal);
                        String text8 = ("化学式を上付き文字と下付き文字を使って書いてみます。");
                        textBox.writeStringNL(text8, paramWriteString8);
                    	paramWriteString8Sup.setFont(fontNormal);
                        paramWriteString8Sup.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUP);
                    	paramWriteString8Sub.setFont(fontNormal);
                        paramWriteString8Sub.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUB);

                        // C4H8O2
                        String C4H8O2_C = ("C");
                        textBox.writeString(C4H8O2_C, paramWriteString8);
                        String C4H8O2_4 = ("4");
                        textBox.writeString(C4H8O2_4, paramWriteString8Sub);
                        String C4H8O2_H = ("H");
                        textBox.writeString(C4H8O2_H, paramWriteString8);
                        String C4H8O2_8 = ("8");
                        textBox.writeString(C4H8O2_8, paramWriteString8Sub);
                        String C4H8O2_O = ("O");
                        textBox.writeString(C4H8O2_O, paramWriteString8);
                        String C4H8O2_2 = ("2");
                        textBox.writeStringNL(C4H8O2_2, paramWriteString8Sub);

                        // SO42-
                        String SO42__SO = ("SO");
                        textBox.writeString(SO42__SO, paramWriteString8);
                        String SO42__4 = ("4");
                        textBox.writeString(SO42__4, paramWriteString8Sub);
                        String SO42__2_ = ("2-");
                        textBox.writeString(SO42__2_, paramWriteString8Sup);

                        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("-- 完了 --");
        }
	}
}


            
/*
	Antenna House PDF Tool API V7.0
	.NET Interface sample program

	概要:テキストボックス

	Copyright 2021 Antenna House,Inc.
*/

using System;

using PdfTkNet;

namespace DrawTextBox
{
    class DrawTextBox
    {
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("usage: drawTextBox.exe in-pdf-file out-pdf-file\n");
                return;
            }

            try
            {
                using (PtlParamInput input = new PtlParamInput(args[0]))
                using (PtlParamOutput output = new PtlParamOutput(args[1]))
                using (PtlPDFDocument doc = new PtlPDFDocument())
                using (PtlOption option = new PtlOption())
                {
                    option.setUnit(PtlOption.UNIT.UNIT_PT);

                    doc.load(input);

                    string fontName = "メイリオ";
                    float fontSize = 12.0f;

                    using (PtlParamFont fontNormal = new PtlParamFont(fontName, fontSize, false, false, true))
                    using (PtlParamFont fontBoldItalic = new PtlParamFont(fontName, fontSize, true, true, true))
                    using (PtlColorDeviceRGB colorBlack = new PtlColorDeviceRGB(0.0f, 0.0f, 0.0f))
                    using (PtlColorDeviceRGB colorRed = new PtlColorDeviceRGB(1.0f, 0.0f, 0.0f))
                    using (PtlColorDeviceRGB colorBlue = new PtlColorDeviceRGB(0.0f, 0.0f, 1.0f))
                    using (PtlColorDeviceRGB colorBack = new PtlColorDeviceRGB(0.5f, 0.8f, 0.8f))
                    using (PtlColorDeviceRGB colorBack2 = new PtlColorDeviceRGB(0.8f, 0.5f, 0.8f))
                    {
                        using (PtlPages pages = doc.getPages())
                        using (PtlPage page = pages.get(0))     //1ページ目
                        using (PtlSize pageSize = page.getSize())
                        using (PtlContent content = page.getContent())
                        using (PtlRect rect = new PtlRect(20, 20, pageSize.getWidth() - 20, pageSize.getHeight() - 20))
                        {
                            using (PtlParamWriteStringTextBox paramWriteString = new PtlParamWriteStringTextBox())
                            using (PtlParamWriteStringTextBox paramWriteStringBoldItalic = new PtlParamWriteStringTextBox())
                            using (PtlParamWriteStringTextBox paramWriteStringColor = new PtlParamWriteStringTextBox())
                            using (PtlParamWriteStringTextBox paramWriteString5 = new PtlParamWriteStringTextBox())
                            using (PtlParamWriteStringTextBox paramWriteString6 = new PtlParamWriteStringTextBox())
                            using (PtlParamWriteStringTextBox paramWriteString7 = new PtlParamWriteStringTextBox())
                            using (PtlParamWriteStringTextBox paramWriteString8 = new PtlParamWriteStringTextBox())
                            using (PtlParamWriteStringTextBox paramWriteString8Sup = new PtlParamWriteStringTextBox())
                            using (PtlParamWriteStringTextBox paramWriteString8Sub = new PtlParamWriteStringTextBox())
                            using (PtlTextBox textBox = content.drawTextBox(rect, PtlContent.ALIGN.ALIGN_TOP_LEFT, 300, 400))
                            {
                                // TextBoxの縁取りを付ける
                                textBox.setOutlineColor(colorRed);

                                // 縁取りがテキストを囲むサイズに変わるよう指定
                                textBox.fitToBBox(true);

                                paramWriteString.setFont(fontNormal);
                                paramWriteString.setTextColor(colorBlack);

                                string text1 = "長いテキストは折り返されます。あああああいいいいいうううううえええええおおおおお。";
                                textBox.writeStringNL(text1, paramWriteString);

                                string text2 = ("英字は途中で折り返されません。TextBoxはPtlParamWriteStringTextBoxを使います。");
                                textBox.writeStringNL(text2, paramWriteString);

                                textBox.writeNL();
                                paramWriteString.setUnderline(true);
                                paramWriteString.setStrikeOut(true);
                                string text3 = ("下線と取り消し線はPtlParamWriteStringTextBoxで指定して書くことができます。");
                                textBox.writeString(text3, paramWriteString);
                                paramWriteString.setUnderline(false);
                                paramWriteString.setStrikeOut(false);

                                paramWriteStringBoldItalic.setFont(fontBoldItalic);
                                string text4 = ("太字、斜体のフォントスタイルはPtlParamFontで設定します。");
                                textBox.writeStringNL(text4, paramWriteStringBoldItalic);

                                textBox.writeNL();
                                fontNormal.setFontSize(24);
                                paramWriteStringColor.setFont(fontNormal);
                                paramWriteStringColor.setTextColor(colorRed);
                                paramWriteStringColor.setBackColor(colorBack);
                                string text41 = ("フォントサイズを24にして文字の色をかえてみます。");
                                textBox.writeStringNL(text41, paramWriteStringColor);
                                paramWriteStringColor.setTextColor(colorBack);
                                paramWriteStringColor.setOutlineColor(colorBlack);
                                paramWriteStringColor.setBackColor(colorBack2);
                                string text42 = ("文字の縁取りの色をかえてみます。");
                                textBox.writeStringNL(text42, paramWriteStringColor);
                                fontNormal.setFontSize(12);

                                textBox.writeNL(12);    // そのまま改行すると、24で改行されるので12にする
                                string text52 = ("上付き文字");
                                paramWriteString5.setFont(fontNormal);
                                paramWriteString5.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUP);
                                paramWriteString5.setBackColor(colorBack2);
                                paramWriteString5.setUnderline(true);
                                paramWriteString5.setStrikeOut(true);
                                textBox.writeString(text52, paramWriteString5);
                                string text53 = ("と");
                                paramWriteString5.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_NORMAL);
                                paramWriteString5.setBackColor(colorBack);
                                textBox.writeString(text53, paramWriteString5);
                                string text54 = ("下付き文字。");
                                paramWriteString5.setBackColor(colorBack2);
                                paramWriteString5.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUB);
                                textBox.writeString(text54, paramWriteString5);
                                string text55 = ("通常文字。");
                                paramWriteString5.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_NORMAL);
                                paramWriteString5.setBackColor(colorBack);
                                textBox.writeString(text55, paramWriteString5);

                                string text6 = ("行間を広くして書いてみます。");
                                paramWriteString6.setFont(fontNormal);
                                paramWriteString6.setBackColor(colorBack2);
                                paramWriteString6.setLineSpacing(1.5f);
                                textBox.writeStringNL(text6, paramWriteString6);

                                textBox.writeNL();
                                string text7 = ("文字間隔をかえてみます。");
                                paramWriteString7.setFont(fontNormal);
                                paramWriteString7.setBackColor(colorBack);
                                textBox.writeStringNL(text7, paramWriteString7);
                                string text72 = ("文字間隔狭い(-1)。");
                                paramWriteString7.setCharSpacing(-1);
                                textBox.writeStringNL(text72, paramWriteString7);
                                string text73 = ("文字間隔広い(1)。");
                                paramWriteString7.setCharSpacing(1);
                                textBox.writeStringNL(text73, paramWriteString7);
                                string text74 = ("文字間隔広い(2)。");
                                paramWriteString7.setCharSpacing(2);
                                paramWriteString7.setUnderline(true);
                                paramWriteString7.setStrikeOut(true);
                                textBox.writeStringNL(text74, paramWriteString7);


                                textBox.writeNL();
                                paramWriteString8.setFont(fontNormal);
                                string text8 = ("化学式を上付き文字と下付き文字を使って書いてみます。");
                                textBox.writeStringNL(text8, paramWriteString8);
                                paramWriteString8Sup.setFont(fontNormal);
                                paramWriteString8Sup.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUP);
                                paramWriteString8Sub.setFont(fontNormal);
                                paramWriteString8Sub.setFormat(PtlParamWriteStringTextBox.FORMAT_TYPE.FORM_SUB);

                                // C4H8O2
                                string C4H8O2_C = ("C");
                                textBox.writeString(C4H8O2_C, paramWriteString8);
                                string C4H8O2_4 = ("4");
                                textBox.writeString(C4H8O2_4, paramWriteString8Sub);
                                string C4H8O2_H = ("H");
                                textBox.writeString(C4H8O2_H, paramWriteString8);
                                string C4H8O2_8 = ("8");
                                textBox.writeString(C4H8O2_8, paramWriteString8Sub);
                                string C4H8O2_O = ("O");
                                textBox.writeString(C4H8O2_O, paramWriteString8);
                                string C4H8O2_2 = ("2");
                                textBox.writeStringNL(C4H8O2_2, paramWriteString8Sub);

                                // SO42-
                                string SO42__SO = ("SO");
                                textBox.writeString(SO42__SO, paramWriteString8);
                                string SO42__4 = ("4");
                                textBox.writeString(SO42__4, paramWriteString8Sub);
                                string SO42__2_ = ("2-");
                                textBox.writeString(SO42__2_, paramWriteString8Sup);


                                textBox.terminate();

                                doc.save(output);

                                Console.WriteLine("-- 完了 --");
                            }
                        }
                    }

                }
            }
            catch (PtlException pex)
            {
                Console.WriteLine(pex.getErrorCode() + " : " + pex.getErrorMessageJP());
                pex.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
	}
}



            

サンプルコードのダウンロードはこちら

実行例

コマンドラインでの実行例

DrawTextBox.exe C:\in\test.pdf C:\sav\outDrawTextBox.pdf
-- 完了 --
java -jar DrawTextBox.jar C:\in\test.pdf C:\sav\outDrawTextBox.pdf
-- 完了 --
DrawTextBox.exe C:\in\test.pdf C:\sav\outDrawTextBox.pdf
-- 完了 --

出力結果イメージ

出力されたPDFの1ページ目にさまざまな形式の文字列を含むテキストボックスが追加されます

出力イメージ

サンプルコードのダウンロード

サンプルコード

サンプルで使用した入出力PDF