recherche

Maison  >  Questions et réponses  >  le corps du texte

Convertir des fichiers HTML en PDF à l'aide de WeasyPrint

J'ai de nombreux fichiers HTML et je souhaite les enregistrer sous forme de fichiers PDF locaux

J'ai donc essayé d'utiliser weasyprint pour convertir, mais je n'ai pas réussi

Quelqu'un peut-il m'aider à écrire le code ?

def pdf_generate():
    try:

        pdf_file = HTML(string='56129.html').write_pdf()
        with open("my_pdf_file.pdf", 'wb') as f:
            f.write(pdf_file)

    except Exception as e:
        print(str(e))
        return None

J'ai le fichier HTML localement et je souhaite également enregistrer le fichier PDF localement

J'ai mis en œuvre la réponse

def pdf_generate():
    try:
        #将'56129.html'替换为你的HTML文件的路径
        html_file_path = 'farm_management/scripts/56129.html'

        html = HTML(filename=html_file_path)

        pdf_file_path = 'my_pdf_file.pdf'

        pdf_file = html.write_pdf(pdf_file_path)
        with open("my_pdf_file.pdf", 'wb') as f:
            f.write(pdf_file)

        print(f'PDF文件已写入至:{pdf_file_path}')

    except Exception as e:
        print(str(e))

Et l'erreur suivante s'est produite

需要一个类似字节的对象,而不是'NoneType'

P粉729198207P粉729198207442 Il y a quelques jours577

répondre à tous(1)je répondrai

  • P粉384679266

    P粉3846792662023-09-12 13:53:44

    Si votre fichier HTML est une chaîne, vous devez utiliser la méthode HTML(string=html_string).write_pdf().

    Cependant, s'il s'agit d'un fichier dans votre répertoire local, vous devez utiliser la méthode HTML(filename=html_file_path).write_pdf().

    Le code est le suivant :

    from weasyprint import HTML
    
    def pdf_generate():
        try:
            # 将'56129.html'替换为您的HTML文件的路径
            html_file_path = '56129.html'
    
            html = HTML(filename=html_file_path)
    
            pdf_file_path = 'my_pdf_file.pdf'
    
            html.write_pdf(pdf_file_path)
    
            print(f'PDF文件已写入:{pdf_file_path}')
    
        except Exception as e:
            print(str(e))
    
    pdf_generate()

    répondre
    0
  • Annulerrépondre