Herramientas de usuario

Herramientas del sitio


python:pdf

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
python:pdf [2022/04/10 02:23] – [Desencriptar PDFs] albertopython:pdf [2022/04/10 03:06] (actual) – [Sobreponiendo páginas] alberto
Línea 40: Línea 40:
  
 Debido a un //bug// en la versión 1.26.0 de PyDF2, se produce un error //IndexError: list index out of range// cuando se llama a getPage(), si ésta ha sido llamada anteriormente, antes de decrypt(). Si se diese el Caso, para evitar ese error, es necesario volver a abrir el documento.  Debido a un //bug// en la versión 1.26.0 de PyDF2, se produce un error //IndexError: list index out of range// cuando se llama a getPage(), si ésta ha sido llamada anteriormente, antes de decrypt(). Si se diese el Caso, para evitar ese error, es necesario volver a abrir el documento. 
 +
 +===== Crear PDFs =====
 +PyPDF2 no permite crear PDSFs editándolos manualmente. Lo que hace es crear un PDF, a aprtir de pegar, rotar, sobreponer o encriptar otros PDFs:\\
 +  - Abrir los archivos PDF de los que se extraerá la información, obteniendo los objetos PdfFileReader correspondientes.
 +  - Crear un nuevo objeto tipo PdfFileWriter.
 +  - Copiar las págins que nos interesen de los objetos abiertos, al objeto PdfFileWriter.
 +  - Usar éste último para escribir en el PDF.
 +
 +==== Copiar páginas ====
 +  - Se abren los PDFs de los que se copiarán las páginas en modo 'rb'.
 +  - Obtenemos los objetos leíbles de los documentos abiertos anteriormente con la función PyPDF2.PdfFileReader(//Objeto_pdf_abierto//)
 +  - Creamos el objeto tipo //PdfFileWriter// que creará el nuevo PDF con el método **PyPDF2.PdfFileWriter()**.
 +  - Añadimos al objeto tipo PdfFileWriter las páginas de cada PDF con la función pagina=objeto_pdf_abierto.getPage(pageNum), con **pdfWriter.addPage(pagina)**.
 +  - Para crear definitivamente el nuevo PDF, abrimos el nuevo PDF hasta ahora inexistente, con open() e indicando en el segundo argumento 'wb'. nuevoPDF = open('nuevo.pdf', 'wb')
 +  - Se pasa como argumento del método **pdfWriter.write(nuevoPDF)**, que copia al información contenida en este (páginas copiadas de los otros PDFs).
 +  - Se cierra con close() el documento creado y el resto de documentos abiertos.
 +
 +==== Rotar páginas ====
 +Del mismo modo que antes, cuando se extrae la página a copiar, se la aplica el método //pagina//**.rotateClockwise(//nº_grados_rotación//)**.
 +\\
 +Continuaría igual: Creando un nuevo PDF y escribiendo las págias rotadas.
 +
 +==== Sobreponiendo páginas ==== 
 +Útil, por ejemplo, para añadir marcas de agua.\\
 +La metodología es la misma que anteriormente: Una vez se han abierto las 2 páginas a unir, se utiliza el método **merge()** de la que va a ser "sobrepuesta" (queda debajo). primeraPagina**.mergePage(**pdfMarcaAguaReader.getPage(0)**)**
 +
 +===== Encriptación de PDFs =====
 +Una vez se le han añadido todas las páginas al objeto pdfWriter, se encripta con: pdfWriter**.encrypt(**//clave//**)**.\\
 +El método encrypt() permite tener 2 argumentos: el primero es el //user password// (sólo permite ver el PDF) y el segundo el //owner password// (permite realizar otras acciones, como por ejemplo, extraer texto). Si sólo se pasa una clave, se usa para ambos usuarios.\\
 +Después el siguiente paso es crear el PDF, como se vió anteriormente.
 +
 +
python/pdf.1649550229.txt.gz · Última modificación: por alberto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki