Está en la página 1de 3

En este artculo vamos a hablar principalmente de Python, vale?

Sobre todo hablaremos sobre


cmo trabajar con documentos PDF en dicho lenguaje de programacin. En primer lugar, se puede
decir que es muy sencillo, especialmente si has usado Python con archivos de texto (TXT) antes.
Sin embargo, no es del todo lo mismo. Los documentos PDF son archivos binarios y ms
complejos que los sencillos archivos de texto sin formato, ya que contienen distintos tipos de letra,
colores, etc.

Eso no quiere decir que sea difcil trabajar con documentos PDF utilizando Python, es bastante
simple, y el uso de un mdulo externo facilita el problema.

PyPDF2
Como hemos dicho antes, utilizar un mdulo externo es la clave. El mdulo que vamos a utilizar en
este tutorial es PyPDF2. Como se trata de un mdulo externo, el primer paso es el habitual,
tenemos que instalar el mdulo. Para ello, vamos a utilizar PIP, que es (basndonos en la
Wikipedia):
Es un sistema de gestin de paquetes utilizado para instalar y administrar paquetes de software
escritos en Python. Muchos paquetes pueden ser encontrados en el ndice de Paquete de la
Python (PyPI)
Puedes seguir los pasos mencionados en la Python Packaging User Guide para la instalacin de
pip, pero si tienes Python 2.7.9 o superior, o Python 3.4 o superior, ya tienes pip
Ahora puedes instalar PyPDF2 simplemente escribiendo el siguiente comando en el terminal:
pip install pypdf2

Genial! Ya has instalado PyPDF2, y ests listo para empezar a trabajar con documentos PDF.

Leer un documento PDF


El archivo de ejemplo con el que trabajaremos en este tutorial es sample.pdf
(https://www.dropbox.com/s/4qad66r2361hvmu/sample.pdf?dl=1). Descrgate el archivo para
seguir el tutorial, o simplemente usa cualquier archivo PDF que te guste.

Proseguimos leyendo el documento PDF. Puesto que vamos a utilizar PyPDF2, necesitamos
importar el mdulo de la siguiente manera:

import pypdf2

Despus de importar el mdulo, vamos a utilizar la clase PdfFileReader. Por lo tanto, el script para
leer el documento PDF sera tal que as:

import PyPDF2
pdf_file = open('sample.pdf')
read_pdf = PyPDF2.PdfFileReader(pdf_file)

Ms operaciones con documentos PDF


Despus de leer el documento PDF, ahora podemos realizar diferentes operaciones con el
documento, como veremos ms adelante en esta seccin.
Nmero de pginas
Vamos a comprobar el nmero de pginas en sample.pdf. Para ello, puedes utilizar el mtodo
getNumPages():

number_of_pages = read_pdf.getNumPages()
print number_of_pages

En este caso, el valor retornado es 1.


Nmero de pgina
Ahora vamos a comprobar el nmero de alguna pgina en el documento PDF. Podemos utilizar el
mtodo getPageNumber(page). Ten en cuenta que le tenemos que pasar un objeto tipo page al
mtodo. Para recuperar una pgina, utilizaremos el mtodo getPage(number), donde number
representa el nmero de pgina en el documento PDF. El argumento number comienza con el
valor 0.
Bueno, s que cuando se utiliza getPage(number) ya se conoce el nmero de la pgina, pero esto
es simplemente para ilustrar cmo utilizar estos mtodos juntos. Lo puedes ver en el siguiente
snippet de Python:

page = read_pdf.getPage(0)
page_number = read_pdf.getPageNumber(page)
print page_number

Muy bien, prueba el script. Qu obtienes?


Sabemos que en sample.pdf (archivo con el que estamos experimentando), slo tiene una pgina
(nmero 0). Y si le pasamos el nmero 1 como nmero de pgina para getPage(number)? En ese
obtendrs el siguiente error:

Traceback (most recent call last):


File "test.py", line 6, in
page = read_pdf.getPage(1)
File "/usr/local/lib/python2.7/site-packages/PyPDF2/pdf.py", line 1158, in getPage
return self.flattenedPages[pageNumber]
IndexError: list index out of range

Esto se debe a que la pgina no est disponible, y estamos utilizando un nmero de pgina fuera
de rango (no existe).
Modo de pgina
Las pginas PDF vienen con diferentes modos, que son los siguientes:
/UseNone: No muestra ni bookmarks, ni miniaturas de paneles
/UseOutlines: Muestra el panel de bookmarks
/UseThumbs: Muestra miniaturas de paneles
/Fullscreen: Vista fullscreen
/UseOC: Muestra el panel OCG
/UseAttachments: Muestra el panel de adjuntos