在PDF中旋转文本使用C++
Contents
[
Hide
]
使用旋转属性在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");
}
使用 TextParagraph 和 TextBuilder 实现旋转(整个段落旋转)
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>("段落文本");
// 创建文本片段
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>("第二行文本");
// 设置文本属性
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>("还有一些更多的文本...");
// 设置文本属性
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");
}