Sanket17 commited on
Commit
b8a09be
Β·
verified Β·
1 Parent(s): 285f427

Update src/Report/Report.py

Browse files
Files changed (1) hide show
  1. src/Report/Report.py +73 -55
src/Report/Report.py CHANGED
@@ -2,89 +2,107 @@ import os
2
  import PyPDF2
3
  from reportlab.lib.pagesizes import letter
4
  from reportlab.pdfgen import canvas
5
- import shutil
 
 
6
 
7
- def ensure_directory_exists(directory):
8
- """Ensure the given directory exists."""
9
- os.makedirs(directory, exist_ok=True)
10
 
11
- def merge_pdfs(pdf_list, output_path, elongated_files=[]):
12
- """Merge multiple PDFs into a single PDF while handling missing files."""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  pdf_merger = PyPDF2.PdfMerger()
 
 
14
  pdf_list = [os.path.abspath(pdf) for pdf in pdf_list]
15
 
16
  for pdf in pdf_list:
17
  if not os.path.exists(pdf):
18
- print(f"⚠️ Skipping missing file: {pdf}")
19
  continue
20
 
21
  try:
22
- print(f"βœ… Adding: {pdf}")
 
 
23
  pdf_merger.append(pdf)
 
24
  except Exception as e:
25
  print(f"⚠️ Could not add {pdf}: {e}")
26
 
27
  try:
28
  pdf_merger.write(output_path)
29
- print(f"πŸ“„ Merged PDF saved: {output_path}")
30
  except Exception as e:
31
- print(f"❌ Error saving merged PDF: {e}")
32
  finally:
33
  pdf_merger.close()
34
 
35
- def convert_png_to_pdf(png_path, output_pdf):
36
- """Convert a PNG image into a PDF and save it in a cloud-friendly location."""
37
- from PIL import Image
38
-
39
- try:
40
- ensure_directory_exists(os.path.dirname(output_pdf))
41
-
42
- img = Image.open(png_path)
43
- img.convert('RGB').save(output_pdf, "PDF")
44
-
45
- print(f"πŸ“„ PDF saved: {output_pdf}")
46
- except Exception as e:
47
- print(f"❌ Error converting PNG to PDF: {e}")
48
-
49
  if __name__ == "__main__":
50
- # βœ… Define cloud-safe directories
51
- base_dir = "/home/user/app" # Hugging Face Spaces safe storage
52
- template_dir = os.path.join(base_dir, "data/reports/template_PDF")
53
- report_stats_dir = os.path.join(base_dir, "data/reports/report_stats")
54
- output_dir = os.path.join(base_dir, "src/Report")
55
-
56
- # βœ… Ensure directories exist
57
- ensure_directory_exists(template_dir)
58
- ensure_directory_exists(report_stats_dir)
59
- ensure_directory_exists(output_dir)
60
-
61
- # βœ… List of PDF files to merge
62
  pdf_files = [
63
- os.path.join(base_dir, "src/Report/1updated.pdf"),
64
- os.path.join(report_stats_dir, "2.pdf"),
65
- os.path.join(report_stats_dir, "3.pdf"),
66
- os.path.join(report_stats_dir, "objective.pdf"),
67
- os.path.join(template_dir, "brand marketing.pdf"),
68
- os.path.join(template_dir, "content marketing.pdf"),
69
- os.path.join(template_dir, "social media marketing.pdf"),
70
- os.path.join(report_stats_dir, "last.pdf")
71
  ]
72
 
73
- # βœ… Define elongated PDFs (for special processing)
74
  elongated_pdfs = [
75
- os.path.join(template_dir, "brand marketing.pdf"),
76
- os.path.join(template_dir, "content marketing.pdf"),
77
- os.path.join(template_dir, "social media marketing.pdf")
78
  ]
79
 
80
- # βœ… Strictly enforce output file name and location
81
- output_file = os.path.join(output_dir, "report.pdf")
 
 
82
 
83
- # βœ… Merge PDFs
84
  merge_pdfs(pdf_files, output_file, elongated_files=elongated_pdfs)
85
 
86
- # βœ… Make the report available for download
87
- visible_output = os.path.join(base_dir, "report.pdf")
88
- shutil.copy(output_file, visible_output)
89
 
90
- print(f"πŸ“‚ Download your report from: {visible_output}")
 
2
  import PyPDF2
3
  from reportlab.lib.pagesizes import letter
