Todos ustedes deben estar familiarizados con lo que son los archivos PDF. De hecho son uno de los medios digitales más importantes y utilizados. PDF significa Formato de documento portátil . se utiliza .pdf extensión. Se utiliza para presentar e intercambiar documentos de forma fiable independientemente del software, hardware o sistema operativo.
Inventado por Adobe PDF es ahora un estándar abierto mantenido por la Organización Internacional de Normalización (ISO). Los archivos PDF pueden contener enlaces y botones, campos de formulario, audio, vídeo y lógica empresarial.
En este artículo aprenderemos cómo podemos realizar varias operaciones como:
- Extraer texto de PDF
- Rotar páginas PDF
- Fusionar archivos PDF
- Dividir PDF
- Agregar marca de agua a páginas PDF
Instalación: ¡Usando scripts simples de Python!
Usaremos un módulo de terceros pypdf.
pypdf es una biblioteca de Python creada como un conjunto de herramientas PDF. Es capaz de:
- Extracción de información del documento (título autor…)
- Dividir documentos página por página
- Fusionar documentos página por página
- Recortar páginas
- Fusionar varias páginas en una sola página
- Cifrar y descifrar archivos PDF
- ¡y más!
Para instalar pypdf, ejecute el siguiente comando desde la línea de comando:
pip install pypdfEl nombre de este módulo distingue entre mayúsculas y minúsculas, así que asegúrese de que y está en minúsculas y todo lo demás está en mayúsculas. Todo el código y los archivos PDF utilizados en este tutorial/artículo están disponibles aquí .
expresión regular en java
1. Extraer texto de un archivo PDF
Python# importing required classes from pypdf import PdfReader # creating a pdf reader object reader = PdfReader('example.pdf') # printing number of pages in pdf file print(len(reader.pages)) # creating a page object page = reader.pages[0] # extracting text from page print(page.extract_text())
El resultado del programa anterior se ve así:
20
PythonBasics
S.R.Doty
August272008
Contents
1Preliminaries
4
1.1WhatisPython?...................................
..4
1.2Installationanddocumentation....................
.........4 [and some more lines...]
Intentemos comprender el código anterior en fragmentos:
reader = PdfReader('example.pdf')
- Aquí creamos un objeto de Lector de PDF clase de módulo pypdf y pase la ruta al archivo PDF y obtenga un objeto lector de PDF.
print(len(reader.pages))
- paginas La propiedad proporciona el número de páginas del archivo PDF. Por ejemplo, en nuestro caso es 20 (ver la primera línea de resultado).
pageObj = reader.pages[0]
- Ahora creamos un objeto de Objeto de página clase de módulo pypdf. El objeto lector de PDF tiene función paginas[] que toma el número de página (a partir del índice 0) como argumento y devuelve el objeto de la página.
print(pageObj.extract_text())
- El objeto de página tiene función extraer_texto() para extraer texto de la página PDF.
Nota: Si bien los archivos PDF son excelentes para diseñar texto de una manera que sea fácil de imprimir y leer para las personas, no es sencillo para el software analizarlos en texto sin formato. Como tal, pypdf puede cometer errores al extraer texto de un PDF e incluso es posible que no pueda abrir algunos archivos PDF. Desafortunadamente, no hay mucho que puedas hacer al respecto. Es posible que pypdf simplemente no pueda trabajar con algunos de sus archivos PDF particulares.
2. Rotar páginas PDF
aes vs desPython
# importing the required classes from pypdf import PdfReader PdfWriter def PDFrotate(origFileName newFileName rotation): # creating a pdf Reader object reader = PdfReader(origFileName) # creating a pdf writer object for new pdf writer = PdfWriter() # rotating each page for page in range(len(reader.pages)): pageObj = reader.pages[page] pageObj.rotate(rotation) # Add the rotated page object to the PDF writer writer.add_page(pageObj) # Write the rotated pages to the new PDF file with open(newFileName 'wb') as newFile: writer.write(newFile) def main(): # original pdf file name origFileName = 'example.pdf' # new pdf file name newFileName = 'rotated_example.pdf' # rotation angle rotation = 270 # calling the PDFrotate function PDFrotate(origFileName newFileName rotation) if __name__ == '__main__': # calling the main function main()
Aquí puedes ver cómo la primera página de ejemplo_rotado.pdf parece (imagen de la derecha) después de la rotación:

