鱼C论坛

 找回密码
 立即注册
查看: 2067|回复: 6

[已解决]怎么批量把html(包含文本,图片,mp3)制作成pdf并且mp3仍可播放?

[复制链接]
发表于 2023-5-9 22:28:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
怎么批量把html(包含文本,图片,mp3)制作成pdf并且mp3仍可播放?
最佳答案
2023-5-10 08:05:07
将包含文本、图片和音频的 HTML 转换成可播放音频的 PDF 文件是一项具有挑战性的任务,因为 PDF 本身并不支持内嵌音频播放。但是,我们可以尝试使用一种折衷的方法来实现这个目标,以下是一个可能的解决方案:

1. 使用专业工具将 HTML 转换为 PDF。你可以使用像 wkhtmltopdf 或 WeasyPrint 这样的工具。首先,确保你已经安装了这些工具,然后使用以下命令将 HTML 转换为 PDF:

   对于 wkhtmltopdf:
   wkhtmltopdf input.html output.pdf
   

   对于 WeasyPrint:
   weasyprint input.html output.pdf
   

   如果你需要批量转换,可以使用批处理脚本或类似的方法来实现。

2. 将 MP3 音频链接替换为指向在线音频播放器的链接。由于 PDF 不支持内嵌音频播放,你需要将音频链接更改为指向在线音频播放器的链接,如:
   <a href="https://your-audio-player.com/play?audioURL=your_mp3_file.mp3">Play Audio</a>
   

   这样,当用户点击链接时,音频将在一个新的浏览器窗口中打开并播放。

3. 在转换 HTML 之前,确保已经完成了第 2 步中的修改。然后使用第 1 步中的方法批量将 HTML 转换为 PDF。

这个解决方案并不完美,因为它不能在 PDF 中直接播放音频,而是需要通过链接到在线播放器来实现。然而,在当前的技术限制下,这可能是最接近目标的方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-9 22:29:37 | 显示全部楼层
本帖最后由 歌者文明清理员 于 2023-5-9 22:30 编辑

您可以通过使用Python语言中的pdfkit和moviepy库实现将HTML转换为PDF,并在其中嵌入MP3音频文件,使得PDF文件可以播放音频。

具体步骤如下:

安装必要的库:使用pip安装pdfkit和moviepy库。
pip install pdfkit -i https://mirrors.aliyun.com/pypi/simple
pip install moviepy -i https://mirrors.aliyun.com/pypi/simple

编写Python代码:通过使用pdfkit库,可以将HTML文件轻松地转换为PDF文件。在此之后,可以使用moviepy库将MP3文件添加到PDF文件中。这样您就可以生成包含文本、图片和MP3的PDF文件了。

以下是示例代码,您需要将“input_file.html”替换为您要转换的HTML文件名,将“output_file.pdf”替换为您想要输出的PDF文件名,并将“music.mp3”替换为您要添加到PDF文件的MP3文件名。

python
import pdfkit
from moviepy.editor import *
 
# 将html文件转换为pdf文件
pdfkit.from_file('input_file.html', 'output_file.pdf')
 
# 将mp3文件添加到pdf文件中
video = VideoFileClip("output_file.pdf")
audio = AudioFileClip("music.mp3")
result = video.set_audio(audio)
result.write_videofile("output_file.mp4", audio_codec='aac', temp_audiofile='temp-audio.m4a', remove_temp=True)
播放PDF文件:使用WPS或其他PDF阅读器打开生成的PDF文件,您将能够播放包含MP3文件的PDF文件中的音频。
希望这个回答能够帮助您完成任务,如有其他问题,请随时询问!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-9 22:46:49 | 显示全部楼层
可以使用Python的第三方库“pdfkit”和“PyPDF2”来批量将HTML转换成PDF,同时也可以使用“pymupdf”将PDF添加音频文件。

下面是具体步骤:

1.安装必要的库:
pip install pdfkit
pip install PyPDF2
pip install PyMuPDF 

2.使用pdfkit将html转换成pdf,代码如下:
import pdfkit

options = {
    'page-size': 'A4',
}
pdfkit.from_file('myfile.html', 'output.pdf', options=options)
其中,'myfile.html'是html文件路径,'output.pdf'是生成的pdf文件路径

3. 批量处理文件:

每个HTML文件都按上述方式转换为PDF,并保存在输出文件夹中。假设我们有以下文件结构:
html_files/
    file1.html
    file2.html
    file3.html

我们将创建一个名为“output_pdfs”的目录,将所有转换后的PDF文件放在其中。可以通过迭代文件夹中的所有文件来实现批量处理。
import os
import pdfkit

input_folder = 'html_files'
output_folder = 'output_pdfs'

# Create output folder if it doesn't exist
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# Get list of all files in the input folder
all_files = os.listdir(input_folder)

# Iterate over each file in input folder
for file in all_files:
    # Check if file is an HTML file
    if file.endswith('.html'):
        # Set input and output paths
        input_path = os.path.join(input_folder, file)
        output_path = os.path.join(output_folder, file.replace('.html', '.pdf'))
        
        # Set PDF conversion options
        options = {
            'page-size': 'A4',
        }
        
        # Convert HTML to PDF using pdfkit
        pdfkit.from_file(input_path, output_path, options=options)

