python:pdf
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| python:pdf [2022/04/10 01:51] – [Extraer texto de PDF] alberto | python:pdf [2022/04/10 03:06] (actual) – [Sobreponiendo páginas] alberto | ||
|---|---|---|---|
| Línea 33: | Línea 33: | ||
| Spoiler: Hay que conocer la contraseña con la que han sido encriptados. Lógicamente.\\ | Spoiler: Hay que conocer la contraseña con la que han sido encriptados. Lógicamente.\\ | ||
| \\ | \\ | ||
| - | - Abrir el documento y obtener el objeto que lo hace leíble: | + | - Abrir el documento y obtener el objeto que lo hace leíble: <code python> |
| - | <code python> | + | docPdf = pyPDF2.PdfFileReader(open(' |
| - | import PyPDF2 | + | - Para comprobar si el documento está encriptado, podemos comprobar el atributo **.isEncrypted**:< |
| - | docPdf = pyPDF2.PdfFileReader(open(' | + | - Desencriptamos |
| - | </ | + | |
| - | - Para comprobar si el documento está encriptado, podemos comprobar el atributo | + | |
| - | <code python> | + | |
| - | - Obtenemos la página de la que queremos extraer el texto, obteniendo un error:< | + | |
| - | Traceback (most recent call last): | + | |
| - | File "< | + | |
| - | pdfReader.getPage() | + | |
| - | --snip-- | + | |
| - | File " | + | |
| - | raise utils.PdfReadError(" | + | |
| - | PyPDF2.utils.PdfReadError: | + | |
| - | - Volvemos a cargar el documento desde el principio y desencriptamos | + | |
| - | docPdf.decrypt('// | + | |
| - Una vez desencriptado el documento, extraemos la página.< | - Una vez desencriptado el documento, extraemos la página.< | ||
| + | |||
| + | Debido a un //bug// en la versión 1.26.0 de PyDF2, se produce un error // | ||
| + | |||
| + | ===== 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, | ||
| + | - 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 ' | ||
| + | - Obtenemos los objetos leíbles de los documentos abiertos anteriormente con la función PyPDF2.PdfFileReader(// | ||
| + | - Creamos el objeto tipo // | ||
| + | - Añadimos al objeto tipo PdfFileWriter las páginas de cada PDF con la función pagina=objeto_pdf_abierto.getPage(pageNum), | ||
| + | - Para crear definitivamente el nuevo PDF, abrimos el nuevo PDF hasta ahora inexistente, | ||
| + | - Se pasa como argumento del método **pdfWriter.write(nuevoPDF)**, | ||
| + | - 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 // | ||
| + | \\ | ||
| + | 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: | ||
| + | |||
| + | ===== Encriptación de PDFs ===== | ||
| + | Una vez se le han añadido todas las páginas al objeto pdfWriter, se encripta con: pdfWriter**.encrypt(**// | ||
| + | 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.1649548308.txt.gz · Última modificación: por alberto
