cari

Rumah  >  Soal Jawab  >  teks badan

Tukar fail HTML kepada PDF menggunakan WeasyPrint

Saya mempunyai banyak fail HTML dan saya mahu menyimpannya sebagai fail PDF tempatan

Jadi saya cuba menggunakan weasyprint untuk menukar, tetapi tidak berjaya

Bolehkah seseorang membantu saya menulis kod?

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

Saya mempunyai fail HTML secara tempatan dan mahu menyimpan fail PDF secara setempat juga

Saya telah melaksanakan jawapannya

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))

Dan ralat berikut berlaku

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

P粉729198207P粉729198207473 hari yang lalu631

membalas semua(1)saya akan balas

  • P粉384679266

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

    Jika fail HTML anda ialah rentetan, anda harus menggunakan kaedah HTML(string=html_string).write_pdf().

    Walau bagaimanapun, jika ia adalah fail dalam direktori tempatan anda, anda harus menggunakan kaedah HTML(filename=html_file_path).write_pdf().

    Kod adalah seperti berikut:

    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()

    balas
    0
  • Batalbalas