복잡한 PDF 만들기

Contents
[ ]

안녕하세요, 세계 예제는 C#과 Aspose.PDF를 사용하여 PDF 문서를 생성하는 간단한 단계를 보여주었습니다. 이 기사에서는 C#과 Aspose.PDF for .NET을 사용하여 더 복잡한 문서를 만드는 방법을 살펴보겠습니다. 예를 들어, 승객 페리 서비스를 운영하는 가상의 회사에서 문서를 가져오겠습니다. 우리 문서에는 이미지, 두 개의 텍스트 조각(헤더 및 단락), 그리고 테이블이 포함될 것입니다. 이러한 문서를 만들기 위해 우리는 DOM 기반 접근 방식을 사용할 것입니다. DOM API의 기초 섹션에서 더 읽을 수 있습니다.

문서를 처음부터 만들 경우 특정 단계를 따라야 합니다:

  1. Document 객체를 인스턴스화합니다. 이 단계에서는 일부 메타데이터가 포함된 빈 PDF 문서를 생성하지만 페이지는 포함하지 않습니다.
  2. 문서 객체에 Page를 추가합니다. 이제 우리 문서에는 한 페이지가 있습니다.
  3. 페이지에 Image를 추가합니다.
  4. 헤더를 위한 TextFragment를 생성합니다. 헤더에는 Arial 글꼴을 사용하고 글꼴 크기는 24pt, 정렬은 중앙으로 설정합니다.
  5. 페이지의 Paragraphs에 헤더를 추가합니다.
  6. 설명을 위한 TextFragment를 생성합니다. 설명에도 Arial 글꼴을 사용하고 글꼴 크기는 24pt, 정렬은 중앙으로 설정합니다.
  7. 페이지의 단락에 (설명)을 추가합니다.
  8. 테이블을 생성하고 테이블 속성을 추가합니다.
  9. (테이블)을 페이지의 Paragraphs에 추가합니다.
  10. 문서를 “Complex.pdf"로 저장합니다.

다음 코드 스니펫은 Aspose.PDF.Drawing 라이브러리와도 작동합니다.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CreatingComplexPdf()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();
    // Create PDF document
    using (var document = new Aspose.Pdf.Document())
    {
        // Add page
        var page = document.Pages.Add();

        // Add image
        page.AddImage(dataDir + "logo.png", new Aspose.Pdf.Rectangle(20, 730, 120, 830));

        // Add Header
        var header = new Aspose.Pdf.Text.TextFragment("New ferry routes in Fall 2020");
        header.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("Arial");
        header.TextState.FontSize = 24;
        header.HorizontalAlignment = Aspose.Pdf.HorizontalAlignment.Center;
        header.Position = new Aspose.Pdf.Text.Position(130, 720);
        page.Paragraphs.Add(header);

        // Add description
        var descriptionText = "Visitors must buy tickets online and tickets are limited to 5,000 per day. Ferry service is operating at half capacity and on a reduced schedule. Expect lineups.";
        var description = new Aspose.Pdf.Text.TextFragment(descriptionText);
        description.TextState.Font = Aspose.Pdf.Text.FontRepository.FindFont("Times New Roman");
        description.TextState.FontSize = 14;
        description.HorizontalAlignment = Aspose.Pdf.HorizontalAlignment.Left;
        page.Paragraphs.Add(description);

        // Add table
        var table = new Aspose.Pdf.Table
        {
            ColumnWidths = "200",
            Border = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.Box, 1f, Aspose.Pdf.Color.DarkSlateGray),
            DefaultCellBorder = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.Box, 0.5f, Aspose.Pdf.Color.Black),
            DefaultCellPadding = new Aspose.Pdf.MarginInfo(4.5, 4.5, 4.5, 4.5),
            Margin =
            {
                Bottom = 10
            },
            DefaultCellTextState =
            {
                Font =  Aspose.Pdf.Text.FontRepository.FindFont("Helvetica")
            }
        };

        var headerRow = table.Rows.Add();
        headerRow.Cells.Add("Departs City");
        headerRow.Cells.Add("Departs Island");
        foreach (Aspose.Pdf.Cell headerRowCell in headerRow.Cells)
        {
            headerRowCell.BackgroundColor = Aspose.Pdf.Color.Gray;
            headerRowCell.DefaultCellTextState.ForegroundColor = Aspose.Pdf.Color.WhiteSmoke;
        }

        var time = new TimeSpan(6, 0, 0);
        var incTime = new TimeSpan(0, 30, 0);
        for (int i = 0; i < 10; i++)
        {
            var dataRow = table.Rows.Add();
            dataRow.Cells.Add(time.ToString(@"hh\:mm"));
            time = time.Add(incTime);
            dataRow.Cells.Add(time.ToString(@"hh\:mm"));
        }

        page.Paragraphs.Add(table);
        // Save PDF document
        document.Save(dataDir + "Complex_out.pdf");
    }
}