Files
TMS/transportmanager/server/utils/cancel_order.py
2025-08-31 17:55:26 +03:00

62 lines
1.9 KiB
Python

import os
from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
GENERATED_FOLDER = os.path.abspath(
os.path.join(os.path.dirname(__file__), "..", "generated_pdfs")
)
def create_watermark_pdf(watermark_path, text="CANCELLED"):
c = canvas.Canvas(watermark_path, pagesize=A4)
c.setFont("Helvetica-Bold", 80)
c.setFillGray(0.6) # Light gray text
c.saveState()
c.translate(300, 400)
c.rotate(45)
c.drawCentredString(0, 0, text)
c.restoreState()
c.save()
def apply_watermark(input_pdf_path, output_pdf_path, watermark_pdf_path):
reader = PdfReader(input_pdf_path)
watermark = PdfReader(watermark_pdf_path).pages[0]
writer = PdfWriter()
for page in reader.pages:
page.merge_page(watermark)
writer.add_page(page)
with open(output_pdf_path, "wb") as f:
writer.write(f)
def cancel_order_pdf(order_filename):
# File paths
input_pdf_path = os.path.join(GENERATED_FOLDER, order_filename)
output_pdf_path = input_pdf_path
watermark_pdf_path = os.path.join(GENERATED_FOLDER, "temp_watermark.pdf")
print(watermark_pdf_path)
# Check if file exists
if not os.path.isfile(input_pdf_path):
raise FileNotFoundError(f"Original order PDF not found: {input_pdf_path}")
# Create watermark and apply it
create_watermark_pdf(watermark_pdf_path, text="CANCELLED")
apply_watermark(input_pdf_path, output_pdf_path, watermark_pdf_path)
# Optionally remove temp watermark
os.remove(watermark_pdf_path)
return output_pdf_path
# Example usage:
if __name__ == "__main__":
import sys
if len(sys.argv) < 2:
print("Usage: python cancel_order.py <order_filename>")
else:
try:
result_path = cancel_order_pdf(sys.argv[1])
print(f"Cancelled PDF created: {result_path}")
except Exception as e:
print(f"Error: {e}")