Creando un PDF complejo

Contents
[ ]

El Hola, Mundo El ejemplo mostró pasos simples para crear un documento PDF usando Python y Aspose.PDF. En este artículo, veremos la creación de un documento más complejo con Aspose.PDF for Python. Como ejemplo, tomaremos un documento de una empresa ficticia que opera servicios de ferris de pasajeros. Nuestro documento contendrá una imagen, dos fragmentos de texto (encabezado y párrafo) y una tabla.

Si creamos un documento desde cero, necesitamos seguir ciertos pasos:

  1. Instanciar un Documento objeto. En este paso crearemos un documento PDF vacío con algunos metadatos pero sin páginas.
  2. Agregar un Página al objeto del documento. Así, ahora nuestro documento tendrá una página.
  3. Agregar un Imagen a la página.
  4. Crear un TextFragment para el encabezado. Para el encabezado utilizaremos la fuente Arial con tamaño de fuente de 24 pt y alineación centrada.
  5. Añadir encabezado a la página párrafos.
  6. Crear un TextFragment para la descripción. Para la descripción utilizaremos la fuente Arial con tamaño de fuente de 24 pt y alineación centrada.
  7. Añadir descripción a la página Párrafos.
  8. Crear y dar estilo a la tabla. Establecer ancho de columna, bordes, relleno y fuente.
  9. Agregar tabla a la página párrafos.
  10. Guardar un documento “Complex.pdf”.
from datetime import timedelta
import aspose.pdf as ap


def run_complex(self):

    # Initialize document object
    document = ap.Document()
    # Add page
    page = document.pages.add()

    # Add image
    imageFileName = self.data_dir + "logo.png"
    page.add_image(imageFileName, ap.Rectangle(20, 730, 120, 830, True))

    # Add Header
    header = ap.text.TextFragment("New ferry routes in Fall 2029")
    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)

    # Add description
    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."
    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)

    # Add table
    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("Departs City")
    headerRow.cells.add("Departs Island")

    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(self.data_dir + "Complex.pdf")