Algunos puntos importantes relacionados con el código anterior:
- Para la rotación, primero creamos un objeto lector de PDF del PDF original.
writer = PdfWriter()
- Las páginas rotadas se escribirán en un nuevo PDF. Para escribir en archivos PDF utilizamos el objeto de Escritor de PDF clase de módulo pypdf.
for page in range(len(pdfReader.pages)):
pageObj = pdfReader.pages[page]
pageObj.rotate(rotation)
writer.add_page(pageObj)
- Ahora iteramos cada página del PDF original. Obtenemos el objeto de página por .páginas[] método de la clase de lector de PDF. Ahora rotamos la página por girar() método de clase de objeto de página. Luego agregamos una página al objeto del escritor PDF usando agregar() método de la clase de escritor de PDF pasando el objeto de página rotada.
newFile = open(newFileName 'wb')
writer.write(newFile)
newFile.close()
- Ahora tenemos que escribir las páginas PDF en un nuevo archivo PDF. En primer lugar, abrimos el nuevo objeto de archivo y le escribimos páginas PDF usando escribir() método del objeto de escritura de PDF. Finalmente cerramos el objeto de archivo PDF original y el nuevo objeto de archivo.
3. Fusionar archivos PDF
Python# importing required modules from pypdf import PdfWriter def PDFmerge(pdfs output): # creating pdf file writer object pdfWriter = PdfWriter() # appending pdfs one by one for pdf in pdfs: pdfWriter.append(pdf) # writing combined pdf to output pdf file with open(output 'wb') as f: pdfWriter.write(f) def main(): # pdf files to merge pdfs = ['example.pdf' 'rotated_example.pdf'] # output pdf file name output = 'combined_example.pdf' # calling pdf merge function PDFmerge(pdfs=pdfs output=output) if __name__ == '__main__': # calling the main function main()
El resultado del programa anterior es un PDF combinado ejemplo_combinado.pdf obtenido al fusionar ejemplo.pdf y ejemplo_rotado.pdf .
expresión regular en java
- Echemos un vistazo a los aspectos importantes de este programa:
pdfWriter = PdfWriter()- Para fusionar utilizamos una clase prediseñada. Escritor de PDF del módulo pypdf.
Aquí creamos un objeto. escritor de pdf de la clase de escritor de PDF
# appending pdfs one by one
for pdf in pdfs:
pdfWriter.append(pdf)
- Ahora agregamos el objeto de archivo de cada PDF al objeto del escritor de PDF usando el añadir() método.
# writing combined pdf to output pdf file
with open(output 'wb') as f:
pdfWriter.write(f)
- Finalmente escribimos las páginas PDF en el archivo PDF de salida usando escribir método del objeto de escritura de PDF.
4. Dividir archivo PDF
Python# importing the required modules from pypdf import PdfReader PdfWriter def PDFsplit(pdf splits): # creating pdf reader object reader = PdfReader(pdf) # starting index of first slice start = 0 # starting index of last slice end = splits[0] for i in range(len(splits)+1): # creating pdf writer object for (i+1)th split writer = PdfWriter() # output pdf file name outputpdf = pdf.split('.pdf')[0] + str(i) + '.pdf' # adding pages to pdf writer object for page in range(startend): writer.add_page(reader.pages[page]) # writing split pdf pages to pdf file with open(outputpdf 'wb') as f: writer.write(f) # interchanging page split start position for next split start = end try: # setting split end position for next split end = splits[i+1] except IndexError: # setting split end position for last split end = len(reader.pages) def main(): # pdf file to split pdf = 'example.pdf' # split page positions splits = [24] # calling PDFsplit function to split pdf PDFsplit(pdf splits) if __name__ == '__main__': # calling the main function main()
La salida serán tres nuevos archivos PDF con división 1 (página 01) división 2 (página 23) división 3 (página 4-final) .
No se ha utilizado ninguna función o clase nueva en el programa Python anterior. Usando lógica simple e iteraciones, creamos las divisiones del PDF pasado de acuerdo con la lista aprobada. se divide .
Linux editar un archivo
5. Agregar marcas de agua a las páginas PDF
Python# importing the required modules from pypdf import PdfReader PdfWriter def add_watermark(wmFile pageObj): # creating pdf reader object of watermark pdf file reader = PdfReader(wmFile) # merging watermark pdf's first page with passed page object. pageObj.merge_page(reader.pages[0]) # returning watermarked page object return pageObj def main(): # watermark pdf file name mywatermark = 'watermark.pdf' # original pdf file name origFileName = 'example.pdf' # new pdf file name newFileName = 'watermarked_example.pdf' # creating pdf File object of original pdf pdfFileObj = open(origFileName 'rb') # creating a pdf Reader object reader = PdfReader(pdfFileObj) # creating a pdf writer object for new pdf writer = PdfWriter() # adding watermark to each page for page in range(len(reader.pages)): # creating watermarked page object wmpageObj = add_watermark(mywatermark reader.pages[page]) # adding watermarked page object to pdf writer writer.add_page(wmpageObj) # writing watermarked pages to new file with open(newFileName 'wb') as newFile: writer.write(newFile) # closing the original pdf file object pdfFileObj.close() if __name__ == '__main__': # calling the main function main()
Así es como se ve la primera página del archivo PDF original (izquierda) y con marca de agua (derecha):

- Todo el proceso es el mismo que en el ejemplo de rotación de página. La única diferencia es:
wmpageObj = add_watermark(mywatermark pdfReader.pages[page])
- El objeto de página se convierte en un objeto de página con marca de agua usando agregar_marca de agua() función.
- Intentemos comprender agregar_marca de agua() función:
reader = PdfReader(wmFile)
pageObj.merge_page(reader.pages[0])
return pageObj
- Ante todo creamos un objeto lector de PDF de marca de agua.pdf . Para el objeto de página pasado usamos fusionar_página() función y pasa el objeto de página de la primera página del objeto lector de PDF de marca de agua. Esto superpondrá la marca de agua sobre el objeto de página pasado.
Y aquí llegamos al final de este largo tutorial sobre cómo trabajar con archivos PDF en Python.
¡Ahora puedes crear fácilmente tu propio administrador de PDF!
Referencias:
- https://automatetheboringstuff.com/chapter13/
- https://pypi.org/project/pypdf/
Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo utilizando write.geeksforgeeks.org o enviar su artículo por correo a [email protected]. Vea que su artículo aparezca en la página principal de GeeksforGeeks y ayude a otros Geeks.
Por favor escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema discutido anteriormente.