PDF、組版と文書変換のアンテナハウス株式会社

サイトマップ
hr トップ
ページ
hr デスクトップ
製品情報
hr システム
製品情報
hr DITA
サービス
hr 電子書籍
サービス
hr サポート hr 製品の購入
について
hr お問い合わせ hr 会社案内 hr

評価版のお申し込み

OEMについて詳しくはこちら

サポートについて

PDF Tool API V5.0 サンプル集 [ 文字列と枠 ]

サンプルコードの仕様概要


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


ダウンロード


出力結果 表示イメージ
文字列挿入結果イメージ

C#サンプルコード(描画処理部分抜粋)
using PdfTkNet;

static void writeDecoratedString(PtlPage page)
{
    //ページコンテントの取得
    using (PtlContent content = page.getContent())
    {
        //1ページめのサイズを取得
        PtlSize pageSize = page.getSize();  //ページサイズを取得
        float pageH = pageSize.getHeight(); //ページ高さ
        float pageW = pageSize.getWidth();  //ページ幅

      //** 下線があるもの **
        //文字の描画に使うパラメータクラス
        using (PtlParamWriteString writestring = new PtlParamWriteString())
        //フォント指定に使うパラメータクラス
        using (PtlParamFont font = new PtlParamFont())
        using (PtlParamDrawShape drawShape = new PtlParamDrawShape())
        {
            //出力する文字列
            string text = "writeDecoratedString Test 1";

            //フォントサイズ
            float fontSize = 18.0f;

            //フォント名の設定
            font.setName("MS明朝");

            //サイズの設定
            font.setSize(fontSize);

            //フォントの設定
            writestring.setFont(font);

            //文字色設定
            writestring.setTextColor(new PtlColorDeviceRGB(0.3f, 0.4f, 0.8f));

            // 挿入する文字列を囲む矩形
            float margin = 10.0f;                       //端からのマージン
            float textH = (25.4f * fontSize) / 72.0f;   //文字列の高さ
            float textW = font.getStringWidth(text);    //文字列の幅
            float textLeft = margin;                    //左位置
            float textBottom = margin;                  //下位置
            PtlRect txtrect = new PtlRect(textLeft, textBottom, textLeft + textW, textBottom + textH);

            //テキストを描画する矩形    
            PtlRect rect = new PtlRect(margin, margin, pageW - margin, pageH - margin);

            //文字列出力
            content.writeString(rect, PtlContent.ALIGN.ALIGN_BOTTOM_LEFT, text, writestring);

            //下線の始点
            PtlPoint fromMM = new PtlPoint(txtrect.getLeft(), txtrect.getBottom());

            //下線の終点
            PtlPoint toMM = new PtlPoint(txtrect.getRight(), txtrect.getBottom());

            // テキスト下線を描画する
            drawShape.setLineColor(new PtlColorDeviceRGB(0.3f, 0.4f, 0.8f));
            drawShape.setLineWidth(PtlParamDrawShape.LINE_WIDTH.LINE_WIDTH_THIN);
            content.drawLine(fromMM, toMM, drawShape);
        }

      //** 枠で囲ったもの **
        //文字の描画に使うパラメータクラス
        using (PtlParamWriteString writestring = new PtlParamWriteString())
        //フォント指定に使うパラメータクラス
        using (PtlParamFont font = new PtlParamFont())
        using (PtlParamDrawShape drawShape = new PtlParamDrawShape())
        {
            //出力する文字列
            string text = "writeDecoratedString Test 2";

            //フォントサイズ
            float fontSize = 24.0f;

            //フォント名の設定
            font.setName("MS-Gothic");

            //サイズの設定
            font.setSize(fontSize);

            //フォントの設定
            writestring.setFont(font);

            //文字色設定
            writestring.setTextColor(new PtlColorDeviceRGB(0.0f, 1.0f, 0.0f));

            //テキストを描画する矩形    
            PtlRect rect = new PtlRect(0, 0, pageW, pageH);

            //文字列出力
            content.writeString(rect, PtlContent.ALIGN.ALIGN_CENTER, text, writestring);

            // 挿入する文字列を囲む矩形
            float textH = (25.4f * fontSize) / 72.0f;   //文字列の高さ
            float textW = font.getStringWidth(text);    //文字列の幅
            float textLeft = (pageW - textW) / 2;       //左位置
            float textBottom = (pageH - textH) / 2;     //下位置
            PtlRect txtrect = new PtlRect(textLeft, textBottom, textLeft + textW, textBottom + textH);

            // テキスト枠を描画する
            drawShape.setLineColor(new PtlColorDeviceRGB(1.0f, 0.0f, 0.0f));
            drawShape.setFillColor(new PtlColorNone());
            content.drawRect(txtrect, drawShape);
        }

      //** 矩形の中に折り返して書くもの **
        //文字の描画に使うパラメータクラス
        using (PtlParamWriteString writestring = new PtlParamWriteString())
        //フォント指定に使うパラメータクラス
        using (PtlParamFont font = new PtlParamFont())
        using (PtlParamDrawShape drawshape = new PtlParamDrawShape())
        {
            //出力する文字列
            string text = "writeDecoratedString Test 3 writeDecoratedString Test 3 writeDecoratedString Test 3 writeDecoratedString Test 3 writeDecoratedString Test 3";

            //フォントサイズ
            float fontSize = 32.0f;

            //フォント名の設定
            font.setName("MSP-Mincho");

            //サイズの設定
            font.setSize(fontSize);

            //ウエイト(太さ)の設定
            font.setWeight(PtlParamFont.WEIGHT.WEIGHT_BOLD);

            //フォントの設定
            writestring.setFont(font);

            //文字色設定
            writestring.setTextColor(new PtlColorDeviceRGB(0.0f, 1.0f, 0.0f));

            float rectWidth = 100.0f;       //矩形の横幅(=100mm)
            float fontHeight = fontSize * 25.4f / 72;

            //テキストを描画する矩形    
            PtlRect rect = new PtlRect(pageW - rectWidth, 0, pageW, pageH);

            int lineCnt = 0;    //行カウンタ

            float textWidthSum = 0;
            int start = 0;
            int charSize = text.Length;
            for (int i = 0; i < charSize; ++i)
            {
                string tmp = text.Substring(start, i - start + 1);
                textWidthSum = font.getStringWidth(tmp);
                if (textWidthSum > rectWidth)
                {
                    //文字列出力
                    string tmp2 = text.Substring(start, i - start);
                    content.writeString(rect, PtlContent.ALIGN.ALIGN_TOP_LEFT, tmp2, writestring);
                    lineCnt++;
                    rect.setTop(rect.getTop() - fontHeight);
                    start = i;
                }
            }

            if (textWidthSum > 0)
            {
                string tmp = text.Substring(start, charSize - start);
                //文字列出力
                content.writeString(rect, PtlContent.ALIGN.ALIGN_TOP_LEFT, tmp, writestring);
                lineCnt++;
            }

            //テキスト枠を描画する
            float textH = fontHeight * lineCnt; //描画した行数から枠の高さを求める
            float textLeft = pageW - 100;               //左位置
            float textBottom = pageH - textH;           //下位置
            PtlRect txtrect = new PtlRect(textLeft, textBottom, textLeft + rectWidth, pageH);

            drawshape.setLineColor(new PtlColorDeviceRGB(1.0f, 0.0f, 0.0f));    //輪郭線の色
            drawshape.setFillColor(new PtlColorDeviceRGB(0.0f, 0.0f, 1.0f));    //塗りつぶしの色
            drawshape.setOpacity(0.3f);     //透過度を設定する
            content.drawRect(txtrect, drawshape);
        }
    }
}

スペース
トップページサポートお問い合わせ会社案内
サイトマップ個人情報保護の考え方とお願い
Copyright Antenna House, Inc. All rights reserved.
Antenna House is a trademark of Antenna House, Inc.