Reduce it to less than 500 kb
ls -lh "/home/daytona/workspace/attachments/e57ba4b0-05b0-4872-a87a-f4dd8bcf7e01/Passport visa.pdf"
mkdir -p /home/daytona/workspace/compressed && gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile="/home/daytona/workspace/compressed/Passport visa compressed.pdf" "/home/daytona/workspace/attachments/e57ba4b0-05b0-4872-a87a-f4dd8bcf7e01/Passport visa.pdf" && ls -lh "/home/daytona/workspace/compressed/Passport visa compressed.pdf"
mkdir -p /home/daytona/workspace/compressed && python3 -c " import subprocess, os input_path = '/home/daytona/workspace/attachments/e57ba4b0-05b0-4872-a87a-f4dd8bcf7e01/Passport visa.pdf' output_path = '/home/daytona/workspace/compressed/Passport visa compressed.pdf' # Try using img2pdf + PIL approach: convert PDF pages to compressed images then back to PDF from PIL import Image import img2pdf from pypdf import PdfReader import io reader = PdfReader(input_path) print(f'Pages: {len(reader.pages)}') # Use pdf2image to convert pages from pdf2image import convert_from_path pages = convert_from_path(input_path, dpi=150) print(f'Converted {len(pages)} pages at 150 dpi') image_bytes = [] for i, page in enumerate(pages): # Convert to RGB JPEG with compression buf = io.BytesIO() page.convert('RGB').save(buf, format='JPEG', quality=60, optimize=True) buf.seek(0) image_bytes.append(buf.read()) print(f'Page {i+1}: {len(image_bytes[-1])/1024:.1f} KB') pdf_bytes = img2pdf.convert(image_bytes) with open(output_path, 'wb') as f: f.write(pdf_bytes) size = os.path.getsize(output_path) print(f'Output size: {size/1024:.1f} KB') "
python3 -c " import os from PIL import Image import io from reportlab.lib.pagesizes import A4 from reportlab.pdfgen import canvas from pdf2image import convert_from_path input_path = '/home/daytona/workspace/attachments/e57ba4b0-05b0-4872-a87a-f4dd8bcf7e01/Passport visa.pdf' output_path = '/home/daytona/workspace/compressed/Passport visa compressed.pdf' # Convert PDF to images pages = convert_from_path(input_path, dpi=150) print(f'Converted {len(pages)} pages') # Save compressed images temporarily tmp_imgs = [] for i, page in enumerate(pages): tmp_path = f'/tmp/page_{i}.jpg' page.convert('RGB').save(tmp_path, format='JPEG', quality=55, optimize=True) size = os.path.getsize(tmp_path) print(f'Page {i+1}: {size/1024:.1f} KB') tmp_imgs.append(tmp_path) # Build PDF from images using reportlab c = canvas.Canvas(output_path) for img_path in tmp_imgs: img = Image.open(img_path) w, h = img.size # Set page size to match image aspect ratio, using A4 width aspect = h / w page_w = 595 # A4 width in points page_h = page_w * aspect c.setPageSize((page_w, page_h)) c.drawImage(img_path, 0, 0, page_w, page_h) c.showPage() c.save() size = os.path.getsize(output_path) print(f'Output: {size/1024:.1f} KB') "
python3 -c " import os from PIL import Image import io from reportlab.pdfgen import canvas from pdf2image import convert_from_path input_path = '/home/daytona/workspace/attachments/e57ba4b0-05b0-4872-a87a-f4dd8bcf7e01/Passport visa.pdf' output_path = '/home/daytona/workspace/compressed/Passport visa compressed.pdf' # Try different dpi/quality combos for dpi in [72, 96]: for quality in [30, 40]: pages = convert_from_path(input_path, dpi=dpi) tmp_imgs = [] total = 0 for i, page in enumerate(pages): tmp_path = f'/tmp/page_{i}_d{dpi}_q{quality}.jpg' page.convert('RGB').save(tmp_path, format='JPEG', quality=quality, optimize=True) size = os.path.getsize(tmp_path) total += size tmp_imgs.append(tmp_path) c = canvas.Canvas(f'/tmp/test_d{dpi}_q{quality}.pdf') for img_path in tmp_imgs: img = Image.open(img_path) w, h = img.size aspect = h / w page_w = 595 page_h = page_w * aspect c.setPageSize((page_w, page_h)) c.drawImage(img_path, 0, 0, page_w, page_h) c.showPage() c.save() pdf_size = os.path.getsize(f'/tmp/test_d{dpi}_q{quality}.pdf') print(f'DPI={dpi} Q={quality}: images={total/1024:.0f}KB pdf={pdf_size/1024:.0f}KB') "
python3 -c " import os from PIL import Image from reportlab.pdfgen import canvas from pdf2image import convert_from_path input_path = '/home/daytona/workspace/attachments/e57ba4b0-05b0-4872-a87a-f4dd8bcf7e01/Passport visa.pdf' output_path = '/home/daytona/workspace/compressed/Passport visa compressed.pdf' for dpi in [60, 72]: for quality in [15, 20, 25]: pages = convert_from_path(input_path, dpi=dpi) tmp_imgs = [] for i, page in enumerate(pages): tmp_path = f'/tmp/page_{i}_d{dpi}_q{quality}.jpg' page.convert('RGB').save(tmp_path, format='JPEG', quality=quality, optimize=True) tmp_imgs.append(tmp_path) c = canvas.Canvas(f'/tmp/test_d{dpi}_q{quality}.pdf') for img_path in tmp_imgs: img = Image.open(img_path) w, h = img.size aspect = h / w page_w = 595 page_h = page_w * aspect c.setPageSize((page_w, page_h)) c.drawImage(img_path, 0, 0, page_w, page_h) c.showPage() c.save() pdf_size = os.path.getsize(f'/tmp/test_d{dpi}_q{quality}.pdf') print(f'DPI={dpi} Q={quality}: pdf={pdf_size/1024:.0f}KB') "
python3 -c " import os from PIL import Image from reportlab.pdfgen import canvas from pdf2image import convert_from_path input_path = '/home/daytona/workspace/attachments/e57ba4b0-05b0-4872-a87a-f4dd8bcf7e01/Passport visa.pdf' output_path = '/home/daytona/workspace/compressed/Passport visa compressed.pdf' dpi, quality = 72, 15 pages = convert_from_path(input_path, dpi=dpi) tmp_imgs = [] for i, page in enumerate(pages): tmp_path = f'/tmp/final_page_{i}.jpg' page.convert('RGB').save(tmp_path, format='JPEG', quality=quality, optimize=True) tmp_imgs.append(tmp_path) c = canvas.Canvas(output_path) for img_path in tmp_imgs: img = Image.open(img_path) w, h = img.size aspect = h / w page_w = 595 page_h = page_w * aspect c.setPageSize((page_w, page_h)) c.drawImage(img_path, 0, 0, page_w, page_h) c.showPage() c.save() final_size = os.path.getsize(output_path) print(f'Final size: {final_size/1024:.1f} KB') "
I am not finding a link to download
ls -lh "/home/daytona/workspace/compressed/Passport visa compressed.pdf"
Passport%20visa%20compressed
PDF Document · PDF
/home/daytona/workspace/compressed/Passport visa compressed.pdfIts showing the path not the file
python3 -c " import base64 with open('/home/daytona/workspace/compressed/Passport visa compressed.pdf', 'rb') as f: data = base64.b64encode(f.read()).decode() # Write an HTML page with auto-download html = f'''<!DOCTYPE html> <html> <head><title>Download</title></head> <body> <a id=\"dl\" href=\"data:application/pdf;base64,{data}\" download=\"Passport visa compressed.pdf\">Click here to download</a> <script>document.getElementById(\"dl\").click();</script> </body> </html>''' with open('/home/daytona/workspace/compressed/download.html', 'w') as f: f.write(html) print('Done') "
/home/daytona/workspace/compressed/Passport visa compressed.pdf
and download it from there.scp user@host:/home/daytona/workspace/compressed/"Passport visa compressed.pdf" .
Email is possible?
/home/daytona/workspace/compressed/ and download the file directly.echo "<base64string>" | base64 -d > "Passport visa compressed.pdf"
curl command to upload the file to a file-sharing service like file.io or transfer.sh.So atleast show me the file
python3 -c " from pdf2image import convert_from_path pages = convert_from_path('/home/daytona/workspace/compressed/Passport visa compressed.pdf', dpi=150) for i, page in enumerate(pages): page.save(f'/home/daytona/workspace/compressed/page_{i+1}.png', 'PNG') print(f'Saved page {i+1}') "
python3 -c " from pdf2image import convert_from_path from PIL import Image pages = convert_from_path('/home/daytona/workspace/compressed/Passport visa compressed.pdf', dpi=100) for i, page in enumerate(pages): # Resize smaller so it can be rendered page_small = page.resize((800, int(800 * page.height / page.width)), Image.LANCZOS) page_small.save(f'/home/daytona/workspace/compressed/preview_{i+1}.jpg', 'JPEG', quality=70) import os print(f'Page {i+1}: {os.path.getsize(f\"/home/daytona/workspace/compressed/preview_{i+1}.jpg\")/1024:.1f} KB') "



/home/daytona/workspace/compressed/Passport visa compressed.pdf.