当前位置:   article > 正文

Python脚本:用py处理PDF的五大功能_py脚本怎么写pdf输出

py脚本怎么写pdf输出

一、代码

【第三方库】3个

【Py版本】3.9

【使用前提】关闭所有的word文档

  1. import os
  2. from datetime import datetime
  3. from docx2pdf import convert
  4. from pdf2docx import parse
  5. from PyPDF2 import PdfMerger
  6. from PyPDF2 import PdfReader,PdfWriter
  7. #将文件夹中的所有Word文档批量转换为PDF
  8. def wordtopdf(url):
  9. if not os.path.exists(url):
  10. return False
  11. result=convert(url)#若满足条件"result==None"则表明转换成功
  12. return result==None
  13. #将文件夹中的所有PDF批量转换为Word文档
  14. def pdftoword(url):
  15. if not os.path.exists(url):
  16. return False
  17. all_files_successful = True # 假设所有文件都成功转换
  18. for root, dirs, files in os.walk(url):
  19. for file in files:
  20. if file.endswith(".pdf"):
  21. pdf_file_path = os.path.join(root, file)
  22. result = parse(pdf_file_path)
  23. if result is not None: # 转换失败
  24. all_files_successful = False
  25. break # 如果有一个文件转换失败,就跳出内层循环
  26. return all_files_successful
  27. #合并指定路径的pdf文档(顺序:01 02 03开头文件名依次排序)
  28. def mergepdf(url):
  29. if not os.path.exists(url):
  30. return False
  31. merger = PdfMerger()
  32. output_path=url+f"\\合并pdf_{datetime.now().strftime('%Y%m%d%H%M%S')}.pdf"#输出路径
  33. # 遍历文件夹下的所有PDF文件并合并
  34. for root, dirs, files in os.walk(url):
  35. for file in files:
  36. if file.endswith(".pdf"):
  37. pdf_file_path = os.path.join(root, file)
  38. merger.append(pdf_file_path)
  39. # 将合并后的PDF保存到指定输出路径
  40. merger.write(output_path)
  41. merger.close()
  42. return True
  43. #提取pdf的图像
  44. def pdfimages(pdfurl):
  45. if not os.path.exists(pdfurl):
  46. return False
  47. reader = PdfReader(pdfurl)
  48. all = len(reader.pages) #返回pdf有多少页
  49. count = 0
  50. for i in range(0,all):
  51. page = reader.pages[i]
  52. for image_file_object in page.images:
  53. with open(f"{os.path.dirname(pdfurl)}/图{count+1}_{datetime.now().strftime('%Y%m%d%H%M%S')}.png", "wb") as fp:
  54. fp.write(image_file_object.data)
  55. count += 1
  56. return True
  57. # 在PDF文件中加水印函数
  58. def pdfcreatewater(pdfurl, pdf_watermark):
  59. if not os.path.exists(pdfurl) or not os.path.exists(pdf_watermark):
  60. return False
  61. # 把水印的文件读入
  62. watermark = PdfReader(pdf_watermark)
  63. # 取出水印文件的第1页
  64. waterpage = watermark.pages[0]
  65. # 读入要加入水印的PDF文件
  66. vreader = PdfReader(pdfurl)
  67. # 取得要加入水印的文件的页数
  68. n = len(vreader.pages)
  69. # print(n)
  70. # 生成一个PDF文件写对象
  71. vwriter = PdfWriter()
  72. # 通过循环给第一页加上水印
  73. for i in range(n):
  74. # 取得PDF文件的一页
  75. onepage = vreader.pages[i]
  76. # 通过mergePage将水印加到该页面
  77. onepage.merge_page(waterpage)
  78. # 在写对象中加入一页
  79. vwriter.add_page(onepage)
  80. # 打开最终形成的包含水印的文件
  81. with open(f"{os.path.dirname(pdfurl)}/合成水印_{datetime.now().strftime('%Y%m%d%H%M%S')}.pdf", 'wb') as f:
  82. # 通过写对象写到文件中
  83. vwriter.write(f)
  84. return True

二、附录:如何为PDF添加水印

第一步,打开word,按以下步骤添加水印

 二、若水印不够多,则双击页眉,可以拖拽水印

【注意】水印背景是透明的不准出现白色,若有覆盖情况请检查水印文件

【效果】 

 三、附录:如何设置合并顺序

按顺序命名即可,例如"01xxx","02xxx","03xxxx"…………

四、打包为GUI程序(Pyinstaller PyQt5)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/761772
推荐阅读
相关标签
  

闽ICP备14008679号