Criando um PDF complexo
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:
-
Instanciar um objeto Document. Neste passo, criaremos um documento PDF vazio com alguns metadados, mas sem páginas.
-
Adicionar uma Page ao objeto do documento. Assim, nosso documento terá uma página.
-
Adicionar uma Image à Página.
-
Criar um TextFragment para o cabeçalho. Para o cabeçalho, usaremos a fonte Arial com tamanho de fonte 24pt e alinhamento centralizado.
-
Adicionar o cabeçalho aos parágrafos da página.
-
Criar um TextFragment para a descrição. Para a descrição, usaremos a fonte Arial com tamanho de fonte 24pt e alinhamento centralizado.
-
Adicionar a (descrição) aos Parágrafos da página.
-
Criar uma tabela, adicionar propriedades à tabela.
-
Adicione (tabela) à página parágrafos.
-
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)