Javaを使用してPDFでテキストの回転と傾きを設定する

##背景
この記事では、Javaプログラムを使用してPDFドキュメントのテキストの回転と傾きを設定する方法を紹介します。テキストの傾きを設定するときは、メソッドTransformText（page）;を定義し、page.getCanvas（）.skewTransform（float angleX、float angleY）;を設定して、テキストの傾きを実現します。テキストの回転を設定するときは、メソッドRotateText（page）を定義します。 ;そしてpage.getCanvas（）。rotateTransform（float angle）;を設定して、テキストの回転を実現します。詳細なコードについて以下の内容をご参照ください。

注：PDFクラスライブラリツール**[Spire.PDF for Java](https://www.e-iceblue.com/Download/pdf-for-java.html)**を使用する必要があります。jarパッケージをダウンロードするか、libフォルダー内のjarファイルを解凍してjavaプログラムにインポートするか、mavenリポジトリからダウンロードしてインポートできます。

##Javaコード一覧
```
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;

import java.awt.*;

public class TextStyle {
    public static void main(String[] args) {
        //PDFドキュメントを作成しページを追加する
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.appendPage();

        //テキストを斜体に設定する
        TransformText(page);

        //テキストを回転する
        RotateText(page);

        //ドキュメントを保存する
        pdf.saveToFile("C:\\Users\\Administrator\\Desktop\\DrawText.pdf",FileFormat.PDF);
        pdf.close();
    }

    //カスタムメソッドでページにテキストを追加し、テキストオフセットを設定する
    private static void TransformText(PdfPageBase page)
    {
        PdfGraphicsState state = page.getCanvas().save();//キャンバスの状態を保存する
        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);//フォント、フォントサイズなどのフォントを作成する

        //3つのブラシを作成し、色を割り当てる
        PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(new Color(60,179,113)));
        PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(new Color(139,0,139)));
        PdfSolidBrush brush3 = new PdfSolidBrush(new PdfRGBColor(new Color(205,92,92)));

        page.getCanvas().translateTransform(20,120);//キャンバス内のテキストの座標位置を設定する
        page.getCanvas().scaleTransform(1f,1f);//テキストサイズを設定する（scaleX値が大きいほど、テキストは右に水平方向に引き伸ばされる。scaleY値が大きいほど、テキストは垂直方向に上向きに引き伸ばされる）
        page.getCanvas().skewTransform(-10,0);//テキストのたわみ角度を設定する（angleX値は全体的なテキストオフセット角度、angleY値は文字オフセット角度です）
        page.getCanvas().drawString("Go! Turn Around! Go! Go! Go!", font, brush1, 0, 0);//テキストを描く

        page.getCanvas().skewTransform(10, 10);
        page.getCanvas().drawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, 0);//テキストを描く

        page.getCanvas().scaleTransform(1f, -2f);
        page.getCanvas().drawString("Go! Turn Around! Go! Go! Go!", font, brush3, 0, -2 * 18);//テキストを描く

        //キャンバスの状態を再度保存する
        page.getCanvas().restore(state);
    }
    //カスタムメソッドでページにテキストを追加し、テキストの回転を設定する
    private static void RotateText(PdfPageBase page)
    {
        PdfGraphicsState state = page.getCanvas().save();//キャンバスの状態を保存する

        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 10f);//フォントを作成する
        PdfSolidBrush brush4 = new PdfSolidBrush(new PdfRGBColor(139,69,19));//ブラシ4を作成する

        PdfStringFormat centerAlignment = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);//テキストの配置を設定する

        //キャンバス内のテキストの座標位置を指定する
        float x = (float) (page.getCanvas().getClientSize().getWidth()/2);
        float y = 390;
        page.getCanvas().translateTransform(x,y);

        //ループ内に12個のテキストコンテンツを描画し、各テキストコンテンツの間隔を30度に設定する。つまり、各テキストコンテンツは、前に描画されたテキストコンテンツから30度回転する
        for (int i = 0; i < 12; i++) {
            page.getCanvas().rotateTransform(30);
            page.getCanvas().drawString("Go! Turn Around! Go! Go! Go!", font, brush4, 20, 0, centerAlignment);
        }

        //キャンバスの状態を再度保存する
        page.getCanvas().restore(state);
    }
}
```
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/0f5ce6f8-0c71-f57f-5687-c795dbd7abff.png)

##結語
今回のPDFでテキストの回転と傾きを設定する方法は以上でした。最後まで読んでいただきありがとうございます。