bluenevus commited on
Commit
f13099a
·
verified ·
1 Parent(s): 72673b1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -8
app.py CHANGED
@@ -4,6 +4,7 @@ import requests
4
  import io
5
  import os
6
  import tempfile
 
7
 
8
  def compress_pdf(input_file, url, quality):
9
  if input_file is None and (url is None or url.strip() == ""):
@@ -26,14 +27,19 @@ def compress_pdf(input_file, url, quality):
26
  reader = PyPDF2.PdfReader(pdf_content)
27
  writer = PyPDF2.PdfWriter()
28
 
29
- for page in reader.pages:
30
- if quality == "High":
31
- page.compress_content_streams() # This is the lowest compression
32
- elif quality == "Medium":
33
- page.compress_content_streams(level=2)
34
- else: # Low quality
35
- page.compress_content_streams(level=3)
36
- writer.add_page(page)
 
 
 
 
 
37
 
38
  with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_file:
39
  writer.write(temp_file)
@@ -44,6 +50,9 @@ def compress_pdf(input_file, url, quality):
44
  return None, f"Error compressing PDF: {str(e)}"
45
 
46
  def process_and_compress(input_file, url, quality):
 
 
 
47
  output_file, message = compress_pdf(input_file, url, quality)
48
  if output_file:
49
  return output_file, message
 
4
  import io
5
  import os
6
  import tempfile
7
+ import sys
8
 
9
  def compress_pdf(input_file, url, quality):
10
  if input_file is None and (url is None or url.strip() == ""):
 
27
  reader = PyPDF2.PdfReader(pdf_content)
28
  writer = PyPDF2.PdfWriter()
29
 
30
+ for i, page in enumerate(reader.pages):
31
+ try:
32
+ if quality == "High":
33
+ page.compress_content_streams() # This is the lowest compression
34
+ elif quality == "Medium":
35
+ page.compress_content_streams(level=2)
36
+ else: # Low quality
37
+ page.compress_content_streams(level=3)
38
+ writer.add_page(page)
39
+ except RecursionError:
40
+ return None, f"Error: PDF structure too complex. Compression stopped at page {i+1}."
41
+ except Exception as e:
42
+ return None, f"Error compressing page {i+1}: {str(e)}"
43
 
44
  with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_file:
45
  writer.write(temp_file)
 
50
  return None, f"Error compressing PDF: {str(e)}"
51
 
52
  def process_and_compress(input_file, url, quality):
53
+ # Increase recursion limit
54
+ sys.setrecursionlimit(10000)
55
+
56
  output_file, message = compress_pdf(input_file, url, quality)
57
  if output_file:
58
  return output_file, message