4
  from reportlab.pdfgen import canvas
5
+ from screeninfo import get_monitors
6
+ import sys
7
+ import codecs
8
 
9
+ sys.stdout = codecs.getwriter("utf-8")(sys.stdout.buffer)
 
 
10
 
11
+ def get_screen_size():
12
+ """Get the primary monitor screen size."""
13
+ try:
14
+ monitor = get_monitors()[0] # Get primary monitor
15
+ screen_width = monitor.width
16
+ screen_height = monitor.height
17
+ return screen_width, int(screen_height * 1.5) # Scale height
18
+ except Exception as e:
19
+ print(f"Error getting screen size: {e}")
20
+ return 1000, 1500 # Default size
21
+
22
+ def add_padding_to_pdf(input_pdf, output_pdf, padding):
23
+ """Add padding to a PDF file."""
24
+ try:
25
+ reader = PyPDF2.PdfReader(input_pdf)
26
+ writer = PyPDF2.PdfWriter()
27
+
28
+ for page in reader.pages:
29
+ original_width = page.mediabox.width
30
+ original_height = page.mediabox.height
31
+
32
+ # New dimensions with padding
33
+ new_width = original_width + 2 * padding
34
+ new_height = original_height + 2 * padding
35
+
36
+ # Create a new canvas
37
+ packet = canvas.Canvas(output_pdf, pagesize=(new_width, new_height))
38
+ packet.translate(padding, padding) # Center original content
39
+ packet.save()
40
+
41
+ writer.add_page(page)
42
+
43
+ with open(output_pdf, "wb") as out_file:
44
+ writer.write(out_file)
45
+
46
+ print(f"βœ… Padding added: {input_pdf} -> {output_pdf}")
47
+
48
+ except Exception as e:
49
+ print(f"⚠️ Error adding padding to {input_pdf}: {e}")
50
+
51
+ def merge_pdfs(pdf_list, output_path, elongated_files=[], normalize_size=True):
52
+ """Merge multiple PDFs into a single PDF."""
53
  pdf_merger = PyPDF2.PdfMerger()
54
+
55
+ # Resolve absolute paths
56
  pdf_list = [os.path.abspath(pdf) for pdf in pdf_list]
57
 
58
  for pdf in pdf_list:
59
  if not os.path.exists(pdf):
60
+ print(f"⚠️ File not found: {pdf}")
61
  continue
62
 
63
  try:
64
+ if pdf in elongated_files:
65
+ print(f"πŸ” Processing elongated file: {pdf}")
66
+ # Add additional elongation logic here if needed
67
  pdf_merger.append(pdf)
68
+ print(f"βœ… Added: {pdf}")
69
  except Exception as e:
70
  print(f"⚠️ Could not add {pdf}: {e}")
71
 
72
  try:
73
  pdf_merger.write(output_path)
74
+ print(f"πŸ“„ Merged PDF saved as: {output_path}")
75
  except Exception as e:
76
+ print(f"Error saving merged PDF: {e}")
77
  finally:
78
  pdf_merger.close()
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  if __name__ == "__main__":
81
+ # List of PDF files to merge
 
 
 
 
 
 
 
 
 
 
 
82
  pdf_files = [
83
+ "src/Report/1updated.pdf",
84
+ "data/reports/report_stats/2.pdf",
85
+ "data/reports/report_stats/3.pdf",
86
+ "data/reports/report_stats/objective.pdf",
87
+ "data/reports/template_PDF/brand marketing.pdf",
88
+ "data/reports/template_PDF/content marketing.pdf",
89
+ "data/reports/template_PDF/social media marketing.pdf",
90
+ "data/reports/report_stats/last.pdf"
91
  ]
92
 
 
93
  elongated_pdfs = [
94
+ "data/reports/template_PDF/brand marketing.pdf",
95
+ "data/reports/template_PDF/content marketing.pdf",
96
+ "data/reports/template_PDF/social media marketing.pdf"
97
  ]
98
 
99
+ # Define output directory and strict file name
100
+ output_dir = "src/Report"
101
+ os.makedirs(output_dir, exist_ok=True) # Create the directory if it doesn't exist
102
+ output_file = os.path.join(output_dir, "report.pdf") # Enforce strict file name as report.pdf
103
 
104
+ # Merge the PDFs and save the result in the specified directory
105
  merge_pdfs(pdf_files, output_file, elongated_files=elongated_pdfs)
106
 
 
 
 
107
 
108
+