靛尊 发表于 2025-11-28 11:25:02

【首选】PDF转视频教程:20秒一键将PDF转换为视频软件

一、背景介绍

大家好,我是王哪跑,现在很多做小学初中高中学习资料相关的教师或出售虚拟资料的网赚达人,都会将PDF电子档转换为视频,并发布到对应的短视频平台进行引流变现,但是使用传统的视频剪辑软件,花费的时间可能会比较长。
基于此,我用python开发了这个一键将PDF转视频的软件,只需30秒完成PDF到视频的一键转换。
(悄悄地说个秘密:更多实用工具也在同步开发中,关注我不迷路!)
https://cdn.nlark.com/yuque/0/2025/png/27571985/1762744028781-756e5d4f-b520-45c8-bed0-e70d8b77ec12.png
二、软件使用

一句话介绍:软件可一键将PDF文档添加背景音乐、转成视频、添加转场、添加装饰图片(增强原创度),可在视频末尾附带引流文字。
适用人群:做学科资料、教师资料、使用电子版文档完成引流转化的人群。
软件功能如下:
1)支持指定PDF页面范围、每个PDF页面在视频中的持续时间
2)视频设置:支持自定义视频宽度、高度、帧率
3)音频设置:支持添加背景音乐
4)转场设置:支持多种转场效果,并可自定义转场时间
5)装饰图库设置:通过添加背景装饰图,可增强视频的原创度,提高视频的流量
6)文字设置:可在视频结尾处定义引流文字,高效完成用户转化。
1、文件选择

https://cdn.nlark.com/yuque/0/2025/png/27571985/1762742993055-2ebc259b-ec9f-4846-8614-06dd26e3e5ec.png
PDF文件:选择你需要转换的PDF文件
视频输出目录:PDF转成的视频最终文件放到哪个位置
2、视频及音频设置

https://cdn.nlark.com/yuque/0/2025/png/27571985/1762743048243-1bc10360-2e9a-4d25-bd35-34fe4131e268.png
平台选择:可选竖屏、横屏,选择后会自动填入宽度和高度
宽度、高度:可根据PDF页面的宽高比例自由设置
帧率:可选30、60,帧率越搞视频越流畅,一般推荐30就够用了
指定PDF页面:你想将PDF哪些页面转换成视频
PDF页面持续时间:每个页面在视频中持续的时间是多少
音频文件:添加视频的背景音乐,如背景音乐的时间比生成的视频时长短,会自动循环
3、转场设置

https://cdn.nlark.com/yuque/0/2025/png/27571985/1762743286395-416013f5-32c2-477e-aef1-429421a92ce5.png
启用转场:可选择是否启用转场效果,勾选后则启用
转场效果:目前支持淡入淡出、向左滑动、向右滑动(更多效果正在陆续增加中...)
转场时长:转场的过渡时间,推荐0.5-1秒左右
4、装饰图片设置

https://cdn.nlark.com/yuque/0/2025/png/27571985/1762743582576-15608f85-3673-4a09-a915-b2d1cb0b7aec.png
装饰图片库会随软件一起赠送,可以增加视频的原创度,让视频获得更多的流量扶持。
装饰图片目录:选择我给的图片库路径,也可以自己扩充自己的图库
图片数量:从装饰图片库里选择多少张添加到PDF页面的背景中
缩放比例:推荐0.2-0.3
透明度:装饰图片的透明度,推荐50左右会呈现出一个半透明的效果
5、文字设置

https://cdn.nlark.com/yuque/0/2025/png/27571985/1762743800504-ff89bab7-53bc-4943-8715-47654ed86602.png
如上图所示:设置好的文字内容(有电子版,可打印),会出现在视频最后的3秒时间,可自定义文字大小、文字颜色、文字描边颜色。 
四、技术说明

软件全部采用python语言开发,主要分工如下:
PySide6:GUI软件界面
requests:接口请求
json:解析响应数据
PIL:图片处理
packaging:版本管理
logging:日志记录 五、核心代码

