{"id":11151,"date":"2023-09-10T08:01:19","date_gmt":"2023-09-10T11:01:19","guid":{"rendered":"https:\/\/www.homehost.com.br\/blog\/?p=11151"},"modified":"2023-09-10T08:01:25","modified_gmt":"2023-09-10T11:01:25","slug":"extensoes-pdf-python","status":"publish","type":"post","link":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/","title":{"rendered":"Python ext:pdf &#8211;\u00a0extens\u00f5es PDF no Python"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python-1024x682.png\" alt=\"extens\u00f5es pdf no python\" class=\"wp-image-11207\" width=\"1024\" height=\"682\" srcset=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python-1024x682.png 1024w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python-300x200.png 300w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python-768x511.png 768w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png 1071w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>As bibliotecas de extens\u00f5es PDF no Python (ext:pdf) permitem trabalhar com arquivos PDF. Dessa forma, permite n\u00e3o apenas ler e escrever arquivos PDF, mas tamb\u00e9m manipular seus conte\u00fados, como adicionar, remover e alterar p\u00e1ginas, campos de formul\u00e1rio e metadados. Al\u00e9m disso, as biblioteca\u00a0tamb\u00e9m nos permite converter arquivos PDF em outros formatos, como imagens e textos.<\/p>\n\n\n\n<p>Arquivos PDF s\u00e3o uma das formas de arquivo mais populares para documentos, tanto para uso pessoal quanto profissional. E, como desenvolvedores, \u00e9 muitas vezes necess\u00e1rio trabalhar com esses arquivos em nossas aplica\u00e7\u00f5es. Python, felizmente, conta com algumas bibliotecas poderosas e f\u00e1cil de usar para lidar com arquivos no formato PDF.<\/p>\n\n\n\n<p>Neste artigo, vamos explorar como usar as biblioteca&nbsp;para trabalhar com arquivos PDF em Python. Vamos ver como instalar e importar a biblioteca, como criar e manipular arquivos PDF, e como utilizar algumas das funcionalidades mais avan\u00e7adas da biblioteca.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_72 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Conte\u00fado<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#Bibliotecas_de_extensoes_PDF_populares_no_python\" title=\"Bibliotecas de extens\u00f5es PDF populares no python\">Bibliotecas de extens\u00f5es PDF populares no python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#Caracteristicas_e_beneficios_das_extensoes_PDF_no_Python\" title=\"Caracter\u00edsticas e benef\u00edcios das extens\u00f5es PDF no Python\">Caracter\u00edsticas e benef\u00edcios das extens\u00f5es PDF no Python<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#1_Criar_arquivos_PDF\" title=\"1. Criar arquivos PDF\">1. Criar arquivos PDF<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#2_Leitura_de_arquivos_PDF\" title=\"2. Leitura de arquivos PDF\">2. Leitura de arquivos PDF<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#3_Edicao_de_arquivos_PDF\" title=\"3. Edi\u00e7\u00e3o de arquivos PDF\">3. Edi\u00e7\u00e3o de arquivos PDF<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#4_Conversao_de_arquivos_PDF\" title=\"4. Convers\u00e3o de arquivos PDF\">4. Convers\u00e3o de arquivos PDF<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#5_Integracao_com_outras_tecnologias\" title=\"5. Integra\u00e7\u00e3o com outras tecnologias\">5. Integra\u00e7\u00e3o com outras tecnologias<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#Como_criar_um_arquivo_PDF_a_partir_de_um_modelo_de_dados_usando_bibliotecas_de_extensoes_PDF_no_python\" title=\"Como criar um arquivo PDF a partir de um modelo de dados  usando bibliotecas de extens\u00f5es PDF no python\">Como criar um arquivo PDF a partir de um modelo de dados  usando bibliotecas de extens\u00f5es PDF no python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#Adicionando_metadados_a_um_arquivo_PDF_no_Python\" title=\"Adicionando metadados a um arquivo PDF no Python\">Adicionando metadados a um arquivo PDF no Python<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#Adicionando_metadados_a_um_arquivo_PDF_em_Python\" title=\"Adicionando metadados a um arquivo PDF em Python\">Adicionando metadados a um arquivo PDF em Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#Lendo_informacoes_sobre_o_arquivo_PDF_no_python\" title=\"Lendo informa\u00e7\u00f5es sobre o arquivo PDF no python\">Lendo informa\u00e7\u00f5es sobre o arquivo PDF no python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#Validando_os_dados_de_um_PDF_no_Python\" title=\"Validando os dados de um PDF no Python\">Validando os dados de um PDF no Python<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#Exemplos_de_como_converter_arquivos_PDF_no_Python\" title=\"Exemplos de como converter arquivos PDF no Python\">Exemplos de como converter arquivos PDF no Python<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#1_Convertendo_PDF_para_imagem\" title=\"1. Convertendo PDF para imagem\">1. Convertendo PDF para imagem<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#2_Convertendo_PDF_em_HTML\" title=\"2. Convertendo PDF em HTML\">2. Convertendo PDF em HTML<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#3_Convertendo_PDF_me_Excel\" title=\"3. Convertendo PDF me Excel\">3. Convertendo PDF me Excel<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#Trabalhando_com_anexos_em_um_arquivo_PDF_no_Python\" title=\"Trabalhando com anexos em um arquivo PDF no Python\">Trabalhando com anexos em um arquivo PDF no Python<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Bibliotecas_de_extensoes_PDF_populares_no_python\"><\/span>Bibliotecas de extens\u00f5es PDF populares no python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Existem v\u00e1rias bibliotecas populares de extens\u00f5es PDF para Python, cada uma com suas pr\u00f3prias funcionalidades e aplica\u00e7\u00e3o em diferentes contextos. Aqui est\u00e3o algumas das bibliotecas mais populares, lembrando que podemos est\u00e1 utilizando outras bibliotecas como veremos mais na frente:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>PyPDF2<\/strong>: \u00c9 uma biblioteca leve e f\u00e1cil de usar para manipular PDFs em Python. Dessa forma, proporciona fun\u00e7\u00f5es para ler e escrever PDFs, bem como para adicionar, remover e manipular p\u00e1ginas.<\/li>\n\n\n\n<li><strong>pdfminer<\/strong>: \u00c9 uma biblioteca de processamento de PDFs que permite extrair informa\u00e7\u00f5es de PDFs, como texto, layout, imagens e anota\u00e7\u00f5es. Tamb\u00e9m usada para identificar e separar diferentes partes de um PDF, como capas, p\u00e1ginas e anexos.<\/li>\n\n\n\n<li><strong>pdfquery<\/strong>: \u00c9 uma biblioteca de consulta de PDFs que permite fazer consultas SQL em PDFs. Assim, convertemos PDFs em uma forma <code>tabular<\/code> para que consultas sejam realizadas em cima deles.<\/li>\n\n\n\n<li><strong>pdfkit<\/strong>: Essa \u00e9 uma biblioteca de gerenciamento de PDFs que permite criar, ler, manipular e escrever PDFs em Python. Nesse sentido, incluindo fun\u00e7\u00f5es para adicionar, remover, convers\u00e3o de PDFs em outros formatos, como Imagens e manipular p\u00e1ginas, assim como para assinar e proteger PDFs.<\/li>\n\n\n\n<li><strong>reportlab<\/strong>: \u00c9 uma biblioteca de gera\u00e7\u00e3o de relat\u00f3rios que permite criar PDFs complexos a partir de dados din\u00e2micos. Portanto, inclui fun\u00e7\u00f5es para criar tabelas, gr\u00e1ficos, imagens e texto, al\u00e9m de suportar a personaliza\u00e7\u00e3o de layout e estilo.<\/li>\n\n\n\n<li><strong>pstoedit<\/strong>: \u00c9 uma biblioteca de edi\u00e7\u00e3o de PDFs, incluindo fun\u00e7\u00f5es para adicionar, remover e manipular p\u00e1ginas, assim como para alterar o texto e as imagens dos PDFs.<\/li>\n\n\n\n<li><strong>pdf-reactor<\/strong>: \u00c9 uma biblioteca de processamento de PDFs que permite manipular PDFs em Python. Assim, incluindo fun\u00e7\u00f5es para adicionar, remover e manipular p\u00e1ginas, assim como para extrair informa\u00e7\u00f5es de PDFs, como texto e anota\u00e7\u00f5es.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Caracteristicas_e_beneficios_das_extensoes_PDF_no_Python\"><\/span>Caracter\u00edsticas e benef\u00edcios das extens\u00f5es PDF no Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>As extens\u00f5es PDF s\u00e3o uma das caracter\u00edsticas mais populares do Python, uma <a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/o-que-e-python\/\">linguagem de programa\u00e7\u00e3o de alto n\u00edvel e interpretada<\/a>.&nbsp;Dessa forma, essas extens\u00f5es de pdf no python permitem que os desenvolvedores criem, enxuguem e editem arquivos PDF com facilidade, al\u00e9m de converter arquivos PDF em outros formatos de arquivo.<\/p>\n\n\n\n<p>Aqui est\u00e3o algumas das principais caracter\u00edsticas e benef\u00edcios das extens\u00f5es PDF no Python:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Criar_arquivos_PDF\"><\/span>1. Criar arquivos PDF<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>As extens\u00f5es PDF no python permitem que os desenvolvedores criem arquivos PDF a partir do zero. Nesse sentido,&nbsp;usamos uma biblioteca&nbsp;<code>reportlab<\/code>, que \u00e9 uma das principais bibliotecas de gera\u00e7\u00e3o de PDF do Python.&nbsp;Com essa biblioteca, os desenvolvedores podem criar p\u00e1ginas, adicionar texto e imagens, definir layouts e estilos, entre outras funcionalidades.<\/p>\n\n\n\n<p>Exemplo de como criar um arquivo PDF usando uma biblioteca&nbsp;<code>reportlab<\/code>no Python:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import reportlab.lib.pagesizes as pagesizes\nfrom reportlab.pdfgen import canvas\n\n# Criar um objeto PageSize\npage_size = pagesizes.letter()\n\n# Criar um objeto Canvas\ncanvas = canvas.Canvas('example.pdf')\n\n# definir o tamanho da p\u00e1gina\ncanvas.setPageSize(page_size)\n\n# adicionar texto \u00e0 p\u00e1gina\ntext = 'Hello, world!'\ncanvas.drawString(100, 750, text)\n\n# adicionar uma imagem \u00e0 p\u00e1gina\nimage = 'example.jpg'\ncanvas.drawImage(image, (100, 500))\n\n# adicionar uma linha \u00e0 p\u00e1gina\ncanvas.drawLine(100, 250, 300, 250)\n\n# adicionar um rectangle \u00e0 p\u00e1gina\ncanvas.drawRect(100, 150, 300, 50)\n\n# fechar o arquivo PDF\ncanvas.showPage()\ncanvas.save()\n<\/code><\/pre>\n\n\n\n<p>Este exemplo cria um arquivo PDF chamado &#8220;example.pdf&#8221; com uma p\u00e1gina de tamanho carta (21,59 cm x 27,94 cm), com um texto, uma imagem e um ret\u00e2ngulo desenhado na p\u00e1gina.<\/p>\n\n\n\n<p>Portanto, usamos o objeto&nbsp;<code>PageSize<\/code>  para definir o tamanho da p\u00e1gina, e usamos o objeto&nbsp;<code>Canvas<\/code> para criar a p\u00e1gina e adicionar elementos a ela, e usamos o m\u00e9todo&nbsp;<code>save<\/code> para salvar o arquivo PDF.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Leitura_de_arquivos_PDF\"><\/span>2. Leitura de arquivos PDF<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>As extens\u00f5es PDF tamb\u00e9m permitem que os desenvolvedores leiam e analisem arquivos PDF existentes.&nbsp;Nesse sentido, podemos est\u00e1 usando uma biblioteca&nbsp;<code>pyPDF2<\/code>, que \u00e9 uma das principais bibliotecas de leitura de PDF do Python.&nbsp;Com essa biblioteca, os desenvolvedores podem acessar e manipular o conte\u00fado de um arquivo PDF, como texto, imagens e metadados.<\/p>\n\n\n\n<p>Agora vamos ver um exemplo de como ler um arquivo PDF usando uma biblioteca&nbsp;<code>pyPDF2<\/code>no Python, abrindo um arquivo PDF chamado &#8220;example.pdf&#8221; e depois ler o n\u00famero de p\u00e1ginas que ele possui.&nbsp;Em seguida, ele l\u00ea o conte\u00fado da primeira p\u00e1gina do arquivo PDF e o imprime na sa\u00edda padr\u00e3o. Veja a baixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pyPDF2\n\n# Abrir um arquivo PDF\nwith open('example.pdf', 'rb') as f:\n    # Criar um objeto PDFFile\n    pdf_file = pyPDF2.PDFFile(f)\n\n# Ler o n\u00famero de p\u00e1ginas do arquivo PDF\npage_count = pdf_file.getNumPages()\nprint(f'Number of pages: {page_count}')\n\n# Ler o conte\u00fado da primeira p\u00e1gina\npage_content = pdf_file.getPage(0).extractText()\nprint(page_content)<\/code><\/pre>\n\n\n\n<p>O objeto&nbsp;<code>PDFFile<\/code> \u00e9 usado para abrir o arquivo PDF e acessar suas p\u00e1ginas e conte\u00fado.&nbsp;O m\u00e9todo&nbsp;<code>getNumPages<\/code> \u00e9 usado para ler o n\u00famero de p\u00e1ginas do arquivo PDF, e o m\u00e9todo&nbsp;<code>getPage<\/code> \u00e9 usado para ler o conte\u00fado da primeira p\u00e1gina.&nbsp;O m\u00e9todo&nbsp;<code>extractText<\/code> \u00e9 usado para extrair o texto da p\u00e1gina.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Edicao_de_arquivos_PDF\"><\/span>3. Edi\u00e7\u00e3o de arquivos PDF<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Al\u00e9m de criar e ler arquivos PDF, as extens\u00f5es PDF tamb\u00e9m permitem que os desenvolvedores editem os arquivos PDF existentes.&nbsp;Portanto, usamos uma biblioteca&nbsp;<code>pdftotext<\/code>, que permite que os desenvolvedores extraiam textos de arquivos PDF e os convertam em formatos de texto simples, como o formato de texto simples.<\/p>\n\n\n\n<p>No exemplo abaixo, veremos como editar um arquivo PDF usando uma biblioteca&nbsp;<code>pyPDF2<\/code>no Python. Primeiro, abre um arquivo PDF chamado &#8220;example.pdf&#8221;, adiciona uma nova p\u00e1gina ao final do arquivo e adiciona texto e uma imagem \u00e0 nova p\u00e1gina.&nbsp;Em seguida, ele salvou o arquivo PDF editado como &#8220;edited_example.pdf&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pyPDF2\n\n# Abrir um arquivo PDF\nwith open('example.pdf', 'rb') as f:\n    # Criar um objeto PDFFile\n    pdf_file = pyPDF2.PDFFile(f)\n\n# Adicionar uma nova p\u00e1gina ao arquivo PDF\npdf_file.addPage(pyPDF2.Page(100, 100))\n\n# Adicionar texto \u00e0 nova p\u00e1gina\ntext = 'This is a new page!'\npdf_file.getPage(1).drawString(50, 50, text)\n\n# Adicionar uma imagem \u00e0 nova p\u00e1gina\nimage = 'example.jpg'\npdf_file.getPage(1).drawImage(image, (100, 100))\n\n# Salvar o arquivo PDF editado\npdf_file.save('edited_example.pdf')\n<\/code><\/pre>\n\n\n\n<p>O objeto&nbsp;<code>PDFFile<\/code> \u00e9 usado para abrir o arquivo PDF e adicionar uma nova p\u00e1gina ao final do arquivo.&nbsp;O m\u00e9todo&nbsp;<code><strong>addPage<\/strong><\/code> \u00e9 usado para adicionar uma nova p\u00e1gina, e o m\u00e9todo&nbsp;<code><strong>drawString<\/strong><\/code> \u00e9 usado para adicionar <a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/string-python\/\">texto<\/a> \u00e0 p\u00e1gina.&nbsp;O m\u00e9todo&nbsp;<code><strong>drawImage<\/strong><\/code> \u00e9 usado para adicionar uma imagem \u00e0 p\u00e1gina.&nbsp;Por fim, o m\u00e9todo&nbsp;<code><strong>save<\/strong><\/code> \u00e9 usado para salvar o arquivo PDF editado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_Conversao_de_arquivos_PDF\"><\/span>4. Convers\u00e3o de arquivos PDF<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>As extens\u00f5es PDF tamb\u00e9m permitem que os desenvolvedores convertam arquivos PDF em outros formatos de arquivo.&nbsp;Assim, podemos est\u00e1 usando uma biblioteca&nbsp;<code>pdf2image<\/code>, que permite que os desenvolvedores convertam p\u00e1ginas de um arquivo PDF em imagens raster, como JPEG ou PNG.<\/p>\n\n\n\n<p>Neste exemplo de como converter um arquivo PDF para um arquivo de texto usando uma biblioteca&nbsp;<code>pyPDF2<\/code>no Python, abrimos um arquivo PDF chamado &#8220;example.pdf&#8221; e extrai o texto de todas as p\u00e1ginas do arquivo PDF.&nbsp;Em seguida, ele salva o texto em um arquivo de texto chamado &#8220;example.txt&#8221;. Veja:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pyPDF2\n\n# Abrir um arquivo PDF\nwith open('example.pdf', 'rb') as f:\n    # Criar um objeto PDFFile\n    pdf_file = pyPDF2.PDFFile(f)\n\n# Extrair o texto do arquivo PDF\ntext = ''\nfor page in pdf_file.pages:\n    text += page.extractText()\n\n# Salvar o texto em um arquivo de texto\nwith open('example.txt', 'w') as f:\n    f.write(text)\n<\/code><\/pre>\n\n\n\n<p>O objeto&nbsp;<code>PDFFile<\/code> \u00e9 usado para abrir o arquivo PDF e acessar suas p\u00e1ginas.&nbsp;O m\u00e9todo&nbsp;<code><strong>extractText<\/strong><\/code> \u00e9 usado para extrair o texto de cada p\u00e1gina do arquivo PDF.&nbsp;O texto \u00e9 salvo em uma vari\u00e1vel e, em seguida, salvo em um arquivo de texto usando o m\u00e9todo&nbsp;<code><strong>write<\/strong><\/code> do objeto&nbsp;<code>open<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_Integracao_com_outras_tecnologias\"><\/span>5. Integra\u00e7\u00e3o com outras tecnologias<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Tamb\u00e9m utilizamos as extens\u00f5es PDF integradas com outras tecnologias, como por exemplo, com o <a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/criando-sua-primeira-aplicacao-django-com-python-2023\/\">Django<\/a>, um framework de desenvolvimento web para Python, ou com o <a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/selenium-python\/\">Selenium<\/a>, uma biblioteca de automa\u00e7\u00e3o de testes para Python.&nbsp;Dessa forma, essa integra\u00e7\u00e3o permite que os desenvolvedores criem solu\u00e7\u00f5es personalizadas para suas necessidades espec\u00edficas.<\/p>\n\n\n\n<p>Suponha que queremos criar um sistema de gerenciamento de documentos que permita aos usu\u00e1rios fazer upload de arquivos PDF, extrair informa\u00e7\u00f5es deles e armazen\u00e1-los em um banco de dados.&nbsp;Para fazer isso, podemos utilizar uma biblioteca&nbsp;<code>pyPDF2<\/code> para lidar com os arquivos PDF e uma base de dados, como <a href=\"https:\/\/www.homehost.com.br\/blog\/tutoriais\/mysql\/o-que-e-mysql\/\">MySQL<\/a> ou <a href=\"https:\/\/www.homehost.com.br\/blog\/desenvolvedores\/como-instalar-o-mongodb-com-compass-usando-docker\/\">MongoDB<\/a>, para armazenar as informa\u00e7\u00f5es extra\u00eddas.<\/p>\n\n\n\n<p>Aqui est\u00e1 um exemplo :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pyPDF2\nimport mysql.connector\n\n# Criar uma connex\u00e3o com o banco de dados\ncnx = mysql.connector.connect(\n    user='usuario',\n    password='senha',\n    host='localhost',\n    database='banco_de_dados'\n)\n\n# Criar uma tabela no banco de dados para armazenar as informa\u00e7\u00f5es extra\u00eddas\ncursor = cnx.cursor()\ncursor.execute('CREATE TABLE IF NOT EXISTS pdf_info (id INT PRIMARY KEY, name VARCHAR(255), data TEXT)')\n\n# Abrir um arquivo PDF e extrair informa\u00e7\u00f5es delicadas\nwith open('example.pdf', 'rb') as f:\n    pdf_file = pyPDF2.PDFFile(f)\n    name = pdf_file.getTitle()\n    data = pdf_file.getPage(0).extractText()\n\n# Salvar as informa\u00e7\u00f5es extra\u00eddas no banco de dados\ncursor.execute('INSERT INTO pdf_info (name, data) VALUES (%s, %s)', (name, data))\ncnx.commit()\n\n# Fechar a connex\u00e3o com o banco de dados\ncnx.close()\n<\/code><\/pre>\n\n\n\n<p>Este exemplo aplica-se uma biblioteca&nbsp;<code>mysql.connector<\/code> para conectar a um banco de dados MySQL e criar uma tabela para armazenar as informa\u00e7\u00f5es extra\u00eddas dos arquivos PDF.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Como_criar_um_arquivo_PDF_a_partir_de_um_modelo_de_dados_usando_bibliotecas_de_extensoes_PDF_no_python\"><\/span>Como criar um arquivo PDF a partir de um modelo de dados  usando bibliotecas de extens\u00f5es PDF no python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Para criar um arquivo PDF a partir de um modelo de dados em Python, usamos a biblioteca Python PDFkit.<\/p>\n\n\n\n<p>PDFkit \u00e9 uma biblioteca Python que permite criar PDFs a partir de dados HTML, texto, imagens e outros formatos de arquivo.&nbsp;Dessa forma, fornecendo uma ampla variedade de recursos para personalizar o conte\u00fado e a apar\u00eancia do PDF, incluindo suporte a tabelas, imagens, linhas, formul\u00e1rios, anota\u00e7\u00f5es e muito mais.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Aqui est\u00e1 um exemplo de como criar um arquivo PDF a partir de um modelo de dados em Python usando PDFkit:<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Primeiro, instalamos uma biblioteca PDFkit.&nbsp;Dessa forma, fazemos isso da seguinte forma com o comando pip:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install pdfkit\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Em seguida, precisamos importar a biblioteca PDFkit no c\u00f3digo Python:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>from pdfkit import PDFKit\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Agora, criamos um objeto PDFKit e fornecer os dados que desejamos incluir no PDF.&nbsp;Por exemplo, quando temos um dicion\u00e1rio de dados com informa\u00e7\u00f5es sobre um conjunto de produtos, podemos criar um PDFKit e adicionar esses dados ao PDF:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>import pdfkit\n\n# Criar um dicion\u00e1rio com informa\u00e7\u00f5es sobre os produtos\nproducts = {\n    \"Produto 1\": {\n        \"Nome\": \"Produto 1\",\n        \"Pre\u00e7o\": 19.99,\n        \"Descri\u00e7\u00e3o\": \"Este \u00e9 o produto 1\"\n    },\n    \"Produto 2\": {\n        \"Nome\": \"Produto 2\",\n        \"Pre\u00e7o\": 29.99,\n        \"Descri\u00e7\u00e3o\": \"Este \u00e9 o produto 2\"\n    },\n    \"Produto 3\": {\n        \"Nome\": \"Produto 3\",\n        \"Pre\u00e7o\": 39.99,\n        \"Descri\u00e7\u00e3o\": \"Este \u00e9 o produto 3\"\n    }\n}\n\n# Criar um PDFKit\npdf = pdfkit.PDFKit()\n\n# Adicionar uma p\u00e1gina ao PDF\npdf.add_page()\n\n# Adicionar uma tabela \u00e0 p\u00e1gina\ntable = pdf.add_table(10, 10, 100, 100)\n\n# Adicionar as informa\u00e7\u00f5es dos produtos \u00e0 tabela\nfor produto, informa\u00e7\u00f5es in products.items():\n    table.add_row()\n    table.add_cell(produto)\n    table.add_cell(informa\u00e7\u00f5es&#091;\"Nome\"])\n    table.add_cell(informa\u00e7\u00f5es&#091;\"Pre\u00e7o\"])\n    table.add_cell(informa\u00e7\u00f5es&#091;\"Descri\u00e7\u00e3o\"])\n\n# Salvar o PDF\npdf.save(\"produtos.pdf\")<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Agora, podemos adicionar mais informa\u00e7\u00f5es ao PDF, como imagens, links, formul\u00e1rios, anota\u00e7\u00f5es, etc.<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Adicionando imagens, aplicamos o m\u00e9todo&nbsp;<code>add_image()<\/code>do objeto&nbsp;<code>PDFKit<\/code>.&nbsp;Por exemplo:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>pdf.add_image(\"path\/to\/image.jpg\")\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Com links, utilizamos o m\u00e9todo&nbsp;<code>add_link()<\/code>do objeto&nbsp;<code>PDFKit<\/code>.&nbsp;Por exemplo:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>pdf.add_link(\"http:\/\/www.example.com\", \"Link para o site\")\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>J\u00e1 para formul\u00e1rios, usamos o m\u00e9todo&nbsp;<code>add_form()<\/code>do objeto&nbsp;<code>PDFKit<\/code>.&nbsp;Por exemplo:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>pdf.add_form(fields=&#091;\n    {\"name\": \"Nome\", \"type\": \"text\"},\n    {\"name\": \"E-mail\", \"type\": \"email\"},\n    {\"name\": \"Tel\u00e3o\", \"type\": \"number\"}\n])\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para adicionar anota\u00e7\u00f5es, aplicamos o m\u00e9todo&nbsp;<code>add_annotation()<\/code>do objeto&nbsp;<code>PDFKit<\/code>.&nbsp;Por exemplo:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>pdf.add_annotation(text=\"Este \u00e9 um exemplo de anota\u00e7\u00e3o\")\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ao final, salvamos o PDF usando o m\u00e9todo&nbsp;<code>save()<\/code>do objeto&nbsp;<code>PDFKit<\/code>.&nbsp;Por exemplo:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>pdf.save(\"nome_do_arquivo.pdf\")\n<\/code><\/pre>\n\n\n\n<p>Essa \u00e9 a forma b\u00e1sica de criar um PDF usando o PDFKit em Python.&nbsp;Nesse sentido, recomendamos consultar a documenta\u00e7\u00e3o oficial do PDFKit para saber mais sobre as funcionalidades e recursos dispon\u00edveis.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Adicionando_metadados_a_um_arquivo_PDF_no_Python\"><\/span>Adicionando metadados a um arquivo PDF no Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Agora vamos aprender a adicionar metadados em arquivos no formatos PDF em python com diferente bibliotecas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Adicionando_metadados_a_um_arquivo_PDF_em_Python\"><\/span>Adicionando metadados a um arquivo PDF em Python<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Para adicionar metadados a um arquivo PDF em Python, utilizamos a biblioteca&nbsp;<code>PyPDF2<\/code>. Dessa forma, essa biblioteca permite ler e escrever arquivos PDF e tamb\u00e9m permite adicionar, alterar e <a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/trim-python\/\">remover<\/a> metadados.<\/p>\n\n\n\n<p>Aqui est\u00e1 um exemplo de como adicionar metadados a um arquivo PDF usando&nbsp;<code>PyPDF2<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import PyPDF2\n\n# Abrir o arquivo PDF\nwith open('arquivo.pdf', 'rb') as f:\n    # Criar um objeto PyPDF2.PdfFileReader para ler o arquivo PDF\n    pdf_reader = PyPDF2.PdfFileReader(f)\n    \n    # Adicionar metadados ao arquivo PDF\n    pdf_reader.addMetadata({\n        'title': 'Meu arquivo PDF',\n        'author': 'Jo\u00e3o da Silva',\n        'creator': 'Python e PyPDF2',\n        'producer': 'My PDF Creator'\n    })\n    \n    # Salvar o arquivo PDF com os metadados adicionados\n    with open('arquivo-metadados.pdf', 'wb') as f:\n        pdf_reader.write(f)\n<\/code><\/pre>\n\n\n\n<p>Neste exemplo, estamos usando o m\u00e9todo&nbsp;<code><strong>addMetadata<\/strong><\/code>&nbsp;do objeto&nbsp;<code><strong>PdfFileReader<\/strong><\/code>&nbsp;para adicionar quatro metadados ao arquivo PDF: t\u00edtulo, autor, criador e produtor. Assim, podemos adicionar mais metadados conforme necess\u00e1rio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Lendo_informacoes_sobre_o_arquivo_PDF_no_python\"><\/span>Lendo informa\u00e7\u00f5es sobre o arquivo PDF no python<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Agora vamos aplicar o m\u00e9todo&nbsp;<code><strong>get_info<\/strong><\/code>&nbsp;do objeto&nbsp;<code><strong>PDFDocument<\/strong><\/code>&nbsp;para ler informa\u00e7\u00f5es sobre o arquivo PDF, como o t\u00edtulo, autor, criador e produtor:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pdfminer\n\n# Abrir o arquivo PDF\nwith open('arquivo.pdf', 'rb') as f:\n    # Criar um objeto pdfminer.PDFDocument para ler o arquivo PDF\n    doc = pdfminer.PDFDocument(f)\n    \n    # Ler as informa\u00e7\u00f5es do arquivo PDF\n    info = doc.get_info()\n    \n    # Imprimir as informa\u00e7\u00f5es\n    print(info)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Validando_os_dados_de_um_PDF_no_Python\"><\/span>Validando os dados de um PDF no Python <span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Agora temos outro exemplo de usando a biblioteca&nbsp;<code>pydantic<\/code>, criando um modelo de dados e usando o m\u00e9todo&nbsp;<code><strong>validate<\/strong>()<\/code>&nbsp;para validar os dados de um arquivo PDF:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pydantic\n\n# Criar um modelo de dados para o arquivo PDF\nclass PdfFile(pydantic.BaseModel):\n    title: str\n    author: str\n    creator: str\n    producer: str\n\n# Criar um objeto pydantic.PDFFile para ler o arquivo PDF\nwith open('arquivo.pdf', 'rb') as f:\n    pdf_file = PdfFile(f)\n\n# Validar os dados do arquivo PDF\nif pdf_file.validate():\n    print(\"Os dados do arquivo PDF s\u00e3o v\u00e1lidos.\")\nelse:\n    print(\"Os dados do arquivo PDF n\u00e3o s\u00e3o v\u00e1lidos.\")\n<\/code><\/pre>\n\n\n\n<p>Neste exemplo, estamos criando um modelo de dados&nbsp;<code><strong>PdfFile<\/strong><\/code>&nbsp;com quatro campos:&nbsp;<code>title<\/code>,&nbsp;<code>author<\/code>,&nbsp;<code>creator<\/code>&nbsp;e&nbsp;<code>producer<\/code>. Em seguida, estamos criando um objeto&nbsp;<code><strong>PdfFile<\/strong><\/code>&nbsp;a partir do arquivo PDF e usando o m\u00e9todo&nbsp;<code><strong>validate<\/strong>()<\/code>&nbsp;para validar os dados do arquivo PDF.<\/p>\n\n\n\n<p>Se os dados do arquivo PDF forem v\u00e1lidos, o m\u00e9todo &nbsp;<code><strong>validate<\/strong>()<\/code>&nbsp; retornar\u00e1&nbsp; <code>True<\/code>&nbsp;e imprimir\u00e1 a mensagem &#8220;Os dados do arquivo PDF s\u00e3o v\u00e1lidos.&#8221;. Caso contr\u00e1rio, o m\u00e9todo&nbsp;<code><strong>validate<\/strong>()<\/code>&nbsp;retornar\u00e1&nbsp;<code>False<\/code>&nbsp;e imprimir\u00e1 a mensagem &#8220;Os dados do arquivo PDF n\u00e3o s\u00e3o v\u00e1lidos.&#8221;.<\/p>\n\n\n\n<p>Dessa forma, podemos adaptar esse exemplo para nossos pr\u00f3prios fins, criando um modelo de dados personalizado para o arquivo PDF e usando o m\u00e9todo&nbsp;<code><strong>validate<\/strong>()<\/code>&nbsp;para validar os dados do arquivo PDF.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Exemplos_de_como_converter_arquivos_PDF_no_Python\"><\/span>Exemplos de como converter arquivos PDF no Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Para converter arquivos PDF em outros formatos utilizando Python, podemos <code>est\u00e1 utilizando algumas bibliotecas<\/code>. Assim, permitindo ler e escrever arquivos PDF e convert\u00ea-los em outros formatos, como Image, Texto, HTML, entre outros.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/image-17.png\" alt=\"converter arquivos PDF no Python\" class=\"wp-image-11206\" style=\"width:336px;height:336px\" width=\"336\" height=\"336\" srcset=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/image-17.png 626w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/image-17-300x300.png 300w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/image-17-150x150.png 150w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/image-17-24x24.png 24w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/image-17-48x48.png 48w, https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/image-17-96x96.png 96w\" sizes=\"(max-width: 336px) 100vw, 336px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Convertendo_PDF_para_imagem\"><\/span>1. Convertendo PDF para imagem <span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Aqui est\u00e1 um exemplo de como converter um arquivo PDF em um arquivo de imagem PNG utilizando&nbsp;<code>PyPDF2<\/code>. Neste exemplo, estamos aberto um arquivo PDF chamado&nbsp;<code>arquivo.pdf<\/code>&nbsp;e selecionando a primeira p\u00e1gina (<code>page_number = 1<\/code>) para ser convertida em uma imagem PNG. Em seguida, estamos usando o m\u00e9todo&nbsp;<code><strong>convertToImage<\/strong>()<\/code>&nbsp;para criar a imagem e salvando em disco com o nome&nbsp;<code>image.png<\/code>. Veja: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import PyPDF2\n\n# Abrir o arquivo PDF\nwith open('arquivo.pdf', 'rb') as f:\n    # Criar um objeto PyPDF2.PdfFileReader para o arquivo PDF\n    pdf = PyPDF2.PdfFileReader(f)\n    \n    # Informar o n\u00famero da p\u00e1gina que desejamos converter\n    page_number = 1\n    \n    # Criar uma imagem PNG a partir da p\u00e1gina selecionada\n    image = pdf.getPage(page_number).convertToImage()\n    \n    # Salvar a imagem em disco\n    with open('image.png', 'wb') as f:\n        f.write(image)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Convertendo_PDF_em_HTML\"><\/span>2. Convertendo PDF em HTML <span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Al\u00e9m disso, convertermos os arquivos PDF em outros formatos, como Texto, HTML, entre outros, utilizando os m\u00e9todos&nbsp;<code><strong>getPage().getText()<\/strong><\/code>&nbsp;para obter o texto da p\u00e1gina e<strong>&nbsp;<code>getPage(). convertToHtml()<\/code><\/strong>&nbsp;para obter o c\u00f3digo HTML da p\u00e1gina, respectivamente.<\/p>\n\n\n\n<p>Para converter em outro formato, \u00e9 necess\u00e1rio instalar as bibliotecas necess\u00e1rias, como por exemplo,&nbsp;<code><strong>reportlab<\/strong><\/code>&nbsp;para converter em HTML. Veja:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from reportlab.lib.pagesizes import letter\nfrom reportlab.pdfgen import canvas\n\n# Abrir o arquivo PDF\nwith open('arquivo.pdf', 'rb') as f:\n    # Criar um objeto PyPDF2.PdfFileReader para o arquivo PDF\n    pdf = PyPDF2.PdfFileReader(f)\n    \n    # Informar o n\u00famero da p\u00e1gina que desejamos converter\n    page_number = 1\n    \n    # Criar um objeto reportlab.pdfgen.canvas para a p\u00e1gina selecionada\n    canvas = pdf.getPage(page_number).convertToCanvas()\n    \n    # Definir o tamanho da p\u00e1gina\n    page_size = letter.A4\n    \n    # Criar um arquivo HTML vazio\n    html =''\n    \n    # Adicionar o c\u00f3digo HTML da p\u00e1gina ao arquivo HTML\n    html += canvas.get_html(page_size)\n    \n    # Salvar o arquivo HTML em disco\n    with open('arquivo.html', 'w') as f:\n        f.write(html)\n<\/code><\/pre>\n\n\n\n<p>Neste exemplo, estamos convertendo a primeira p\u00e1gina do arquivo PDF em um arquivo HTML. Em seguida, estamos usando o m\u00e9todo&nbsp;<code><strong>convertToCanvas()<\/strong><\/code>&nbsp;para criar um objeto&nbsp;<code><strong>reportlab.pdfgen.canvas<\/strong><\/code>&nbsp;para a p\u00e1gina selecionada e o m\u00e9todo&nbsp;<code><strong>get_html()<\/strong><\/code>&nbsp;para obter o c\u00f3digo HTML da p\u00e1gina. Por fim, estamos salvando o arquivo HTML em disco com o nome&nbsp;<code>arquivo.html<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Convertendo_PDF_me_Excel\"><\/span>3. Convertendo PDF me Excel <span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Para converter um arquivo PDF em um arquivo Excel usando Python, utilizamos a biblioteca&nbsp; <code><a href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/pandas-python\/\">pandas<\/a><\/code>&nbsp; e&nbsp;<code>openpyxl<\/code>.<\/p>\n\n\n\n<p>Aqui est\u00e1 um exemplo de como converter um arquivo PDF em um arquivo Excel usando essas bibliotecas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pandas as pd\nfrom openpyxl import load_workbook\n\n# Abrir o arquivo PDF\nwith open('arquivo.pdf', 'rb') as f:\n    # Criar um objeto pandas.DataFrame a partir do arquivo PDF\n    df = pd.read_pdf(f)\n\n# Convertar o DataFrame em um arquivo Excel\nworkbook = load_workbook(filename='arquivo.xlsx')\nsheet = workbook.active\n\n# Copiar as c\u00e9lulas do DataFrame para o arquivo Excel\ndf.to_excel(sheet, index=False)\n\n# Salvar o arquivo Excel em disco\nworkbook.save('arquivo.xlsx')\n<\/code><\/pre>\n\n\n\n<p>Neste exemplo, estamos abrindo um arquivo PDF chamado&nbsp;<code>arquivo.pdf<\/code>&nbsp;e usando o m\u00e9todo&nbsp;<code><strong>read_pdf()<\/strong><\/code>&nbsp;da biblioteca&nbsp;<code>pandas<\/code>&nbsp;para criar um objeto&nbsp;<code>pandas.DataFrame<\/code>&nbsp;a partir do conte\u00fado do arquivo. Em seguida, estamos convertendo esse DataFrame em um arquivo Excel usando o m\u00e9todo&nbsp;<code><strong>to_excel()<\/strong><\/code>&nbsp;da biblioteca&nbsp;<code>openpyxl<\/code>. Por fim, estamos salv\u00e1-lo em disco com o nome&nbsp;<code>arquivo.xlsx<\/code>.<\/p>\n\n\n\n<p>O m\u00e9todo&nbsp;<code><strong>read_pdf()<\/strong><\/code>&nbsp;aceita v\u00e1rias op\u00e7\u00f5es, como&nbsp;<code>orienta\u00e7\u00e3o<\/code>&nbsp;e&nbsp;<code><strong>skip_rows<\/strong><\/code>, que podem ser usadas para personalizar a leitura do arquivo PDF. Assim, O m\u00e9todo&nbsp;<code><strong>to_excel()<\/strong><\/code>&nbsp;aceita v\u00e1rias op\u00e7\u00f5es, como&nbsp;<code><strong>sheet_name<\/strong><\/code>&nbsp;e&nbsp;<code>index<\/code>, que s\u00e3o usadas para personalizar a escrita do arquivo Excel.<\/p>\n\n\n\n<p>Portanto, \u00e9 importante lembrar que a qualidade da convers\u00e3o pode variar dependendo do conte\u00fado do arquivo PDF e da configura\u00e7\u00e3o das op\u00e7\u00f5es de leitura e escrita.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Trabalhando_com_anexos_em_um_arquivo_PDF_no_Python\"><\/span>Trabalhando com anexos em um arquivo PDF no Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Para trabalhar com anexos em um arquivo PDF usando Python e adicionar um anexo a um arquivo PDF usando&nbsp;<code>PyPDF2<\/code>, vamos seguir os seguintes passos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Instale uma biblioteca&nbsp;<code>PyPDF2<\/code> usando o comando&nbsp;<code>pip install PyPDF2<\/code>.<\/li>\n\n\n\n<li>Importe uma biblioteca&nbsp;<code>PyPDF2<\/code> no c\u00f3digo Python.<\/li>\n\n\n\n<li>Abra o arquivo PDF usando a fun\u00e7\u00e3o&nbsp;<code><strong>PdfFileReader<\/strong><\/code> da biblioteca&nbsp;<code>PyPDF2<\/code>.<\/li>\n\n\n\n<li>Adicione o anexo usando a fun\u00e7\u00e3o&nbsp;<strong><code>addAttachment<\/code>do<\/strong> objeto&nbsp;<code>PdfFileReader<\/code>.<\/li>\n\n\n\n<li>Salve o arquivo PDF atualizado usando a fun\u00e7\u00e3o&nbsp;<code><strong>write<\/strong><\/code> do objeto&nbsp;<code>PdfFileReader<\/code>.<\/li>\n<\/ol>\n\n\n\n<p>Aqui est\u00e1 um exemplo de c\u00f3digo que adiciona um anexo a um arquivo PDF usando&nbsp;<code>PyPDF2<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import PyPDF2\n\n# Abra o arquivo PDF\nwith open('document.pdf', 'rb') as f:\n    pdf = PyPDF2.PdfFileReader(f)\n\n# Adicione o anexo\npdf.addAttachment('path\/to\/attachment.txt', 'text\/plain')\n\n# Salve o arquivo PDF atualizado\nwith open('document_with_attachment.pdf', 'wb') as f:\n    pdf.write(f)\n<\/code><\/pre>\n\n\n\n<p>Esse c\u00f3digo aberto o arquivo PDF&nbsp;<code>document.pdf<\/code>, adiciona um anexo chamado&nbsp;<code>attachment.txt<\/code>com o tipo de conte\u00fado&nbsp;<code>text\/plain<\/code>e salve o arquivo PDF atualizado como&nbsp;<code>document_with_attachment.pdf<\/code>.<\/p>\n\n\n\n<p>Nesse sentido, usamos a fun\u00e7\u00e3o&nbsp;<code><strong>addAttachment<\/strong><\/code> para adicionamos anexos em outros formatos, como imagens, \u00e1udios e v\u00eddeos.<\/p>\n\n\n\n<p>Para ler um anexo de um arquivo PDF usando&nbsp;<code>PyPDF2<\/code>, usamos a fun\u00e7\u00e3o&nbsp;<strong><code>getAttachment<\/code>do<\/strong> objeto&nbsp;<code><strong>PdfFileReader<\/strong><\/code>.&nbsp;Assim, essa fun\u00e7\u00e3o retorna uma tupla contendo o nome do anexo e o conte\u00fado do anexo.<\/p>\n\n\n\n<p>Aqui est\u00e1 um exemplo de c\u00f3digo que l\u00ea um anexo de um arquivo PDF usando&nbsp;<code>PyPDF2<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import PyPDF2\n\n# Abra o arquivo PDF\nwith open('document_with_attachment.pdf', 'rb') as f:\n    pdf = PyPDF2.PdfFileReader(f)\n\n# Ler o anexo\nattachment = pdf.getAttachment('attachment.txt')\n\n# Imprimir o conte\u00fado do anexo\nprint(attachment&#091;1])\n<\/code><\/pre>\n\n\n\n<p>Assim, esse c\u00f3digo abri o arquivo PDF&nbsp;<code>document_with_attachment.pdf<\/code>, busca o anexo chamado&nbsp;<code>attachment.txt<\/code>e imprime o conte\u00fado do anexo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As bibliotecas de extens\u00f5es PDF no Python (ext:pdf) permitem trabalhar com arquivos PDF. Dessa forma, permite n\u00e3o apenas ler e escrever arquivos PDF, mas tamb\u00e9m manipular seus conte\u00fados, como adicionar, remover e alterar p\u00e1ginas, campos de formul\u00e1rio e metadados. Al\u00e9m disso, as biblioteca\u00a0tamb\u00e9m nos permite converter arquivos PDF em outros formatos, como imagens e textos. [&hellip;]<\/p>\n","protected":false},"author":33,"featured_media":11207,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_helpful_status":1,"_lmt_disableupdate":"","_lmt_disable":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[211],"tags":[],"class_list":["post-11151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pythondjango"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python ext:pdf -\u00a0extens\u00f5es PDF no Python | Homehost<\/title>\n<meta name=\"description\" content=\"Extens\u00f5es PDF em Python: manipule, gerencie e converta arquivos PDF com facilidade. Crie, adicione anota\u00e7\u00f5es, formul\u00e1rios e muito mais!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python ext:pdf -\u00a0extens\u00f5es PDF no Python | Homehost\" \/>\n<meta property=\"og:description\" content=\"Extens\u00f5es PDF em Python: manipule, gerencie e converta arquivos PDF com facilidade. Crie, adicione anota\u00e7\u00f5es, formul\u00e1rios e muito mais!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Homehost\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Homehost\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-10T11:01:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-10T11:01:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1071\" \/>\n\t<meta property=\"og:image:height\" content=\"713\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sch\u00eania T\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Homehost\" \/>\n<meta name=\"twitter:site\" content=\"@Homehost\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sch\u00eania T\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/\",\"url\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/\",\"name\":\"Python ext:pdf -\u00a0extens\u00f5es PDF no Python | Homehost\",\"isPartOf\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png\",\"datePublished\":\"2023-09-10T11:01:19+00:00\",\"dateModified\":\"2023-09-10T11:01:25+00:00\",\"author\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa\"},\"description\":\"Extens\u00f5es PDF em Python: manipule, gerencie e converta arquivos PDF com facilidade. Crie, adicione anota\u00e7\u00f5es, formul\u00e1rios e muito mais!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#primaryimage\",\"url\":\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png\",\"contentUrl\":\"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png\",\"width\":1071,\"height\":713,\"caption\":\"python ext:pdf\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/www.homehost.com.br\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python ext:pdf &#8211;\u00a0extens\u00f5es PDF no Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.homehost.com.br\/blog\/\",\"name\":\"Homehost\",\"description\":\"Hospedagem De Sites\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.homehost.com.br\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa\",\"name\":\"Sch\u00eania T\",\"description\":\"Cientista de dados, apaixonada por ferramentas de tecnologia e games. Graduanda em Estat\u00edstica pela UFPB. Seu hobby \u00e9 maratonar s\u00e9ries, curtir uma boa m\u00fasica trabalhando ou cozinhando, ir ao cinema e aprender coisas novas! Contato: schenia.blog@homehost.com.br\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python ext:pdf -\u00a0extens\u00f5es PDF no Python | Homehost","description":"Extens\u00f5es PDF em Python: manipule, gerencie e converta arquivos PDF com facilidade. Crie, adicione anota\u00e7\u00f5es, formul\u00e1rios e muito mais!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/","og_locale":"pt_BR","og_type":"article","og_title":"Python ext:pdf -\u00a0extens\u00f5es PDF no Python | Homehost","og_description":"Extens\u00f5es PDF em Python: manipule, gerencie e converta arquivos PDF com facilidade. Crie, adicione anota\u00e7\u00f5es, formul\u00e1rios e muito mais!","og_url":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/","og_site_name":"Homehost","article_publisher":"https:\/\/www.facebook.com\/Homehost\/","article_published_time":"2023-09-10T11:01:19+00:00","article_modified_time":"2023-09-10T11:01:25+00:00","og_image":[{"width":1071,"height":713,"url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png","type":"image\/png"}],"author":"Sch\u00eania T","twitter_card":"summary_large_image","twitter_creator":"@Homehost","twitter_site":"@Homehost","twitter_misc":{"Escrito por":"Sch\u00eania T","Est. tempo de leitura":"14 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/","url":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/","name":"Python ext:pdf -\u00a0extens\u00f5es PDF no Python | Homehost","isPartOf":{"@id":"https:\/\/www.homehost.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#primaryimage"},"image":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png","datePublished":"2023-09-10T11:01:19+00:00","dateModified":"2023-09-10T11:01:25+00:00","author":{"@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa"},"description":"Extens\u00f5es PDF em Python: manipule, gerencie e converta arquivos PDF com facilidade. Crie, adicione anota\u00e7\u00f5es, formul\u00e1rios e muito mais!","breadcrumb":{"@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#primaryimage","url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png","contentUrl":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png","width":1071,"height":713,"caption":"python ext:pdf"},{"@type":"BreadcrumbList","@id":"https:\/\/www.homehost.com.br\/blog\/pythondjango\/extensoes-pdf-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.homehost.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Python ext:pdf &#8211;\u00a0extens\u00f5es PDF no Python"}]},{"@type":"WebSite","@id":"https:\/\/www.homehost.com.br\/blog\/#website","url":"https:\/\/www.homehost.com.br\/blog\/","name":"Homehost","description":"Hospedagem De Sites","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.homehost.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.homehost.com.br\/blog\/#\/schema\/person\/880e31fe4f09cfa53d60a46d9c2010aa","name":"Sch\u00eania T","description":"Cientista de dados, apaixonada por ferramentas de tecnologia e games. Graduanda em Estat\u00edstica pela UFPB. Seu hobby \u00e9 maratonar s\u00e9ries, curtir uma boa m\u00fasica trabalhando ou cozinhando, ir ao cinema e aprender coisas novas! Contato: schenia.blog@homehost.com.br"}]}},"modified_by":"ad_hmhst","jetpack_featured_media_url":"https:\/\/www.homehost.com.br\/blog\/wp-content\/uploads\/2023\/09\/pdf-python.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/11151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=11151"}],"version-history":[{"count":20,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/11151\/revisions"}],"predecessor-version":[{"id":11210,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/posts\/11151\/revisions\/11210"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/media\/11207"}],"wp:attachment":[{"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=11151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=11151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.homehost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=11151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}