복잡한 PDF 만들기

Contents
[ ]

Hello, World 예제는 Python과 Aspose.PDF를 사용하여 PDF 문서를 만드는 간단한 단계를 보여주었습니다. 이 글에서는 Aspose.PDF for Python을 사용하여 더 복잡한 문서를 만드는 방법을 살펴보겠습니다. 예제로 여객 페리 서비스를 운영하는 가상의 회사의 문서를 가져오겠습니다. 우리의 문서에는 이미지, 두 개의 텍스트 조각(헤더 및 단락), 그리고 테이블이 포함될 것입니다.

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

  1. Document 객체를 인스턴스화합니다. 이 단계에서는 메타데이터가 포함된 빈 PDF 문서를 생성하지만 페이지는 없습니다.

  2. 문서 객체에 Page를 추가합니다. 이제 문서에 한 페이지가 추가됩니다.

  3. 페이지에 Image를 추가합니다.

  4. 헤더를 위한 TextFragment를 생성합니다. 헤더에는 Arial 폰트, 글꼴 크기 24pt, 가운데 정렬을 사용할 것입니다.

  5. 페이지 paragraphs에 헤더를 추가합니다.

  6. 설명을 위한 TextFragment를 생성합니다. 설명에는 Arial 폰트, 글꼴 크기 24pt, 가운데 정렬을 사용할 것입니다.

  7. 페이지의 Paragraphs에 설명을 추가합니다.

  8. 테이블을 생성하고, 테이블 속성을 추가합니다.

  9. 페이지에 (테이블)을 추가합니다 단락.

  10. 문서를 저장합니다 “Complex.pdf”.


    import aspose.pdf as ap

    # 문서 객체 초기화
    document = ap.Document()
    # 페이지 추가
    page = document.pages.add()

    # 이미지 추가
    page.add_image(image_file, ap.Rectangle(20, 730, 120, 830, True))

    # 헤더 추가
    header = ap.text.TextFragment("2020년 가을 새로운 페리 노선")
    header.text_state.font = ap.text.FontRepository.find_font("Arial")
    header.text_state.font_size = 24
    header.horizontal_alignment = ap.HorizontalAlignment.CENTER
    header.position = ap.text.Position(130, 720)
    page.paragraphs.add(header)

    # 설명 추가
    descriptionText = "방문객은 온라인으로 티켓을 구매해야 하며, 티켓은 하루에 5,000개로 제한됩니다. \
    페리 서비스는 절반 용량으로 운영되며 일정이 축소됩니다. 대기줄을 예상하세요."
    description = ap.text.TextFragment(descriptionText)
    description.text_state.font = ap.text.FontRepository.find_font("Times New Roman")
    description.text_state.font_size = 14
    description.horizontal_alignment = ap.HorizontalAlignment.LEFT
    page.paragraphs.add(description)

    # 테이블 추가
    table = ap.Table()

    table.column_widths = "200"
    table.border = ap.BorderInfo(ap.BorderSide.BOX, 1.0, ap.Color.dark_slate_gray)
    table.default_cell_border = ap.BorderInfo(ap.BorderSide.BOX, 0.5, ap.Color.black)
    table.default_cell_padding = ap.MarginInfo(4.5, 4.5, 4.5, 4.5)
    table.margin.bottom = 10
    table.default_cell_text_state.font = ap.text.FontRepository.find_font("Helvetica")

    headerRow = table.rows.add()
    headerRow.cells.add("출발 도시")
    headerRow.cells.add("출발 섬")

    i = 0
    while i < headerRow.cells.count:
        headerRow.cells[i].background_color = ap.Color.gray
        headerRow.cells[i].default_cell_text_state.foreground_color = ap.Color.white_smoke
        i += 1

    time = timedelta(hours=6, minutes=0)
    incTime = timedelta(hours=0, minutes=30)

    i = 0
    while i < 10:
        dataRow = table.rows.add()
        dataRow.cells.add(str(time))
        time = time.__add__(incTime)
        dataRow.cells.add(str(time))
        i += 1

    page.paragraphs.add(table)

    document.save(output_pdf)