1 class PDF2VideoThread(QThread):
2   success_signal = Signal(str)
3   log_signal = Signal(str)
4   progress_signal = Signal(int)
5
6   def __init__(self, pdf_path, video_output_path, start_page, end_page,
7                  video_width, video_height, video_fps, image_duration,
8                  enable_audio, audio_is_loop, audio_path,
9                  enable_decor, decor_path, decor_num, decor_rate, decor_transparency,
10                  enable_transition, image_transition_time, image_transition_name,
11                  enable_word, word_size, word_duration, word_color, word_side_color, word_content,
12                  *args, **kwargs):
13         super().__init__(*args, **kwargs)
14         self.pdf_path = pdf_path
15         self.video_output_path = video_output_path
16         self.start_page = int(start_page)
17         self.end_page = int(end_page)
18         self.video_width = int(video_width)
19         self.video_height = int(video_height)
20         self.image_duration = float(image_duration)
21         self.video_fps = int(video_fps)
22         self.enable_audio = enable_audio
23         self.audio_is_loop = audio_is_loop
24         self.audio_path = audio_path
25         self.enable_decor = enable_decor
26         self.decor_path = decor_path
27         self.decor_num = int(decor_num)
28         self.decor_rate = float(decor_rate)
29         self.decor_transparency = int(decor_transparency)
30         self.enable_transition = enable_transition
31         self.image_transition_time = float(image_transition_time)
32         self.image_transition_name = image_transition_name
33         self.enable_word = enable_word
34         self.word_size = word_size
35         self.word_duration = word_duration
36         self.word_color = word_color
37         self.word_side_color = word_side_color
38         self.word_content = word_content
39
40   def run(self):
41         """
42         各步骤占比权重
43             pdf转图片:15
44             图片加装饰:15
45             图片转视频:50
46             视频加文字:20
47         @return:
48         """
49         # 获得pdf文件名
50         pdf_name = os.path.splitext(os.path.basename(self.pdf_path))
51
52         pdf_to_images(self.log_signal, self.pdf_path, temp_image_path,
53                     first_page=self.start_page, last_page=self.end_page, dpi=200)
54         self.progress_signal.emit(15)
55
56         if self.enable_decor:
57             image_paths = get_image_files(temp_image_path)
58             for image_path in image_paths:
59               self.log_signal.emit(f"装饰: {image_path}")
60               add_decor_from_library(image_path=image_path,
61                                        decor_folder=self.decor_path,
62                                        num_decor=self.decor_num,
63                                        decor_rate=self.decor_rate,
64                                        decor_transparency=self.decor_transparency,
65                                        output_path=image_path)
66         self.progress_signal.emit(15 + 15)
67
68         # --------- 图片加音频、转视频 ---------
69         self.log_signal.emit(f"---------开始图片转视频---------")
70         self.log_signal.emit(f"正在进行图片转视频(用时较长 10-40秒左右),请稍后...")
71         output_path = os.path.join(self.video_output_path, f"{pdf_name}.mp4")
72         video_duration = images_to_video(
73             self.log_signal,
74             image_folder=temp_image_path,# 图片目录
75             output_path=output_path,# 输出视频路径
76             width=self.video_width,# 宽
77             height=self.video_height,# 高
78             fps=self.video_fps,# 帧率
79             image_duration=self.image_duration,# 每张图片持续时间
80             transition_duration=self.image_transition_time,# 转场1秒
81             transition_type=self.image_transition_name,# 淡入淡出效果   fade、wipeleft、slideleft
82             audio_path=self.audio_path# 可选背景音乐
83         )
84         self.progress_signal.emit(15 + 15 + 50)
85
86         if self.enable_word:
87             self.log_signal.emit(f"✅ 视频已生成:{output_path}")
88             # --------- 视频加文字 ---------
89             self.log_signal.emit(f"---------开始视频加文字---------")
90             self.log_signal.emit(f"正在进行视频加文字,请稍后...")
91             output_path2 = os.path.join(self.video_output_path, f"{pdf_name}_加文字.mp4")
92             add_text(
93               input_video=output_path,
94               output_video=output_path2,
95               video_duration=video_duration,# ✅ 已知视频总时长
96               text=self.word_content,
97               duration=float(self.word_duration),
98               fontsize=int(self.word_size),
99               fontcolor=self.word_color,
100               bordercolor=self.word_side_color,
101               borderw=5,
102               fontfile=rf"simhei.ttf",# 微软雅黑字体
103               y="h-300"
104             )
105             self.success_signal.emit(f"✅ 带文字的视频已生成:{output_path2}")
106         else:
107             self.success_signal.emit(f"✅ 视频已生成:{output_path}")
108
109         self.progress_signal.emit(15 + 15 + 50 + 20)六、软件获取

我是@王哪跑,持续分享python干货,各类副业技巧及软件!
附PDF转视频软件下载:(完整版软件下载)
 
 
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

茹静曼 发表于 2025-12-19 16:32:59

感谢分享,学习下。

卒挪 发表于 2025-12-27 10:25:28

新版吗?好像是停更了吧。

府扔影 发表于 2025-12-29 02:16:22

这个好,看起来很实用

劳暄美 发表于 2026-1-3 22:38:31

这个好,看起来很实用

缑娅瑛 发表于 2026-1-13 21:32:34

鼓励转贴优秀软件安全工具和文档!

济曝喊 发表于 2026-1-14 01:44:40

yyds。多谢分享

蚬蕞遂 发表于 2026-1-15 04:27:05

谢谢分享,辛苦了

涅牵 发表于 2026-1-17 13:41:03

鼓励转贴优秀软件安全工具和文档!

驼娑 发表于 2026-1-18 18:49:25

感谢,下载保存了

寿爹座 发表于 2026-1-20 03:17:25

这个有用。

甦忻愉 发表于 2026-1-22 21:34:50

感谢发布原创作品,程序园因你更精彩

茅香馨 发表于 2026-1-24 22:13:59

谢谢分享,辛苦了

阮蓄 发表于 2026-1-26 03:32:48

这个有用。

冷晓晴 发表于 2026-1-28 06:27:33

感谢分享

奄幂牛 发表于 2026-1-30 15:48:10

这个好,看起来很实用

兜蛇 发表于 2026-2-8 04:06:07

感谢,下载保存了

穆望 发表于 2026-2-9 08:26:20

不错,里面软件多更新就更好了

史穹逊 发表于 2026-2-9 13:48:43

新版吗?好像是停更了吧。

尹疋 发表于 2026-2-9 14:57:25

谢谢分享,试用一下
页: [1] 2
查看完整版本: 【首选】PDF转视频教程:20秒一键将PDF转换为视频软件