|
import sys |
|
from PyPDF2 import PdfReader, PdfWriter |
|
from reportlab.pdfgen import canvas |
|
from io import BytesIO |
|
|
|
def create_overlay_pdf(text, x, y, output_overlay_pdf, page_width, page_height, max_width): |
|
packet = BytesIO() |
|
can = canvas.Canvas(packet, pagesize=(page_width, page_height)) |
|
|
|
|
|
font_size = 44 |
|
can.setFont("Helvetica-Bold", font_size) |
|
can.setFillColorRGB(0, 0, 0) |
|
|
|
|
|
text_width = can.stringWidth(text, "Helvetica-Bold", font_size) |
|
|
|
|
|
if text_width > max_width: |
|
font_size = 18 |
|
can.setFont("Helvetica-Bold", font_size) |
|
text_width = can.stringWidth(text, "Helvetica-Bold", font_size) |
|
|
|
|
|
page_width = float(page_width) |
|
|
|
|
|
x_coordinate = (page_width - text_width) / 2 |
|
|
|
|
|
can.drawString(x_coordinate, y, text) |
|
can.save() |
|
|
|
packet.seek(0) |
|
with open(output_overlay_pdf, "wb") as overlay_file: |
|
overlay_file.write(packet.getvalue()) |
|
|
|
def merge_pdfs(input_pdf, overlay_pdf, output_pdf): |
|
reader = PdfReader(input_pdf) |
|
overlay = PdfReader(overlay_pdf) |
|
writer = PdfWriter() |
|
|
|
|
|
original_page = reader.pages[0] |
|
original_page.merge_page(overlay.pages[0]) |
|
|
|
writer.add_page(original_page) |
|
|
|
|
|
for page_num in range(1, len(reader.pages)): |
|
writer.add_page(reader.pages[page_num]) |
|
|
|
with open(output_pdf, "wb") as output_file: |
|
writer.write(output_file) |
|
|
|
if __name__ == "__main__": |
|
|
|
if len(sys.argv) > 1: |
|
company_name = sys.argv[1] |
|
else: |
|
company_name = "Default_Company" |
|
|
|
input_pdf_path = "data/reports/report_stats/1.pdf" |
|
overlay_pdf_path = "src/Report/overlay_test.pdf" |
|
output_pdf_path = "src/Report/1updated.pdf" |
|
|
|
|
|
reader = PdfReader(input_pdf_path) |
|
original_page = reader.pages[0] |
|
page_width = original_page.mediabox.width |
|
page_height = original_page.mediabox.height |
|
|
|
|
|
x_coordinate = 800 |
|
y_coordinate = 600 |
|
max_width = 500 |
|
|
|
|
|
create_overlay_pdf(company_name, x_coordinate, y_coordinate, overlay_pdf_path, page_width, page_height, max_width) |
|
|
|
|
|
merge_pdfs(input_pdf_path, overlay_pdf_path, output_pdf_path) |
|
|
|
print(f"Generated PDF saved as {output_pdf_path} with company name: {company_name}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|