Jump to content
klonder

Assinar pdf com Certificado Digital em Python

Recommended Posts

Olá a todos!

Estou há 3 dias pesquisando sobre como assinar digitalmente um arquivo pdf com Python, porém nenhuma proposta funcionou no Python 3.8.

 

O meu problema consiste no seguinte:

Crio contratos no word e salvo no formato PDF em uma pasta.

O que eu preciso é criar um aplicativo em Python que abra um arquivo pdf já criado e assine-o digitalmente através de um Certificado Digital pfx. Essa assinatura deveria ser inserida no final de cada documento. Já tentei várias ferramentas, porém nenhuma funcionou no Python 3.8. Alguém tem conhecimento sobre o assunto, utiliza, ou saberia dar alguma dica? Obrigado!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By fernandohenrique.dev
      Olá, pessoal, minha dúvida é a seguinte: gostaria de saber se existe alguma biblioteca php, preferencialmente grátis, onde se possa realizar a assinatura digital de um documento. Inicialmente, pesquisei sobre assinaturas digitais na documentação do php e consegui usar a função openssl_sign para realizar uma assinatura, porém, essa função gera uma assinatura em arquivo separado do documento, não tenho muito conhecimento nessa área de assinaturas digitais, mas pensei que o ideal seria meio que embutir a assinatura no documento, e quando o usuário baixasse o documento assinado, conseguisse ver que ele foi assinado por x pessoas, com seus respectivos nomes, mas não encontrei nada do tipo ainda. 
      Agradeço desde já qualquer ajuda.
    • By Fernando Rafael
      Olá a todos, atualmente estou quebrando a cabeça com 3 campos da geração do XML de NFCE/NFE, são eles:   <SignatureValue> ,  <DigestValue>   e  <X509Certificate>, como  faço para gerar esses 3 campos?
       
      Procurei na internet, mas não achei nada que me ajude, gostaria de fazer 100% com php e de preferência  manualmente (sem a utilização de classes prontas na qual é difícil de entender o código).
       
      Já tenho o certificado em PFX, e já gerei um certificado do tipo PEM.
       
      OBS 1: não precisam explicar ou mandar códigos de como inserir o conteúdo gerado nas tags <SignatureValue>  e  <X509Certificate>.
       
      OBS 2: O campo <DigestValue>  notei em alguns fóruns que é um retorno da Sefaz, é correto isso?
       
      ,
    • By dnielrodrigues
      Bom dia,
       
      Resumo:
      implementar assinatura digital na camada de transporte para consumir um web service externo.
      Adiante segue o script e a mensagem de erro.
       
      Detalhes:
      Não, não se trata de Nfe.... brinks
      E infelizmente não consegui pesquisar tópicos antigos porque a páginação do fórum está com problemas (na página de pesquisa ele não passa da primeira =D )....
      Bom, o meu caso é o seguinte:
      Aqui na empresa temos um sistema financeiro e de controle jurídico que roda em um cartório já a bastante tempo. E um dos módulos consumia o web service do tribunal de justiça local para algumas atividades. Em apenas uma dessas atividades será necessário implementar a assinatura digital para autenticação junto a este web service.
       
      Script:
       
       

      /* * Envia xml ao tjce: * * $args = array( * 'xml' => 'conteudo do xml', * 'service' => 'nome do servico na URL', * 'action' => 'metodo para chamar no webservice' * ); * */ public function send($args){ //dados $xml = $args['xml']; $service = $args['service']; $action = $args['action']; $wsdl = 'https://selodigital.tjce.jus.br/wsselodigital-homologacao/' . $service . '?wsdl'; // //testa instalacao do soap no servidor if (!class_exists('SoapClient')){ die ("Falha na instalação do soap no servidor."); } $wsdl = $wsdl; $localCert = "/caminho/do/certificado.pem"; $soapClient = new SoapClient($wsdl, array('localCert' => $local_cert)); $theResponse = $soapClient->metodoTeste(); echo $theResponse; }
       
      Erro:
       
       

      Fatal error: Uncaught SoapFault exception: [soap:Server] Fault occurred while processing. in /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php:40 Stack trace: #0 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php(40): SoapClient->__call('historicoSolici...', Array) #1 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php(40): SoapClient->historicoSolicitacaoSelos() #2 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SealController.php(163): SoapController->send(Array) #3 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/MainController.php(23): SealController->test() #4 /Users/danielrodrigues/Sites/open-system/openselos/system/controller/FrontController.php(37): MainController->run('Seal', 'test') #5 /Users/danielrodrigues/Sites/open-system/openselos/system/index.php(9): FrontController->run() #6 {main} thrown in /Users/danielrodrigues/Sites/open-system/openselos/system/controller/SoapController.php on line 40
       
       
      Complementando:
       
      Talvez o problema seja a forma que estou gerando o .pem. Nunca trabalhei com assinatura digital e realmente estou bastante perdido nesse assunto.
       
      Gerei esta chave .pem a partir do arquivo .pfx seguindo estes passos:
      http://www.rafaeltheodoro.com.br/nfe/conversao-de-certificado-ca-tipo-a1-de-pfx-para-pem/
       
      Atenciosamente,
       
       
      Ninguém?? =/
       
       
      Cri cri cri...
       
      Nossa, é tão complexo assim?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.