Criando um PDF complexo

Contents
[ ]

O exemplo Hello, World mostrou passos simples para criar um documento PDF usando Python e Aspose.PDF. Neste artigo, vamos dar uma olhada em como criar um documento mais complexo com o Aspose.PDF para Python. Como exemplo, pegaremos um documento de uma empresa fictícia que opera serviços de ferry para passageiros. Nosso documento conterá uma imagem, dois fragmentos de texto (cabeçalho e parágrafo) e uma tabela.

Se criarmos um documento do zero, precisamos seguir certas etapas:

  1. Instanciar um objeto Document. Neste passo, criaremos um documento PDF vazio com alguns metadados, mas sem páginas.

  2. Adicionar uma Page ao objeto do documento. Assim, nosso documento terá uma página.

  3. Adicionar uma Image à Página.

  4. Criar um TextFragment para o cabeçalho. Para o cabeçalho, usaremos a fonte Arial com tamanho de fonte 24pt e alinhamento centralizado.

  5. Adicionar o cabeçalho aos parágrafos da página.

  6. Criar um TextFragment para a descrição. Para a descrição, usaremos a fonte Arial com tamanho de fonte 24pt e alinhamento centralizado.

  7. Adicionar a (descrição) aos Parágrafos da página.

  8. Criar uma tabela, adicionar propriedades à tabela.

  9. Adicione (tabela) à página parágrafos.

  10. Salve um documento “Complex.pdf”.


    import aspose.pdf as ap

    # Inicializar objeto de documento
    document = ap.Document()
    # Adicionar página
    page = document.pages.add()

    # Adicionar imagem
    page.add_image(image_file, ap.Rectangle(20, 730, 120, 830, True))

    # Adicionar Cabeçalho
    header = ap.text.TextFragment("Novas rotas de ferry no outono de 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)

    # Adicionar descrição
    descriptionText = "Os visitantes devem comprar ingressos online e os ingressos são limitados a 5.000 por dia. \
    O serviço de ferry está operando com metade da capacidade e em um horário reduzido. Espere filas."
    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)

    # Adicionar tabela
    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("Sai da Cidade")
    headerRow.cells.add("Sai da Ilha")

    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)