PDF内のテキストを回転させる方法 (C++使用)
Contents
[
Hide
]
Rotationプロパティを使用してPDF内のテキストを回転させる
TextFragmentクラスのRotationプロパティを使用すると、さまざまな角度でテキストを回転させることができます。テキストの回転は、ドキュメント生成のさまざまなシナリオで使用できます。必要に応じてテキストを回転させるために、回転角度を度で指定できます。以下の異なるシナリオを確認し、テキストの回転を実装できます。
TextFragmentとTextBuilderを使用した回転の実装
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Text;
void ImplementRotationUsingTextFragmentAndTextBuilder() {
String _dataDir("C:\\Samples\\");
// ドキュメントオブジェクトを初期化
auto document = MakeObject<Document>();
// 特定のページを取得
auto page = document->get_Pages()->Add();
// テキストフラグメントを作成
auto textFragment1 = MakeObject<TextFragment>("main text");
textFragment1->set_Position(MakeObject<Position>(100, 600));
// テキストのプロパティを設定
textFragment1->get_TextState()->set_FontSize(12);
textFragment1->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
// 回転したテキストフラグメントを作成
auto textFragment2 = MakeObject<TextFragment>("rotated text");
textFragment2->set_Position(MakeObject<Position>(200, 600));
// テキストのプロパティを設定
textFragment2->get_TextState()->set_FontSize(12);
textFragment2->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment2->get_TextState()->set_Rotation(45);
// 回転したテキストフラグメントを作成
auto textFragment3 = MakeObject<TextFragment>("rotated text");
textFragment3->set_Position(MakeObject<Position>(300, 600));
// テキストのプロパティを設定
textFragment3->get_TextState()->set_FontSize(12);
textFragment3->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment3->get_TextState()->set_Rotation(90);
// TextBuilderオブジェクトを作成
auto textBuilder = MakeObject<TextBuilder>(page);
// テキストフラグメントをPDFページに追加
textBuilder->AppendText(textFragment1);
textBuilder->AppendText(textFragment2);
textBuilder->AppendText(textFragment3);
// ドキュメントを保存
document->Save(_dataDir + u"TextFragmentTests_Rotated1_out.pdf");
}
TextParagraphとTextBuilderを使用した回転の実装(回転されたフラグメント)
void ImplementRotationUsingTextParagraphAndTextBuilder_RotatedFragments() {
String _dataDir("C:\\Samples\\");
// ドキュメントオブジェクトを初期化
auto document = MakeObject<Document>();
// 特定のページを取得
auto page = document->get_Pages()->Add();
auto paragraph = MakeObject<TextParagraph>();
paragraph->set_Position(MakeObject<Position>(200, 600));
// テキストフラグメントを作成
auto textFragment1 = MakeObject<TextFragment>("rotated text");
// テキストプロパティを設定
textFragment1->get_TextState()->set_FontSize(12);
textFragment1->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
// 回転を設定
textFragment1->get_TextState()->set_Rotation(45);
// テキストフラグメントを作成
auto textFragment2 = MakeObject<TextFragment>("main text");
// テキストプロパティを設定
textFragment2->get_TextState()->set_FontSize(12);
textFragment2->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
// テキストフラグメントを作成
auto textFragment3 = MakeObject<TextFragment>("another rotated text");
// テキストプロパティを設定
textFragment3->get_TextState()->set_FontSize(12);
textFragment3->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
// 回転を設定
textFragment3->get_TextState()->set_Rotation(-45);
// テキストフラグメントを段落に追加
paragraph->AppendLine(textFragment1);
paragraph->AppendLine(textFragment2);
paragraph->AppendLine(textFragment3);
// TextBuilderオブジェクトを作成
auto textBuilder = MakeObject<TextBuilder>(page);
// PDFページにテキスト段落を追加
textBuilder->AppendParagraph(paragraph);
// ドキュメントを保存
document->Save(_dataDir + u"TextFragmentTests_Rotated2_out.pdf");
}
TextFragmentとPage.Paragraphsを使用した回転の実装
void ImplementRotationUsingTextFragmentAndPageParagraphs() {
String _dataDir("C:\\Samples\\");
// ドキュメントオブジェクトを初期化
auto document = MakeObject<Document>();
// 特定のページを取得
auto page = document->get_Pages()->Add();
// テキストフラグメントを作成
auto textFragment1 = MakeObject<TextFragment>("main text");
// テキストプロパティを設定
textFragment1->get_TextState()->set_FontSize(12);
textFragment1->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
// テキストフラグメントを作成
auto textFragment2 = MakeObject<TextFragment>("rotated text");
// テキストプロパティを設定
textFragment2->get_TextState()->set_FontSize(12);
textFragment2->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
// 回転を設定
textFragment2->get_TextState()->set_Rotation(315);
// テキストフラグメントを作成
auto textFragment3 = MakeObject<TextFragment>("rotated text");
// テキストプロパティを設定
textFragment3->get_TextState()->set_FontSize(12);
textFragment3->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
// 回転を設定
textFragment3->get_TextState()->set_Rotation(270);
page->get_Paragraphs()->Add(textFragment1);
page->get_Paragraphs()->Add(textFragment2);
page->get_Paragraphs()->Add(textFragment3);
// ドキュメントを保存
document->Save(_dataDir + u"TextFragmentTests_Rotated3_out.pdf");
}
Implement Rotation using TextParagraph and TextBuilder (Whole Paragraph Rotated)
void ImplementRotationUsingTextParagraphAndTextBuilder() {
String _dataDir("C:\\Samples\\");
// ドキュメントオブジェクトを初期化する
auto document = MakeObject<Document>();
// 特定のページを取得する
auto page = document->get_Pages()->Add();
for (int i = 0; i < 4; i++) {
auto paragraph = MakeObject<TextParagraph>();
paragraph->set_Position(MakeObject<Position>(200, 600));
// 回転を指定する
paragraph->set_Rotation(i * 90 + 45);
// テキストフラグメントを作成する
auto textFragment1 = MakeObject<TextFragment>("Paragraph Text");
// テキストフラグメントを作成する
textFragment1->get_TextState()->set_FontSize(12);
textFragment1->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment1->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment1->get_TextState()->set_ForegroundColor(Color::get_Blue());
// テキストフラグメントを作成する
auto textFragment2 = MakeObject<TextFragment>("Second line of text");
// テキストプロパティを設定する
textFragment2->get_TextState()->set_FontSize(12);
textFragment2->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment2->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment2->get_TextState()->set_ForegroundColor(Color::get_Blue());
// テキストフラグメントを作成する
auto textFragment3 = MakeObject<TextFragment>("And some more text...");
// テキストプロパティを設定する
textFragment3->get_TextState()->set_FontSize(12);
textFragment3->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment3->get_TextState()->set_BackgroundColor(Color::get_LightGray());
textFragment3->get_TextState()->set_ForegroundColor(Color::get_Blue());
textFragment3->get_TextState()->set_Underline(true);
paragraph->AppendLine(textFragment1);
paragraph->AppendLine(textFragment2);
paragraph->AppendLine(textFragment3);
// TextBuilderオブジェクトを作成する
auto textBuilder = MakeObject<TextBuilder>(page);
// テキストフラグメントをPDFページに追加する
textBuilder->AppendParagraph(paragraph);
}
// ドキュメントを保存する
document->Save(_dataDir + u"TextFragmentTests_Rotated4_out.pdf");
}