找回密码
 立即注册
首页 业界区 安全 【首选】PDF转视频教程:20秒一键将PDF转换为视频软件 ...

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

靛尊 2025-11-28 11:25:02
一、背景介绍

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

二、软件使用

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


PDF文件:选择你需要转换的PDF文件
视频输出目录:PDF转成的视频最终文件放到哪个位置
2、视频及音频设置


平台选择:可选竖屏、横屏,选择后会自动填入宽度和高度
宽度、高度:可根据PDF页面的宽高比例自由设置
帧率:可选30、60,帧率越搞视频越流畅,一般推荐30就够用了
指定PDF页面:你想将PDF哪些页面转换成视频
PDF页面持续时间:每个页面在视频中持续的时间是多少
音频文件:添加视频的背景音乐,如背景音乐的时间比生成的视频时长短,会自动循环
3、转场设置


启用转场:可选择是否启用转场效果,勾选后则启用
转场效果:目前支持淡入淡出、向左滑动、向右滑动(更多效果正在陆续增加中...)
转场时长:转场的过渡时间,推荐0.5-1秒左右
4、装饰图片设置


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


如上图所示:设置好的文字内容(有电子版,可打印),会出现在视频最后的3秒时间,可自定义文字大小、文字颜色、文字描边颜色。 
四、技术说明

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

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

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

相关推荐

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