此时,我们将文件夹中的所有HTML文件转换为PDF并存储在“output_pdfs”目录中。

4. 在PDF中添加mp3音频。

接下来使用PyPDF2和pymupdf库将mp3音频添加到PDF中。需要注意的是,pymupdf库需要安装MuPDF软件并将其添加到系统PATH中。具体步骤如下:
import os
import PyPDF2
import fitz

input_folder = 'output_pdfs'
output_folder = 'final_pdfs'

# Create output folder if it doesn't exist
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# Get list of all files in the input folder
all_files = os.listdir(input_folder)

# Iterate over each file in input folder
for file in all_files:
    # Check if file is a PDF file
    if file.endswith('.pdf'):
        # Set input and output paths
        input_path = os.path.join(input_folder, file)
        output_path = os.path.join(output_folder, file)
        
        # Open input PDF using PyPDF2
        with open(input_path, 'rb') as pdf_file:
            pdf_reader = PyPDF2.PdfFileReader(pdf_file)
            pdf_writer = PyPDF2.PdfFileWriter()
            
            # Add audio to each page using pymupdf
            for page_num in range(pdf_reader.numPages):
                page = pdf_reader.getPage(page_num)
                audio_file = "audio.mp3"  # Replace with your audio file path
                
                # Open audio file and create audio stream object
                audio_stream = fitz.open(audio_file)
                
                # Get audio data from stream
                audio_data = audio_stream.get_page_data(0)
                
                # Embed audio data in PDF page as annotation
                rect = fitz.Rect(0, 0, page.mediaBox.width, 50)  # Replace rectangle dimensions as needed
                annot = page.new_annotation("FileAttachment", rect)
                annot.update()
                annot.file_attachment = {'file_name': 'audio.mp3', 'data': audio_data}
                
                # Add modified page to PDF writer
                pdf_writer.addPage(page)
            
            # Write new PDF with added audio using PyPDF2
            with open(output_path, 'wb') as output_file:
                pdf_writer.write(output_file)

上述代码将批量处理所有输出PDF文件,并向每个页面添加名为“audio.mp3”的音频文件作为注释。
有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-10 08:05:07 | 显示全部楼层    本楼为最佳答案   
将包含文本、图片和音频的 HTML 转换成可播放音频的 PDF 文件是一项具有挑战性的任务,因为 PDF 本身并不支持内嵌音频播放。但是,我们可以尝试使用一种折衷的方法来实现这个目标,以下是一个可能的解决方案:

1. 使用专业工具将 HTML 转换为 PDF。你可以使用像 wkhtmltopdf 或 WeasyPrint 这样的工具。首先,确保你已经安装了这些工具,然后使用以下命令将 HTML 转换为 PDF:

   对于 wkhtmltopdf:
   wkhtmltopdf input.html output.pdf
   

   对于 WeasyPrint:
   weasyprint input.html output.pdf
   

   如果你需要批量转换,可以使用批处理脚本或类似的方法来实现。

2. 将 MP3 音频链接替换为指向在线音频播放器的链接。由于 PDF 不支持内嵌音频播放,你需要将音频链接更改为指向在线音频播放器的链接,如:
   <a href="https://your-audio-player.com/play?audioURL=your_mp3_file.mp3">Play Audio</a>
   

   这样,当用户点击链接时,音频将在一个新的浏览器窗口中打开并播放。

3. 在转换 HTML 之前,确保已经完成了第 2 步中的修改。然后使用第 1 步中的方法批量将 HTML 转换为 PDF。

这个解决方案并不完美,因为它不能在 PDF 中直接播放音频,而是需要通过链接到在线播放器来实现。然而,在当前的技术限制下,这可能是最接近目标的方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-10 14:16:48 | 显示全部楼层
isdkz 发表于 2023-5-10 08:05
将包含文本、图片和音频的 HTML 转换成可播放音频的 PDF 文件是一项具有挑战性的任务,因为 PDF 本身并不支 ...


我记得 pdf 是可以内嵌 音频 的,用 acrobat reader 就可以点读。acrobat reader 是 pdf reader的高级版   
内嵌link,那就不能离线听了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-10 16:27:51 | 显示全部楼层
sfqxx 发表于 2023-5-9 22:46
可以使用Python的第三方库“pdfkit”和“PyPDF2”来批量将HTML转换成PDF,同时也可以使用“pymupdf”将PDF ...

你好, 最后一步给pdf加mp3的代码是 真的吗?  能不能把 requirement 文件发给我。我照你的版本装个环境试一下
版本不对,很多函数已经被弃用了。  比如  PdfFileReader 等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-11 07:42:12 | 显示全部楼层
sfqxx 发表于 2023-5-9 22:46
可以使用Python的第三方库“pdfkit”和“PyPDF2”来批量将HTML转换成PDF,同时也可以使用“pymupdf”将PDF ...

111.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 07:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表