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");
}
텍스트 단락 및 텍스트 빌더를 사용한 회전 구현 (전체 단락 회전)
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);
// 텍스트 빌더 객체 생성
auto textBuilder = MakeObject<TextBuilder>(page);
// PDF 페이지에 텍스트 조각 추가
textBuilder->AppendParagraph(paragraph);
}
// 문서 저장
document->Save(_dataDir + u"TextFragmentTests_Rotated4_out.pdf");
}