app.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import os
  2. import sys
  3. import uuid
  4. from flask import Flask, request, jsonify
  5. from add_signature import find_signature_positions, add_signature_to_pdf
  6. from add_watermark import add_watermark_to_pdf
  7. from lib import Qiniu
  8. app = Flask(__name__)
  9. @app.route('/add_signature', methods=['POST'])
  10. def add_signature():
  11. try:
  12. # 获取请求参数
  13. data = request.get_json()
  14. pdf_url = data.get('pdf_url')
  15. if not pdf_url:
  16. return jsonify({"error": "缺少pdf_url参数"}), 400
  17. # 下载PDF文件
  18. local_pdf = Qiniu.download_file(pdf_url)
  19. # 查找签名位置(使用默认公章图片)
  20. signature_img = './static/报告专用章.png' # 确保项目目录下有这个文件
  21. positions = find_signature_positions(local_pdf)
  22. if not positions:
  23. os.remove(local_pdf)
  24. return jsonify({"error": "未找到签名位置"}), 400
  25. # 生成带公章的PDF
  26. signature_pdf = os.path.join("./temp", f"signature_{os.path.basename(local_pdf)}")
  27. add_signature_to_pdf(local_pdf, signature_pdf, signature_img, positions)
  28. # 上传到七牛云
  29. file_key = f"UpImage/{uuid.uuid4()}.pdf"
  30. new_pdf_url = Qiniu.upload_to_qiniu(signature_pdf, file_key)
  31. # 清理临时文件
  32. os.remove(local_pdf)
  33. os.remove(signature_pdf)
  34. return jsonify({
  35. "success": True,
  36. "signature_pdf_url": new_pdf_url
  37. })
  38. except Exception as e:
  39. return jsonify({
  40. "error": str(e),
  41. "success": False,
  42. }), 500
  43. @app.route('/add_watermark', methods=['POST'])
  44. def add_watermark():
  45. try:
  46. # 获取请求参数
  47. data = request.get_json()
  48. pdf_url = data.get('pdf_url')
  49. if not pdf_url:
  50. return jsonify({"error": "缺少pdf_url参数"}), 400
  51. # 下载PDF文件
  52. local_pdf = Qiniu.download_file(pdf_url)
  53. # 水印文件
  54. pdf_file_mark = './static/watermark.pdf' # 确保项目目录下有这个文件
  55. # 生成带公章的PDF
  56. watermark_pdf = os.path.join("./temp", f"watermark_{os.path.basename(local_pdf)}")
  57. add_watermark_to_pdf(local_pdf, pdf_file_mark, watermark_pdf)
  58. # 上传到七牛云
  59. file_key = f"UpImage/{uuid.uuid4()}.pdf"
  60. new_pdf_url = Qiniu.upload_to_qiniu(watermark_pdf, file_key)
  61. # 清理临时文件
  62. os.remove(local_pdf)
  63. os.remove(watermark_pdf)
  64. return jsonify({
  65. "success": True,
  66. "watermark_pdf_url": new_pdf_url
  67. })
  68. except Exception as e:
  69. return jsonify({
  70. "error": str(e),
  71. "success": False,
  72. }), 500
  73. if __name__ == '__main__':
  74. print("项目地址:", os.path.dirname(__file__))
  75. if len(sys.argv) != 2:
  76. print("请填写端口号")
  77. sys.exit()
  78. app.debug = True # 设置调试模式,生产模式的时候要关掉debug
  79. # app.config['JSON_AS_ASCII'] = False
  80. app.run(host='0.0.0.0', port=6500, debug=True)