텍스트 생성을 위한 FloatingBox 사용하기

이 기능은 Aspose.PDF.Drawing 라이브러리에서도 작동합니다.

FloatingBox 도구 사용 기초

Floating Box 도구는 PDF 페이지에 텍스트 및 기타 콘텐츠를 배치하기 위한 특별한 도구입니다. 주요 기능은 FloatingBox의 크기를 넘어서는 텍스트가 겹칠 때 텍스트를 자르는 것입니다.

Document document = new Document();
Page page = document.Pages.Add();
var box = new FloatingBox(400, 30)
{
    Border = new BorderInfo(BorderSide.All, 1.5f, Color.DarkGreen),
    IsNeedRepeating = false,
};
var text = LoremNET.Lorem.Paragraph(20, 6);
box.Paragraphs.Add(new TextFragment(text));
page.Paragraphs.Add(box);

위 예제에서는 폭이 400pt, 높이가 30pt인 FloatingBox를 생성하고 있습니다. 또한 이 예제에서는 주어진 크기에 맞지 않을 정도로 더 많은 텍스트가 의도적으로 생성되었습니다. 그 결과, 텍스트가 잘렸습니다.

Image 1

속성 IsNeedRepeatingfalse 값으로 설정하면 텍스트가 1페이지로 제한됩니다.

이 속성을 true로 설정하면 텍스트가 다음 페이지로 넘어가 같은 위치에서 다시 흐릅니다.

Image 2

FloatingBox의 고급 기능

다중 열 지원

다중 열 레이아웃(간단한 경우)

FloatingBox는 다중 열 레이아웃을 지원합니다. 이러한 레이아웃을 생성하려면 ColumnInfo 속성의 값을 정의해야 합니다.

  • ColumnWidths는 pt 단위로 열거된 폭을 나타내는 문자열입니다.
  • ColumnSpacing은 열 사이의 간격을 나타내는 문자열입니다.
  • ColumnCount는 열의 수입니다.
Document document = new Document();
Page page = document.Pages.Add();
page.PageInfo.Margin = new MarginInfo(36, 18, 36, 18);
var columnCount = 3;
var spacing = 10;
var width = page.PageInfo.Width 
    - page.PageInfo.Margin.Left 
    - page.PageInfo.Margin.Right 
    - (columnCount - 1) * spacing;
var columnWidth = width / 3;
var box = new FloatingBox()
{
    IsNeedRepeating = true
};
box.ColumnInfo.ColumnWidths = $"{columnWidth} {columnWidth} {columnWidth}";
box.ColumnInfo.ColumnSpacing = "{spacing}";
box.ColumnInfo.ColumnCount = columnCount;
var paragraphs = LoremNET.Lorem.Paragraphs(20, 8, 20);
foreach (var paragraph in paragraphs)
{
    box.Paragraphs.Add(new TextFragment(paragraph));
}

page.Paragraphs.Add(box);

document.Save("sample.pdf");

위의 예에서 LoremNET 추가 라이브러리를 사용하고 20개의 문단을 만들었습니다. 이 문단들은 세 개의 칼럼으로 나누어지고 다음 페이지들을 채울 때까지 텍스트가 소진될 때까지 채워졌습니다.

강제 칼럼 시작을 가진 다중 칼럼 레이아웃

이전 예제와 마찬가지로 다음 예제도 수행할 것입니다. 차이점은 3개의 문단을 만들었다는 것입니다. 각 문단을 새로운 칼럼에 렌더링하도록 FloatingBox를 강제할 수 있습니다. 이를 위해 FloatingBox 객체에 텍스트를 추가할 때 IsFirstParagraphInColumn을 설정해야 합니다.

Document document = new Document();
Page page = document.Pages.Add();
page.PageInfo.Margin = new MarginInfo(36, 18, 36, 18);
var columnCount = 3;
var spacing = 10;
var width = page.PageInfo.Width 
    - page.PageInfo.Margin.Left 
    - page.PageInfo.Margin.Right 
    - (columnCount - 1) * spacing;
var columnWidth = width / 3;
var box = new FloatingBox()
{
    IsNeedRepeating = true
};
box.ColumnInfo.ColumnWidths = $"{columnWidth} {columnWidth} {columnWidth}";
box.ColumnInfo.ColumnSpacing = "{spacing}";
box.ColumnInfo.ColumnCount = 3;

var paragraphs = LoremNET.Lorem.Paragraphs(20, 8, 3);
foreach (var paragraph in paragraphs)
{
    var text = new TextFragment(paragraph)
    {
        IsFirstParagraphInColumn = true
    };
    box.Paragraphs.Add(text);
}

page.Paragraphs.Add(box);

document.Save("sample.pdf");

배경 지원

원하는 배경색을 BackgroundColor 속성을 사용하여 설정할 수 있습니다.

// 문서 객체 초기화
Document document = new Document();
Page page = document.Pages.Add();
var box = new FloatingBox(400, 60)
{
    IsNeedRepeating = false,
    BackgroundColor = Color.LightGreen,
};
var text = LoremNET.Lorem.Paragraph(20, 6);
box.Paragraphs.Add(new TextFragment(text));
page.Paragraphs.Add(box);

오프셋 지원

FloatingBox는 TopLeft 값을 설정하여 다른 위치로 이동할 수 있습니다.

Document document = new Document();
Page page = document.Pages.Add();

var box = new FloatingBox()
{
    Top = -45,
    Left = 15,
    Border = new BorderInfo(BorderSide.All, 1.5f, Color.DarkGreen)
};
var text = LoremNET.Lorem.Paragraph(20, 6);
box.Paragraphs.Add(new TextFragment(text));

page.Paragraphs.Add(new TextFragment(LoremNET.Lorem.Paragraph(20, 6)));
page.Paragraphs.Add(box);            
page.Paragraphs.Add(new TextFragment(LoremNET.Lorem.Paragraph(20, 6)));