Is me jo sanskrit me lika he vo nai dik rha to visible kar ke pdf bna ke do
cd /home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/ && python3 -c " from pypdf import PdfReader reader = PdfReader('Excellent Textbook images mil gayi Ab poora easy e.pdf') print(f'Pages: {len(reader.pages)}') # Check first page text text = reader.pages[0].extract_text() print('First page text sample:') print(repr(text[:500])) "
cd /home/daytona/workspace/ && mkdir -p pdf_fix && python3 -c " import fitz # PyMuPDF import os pdf_path = '/home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/Excellent Textbook images mil gayi Ab poora easy e.pdf' doc = fitz.open(pdf_path) print(f'Pages: {len(doc)}') # Extract text using PyMuPDF (better unicode support) for i, page in enumerate(doc): text = page.get_text('text') print(f'--- Page {i+1} ---') print(text[:800]) print() "
pip install --user pymupdf -q && python3 -c "import fitz; print('fitz ok')"
python3 -c " import fitz import os pdf_path = '/home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/Excellent Textbook images mil gayi Ab poora easy e.pdf' doc = fitz.open(pdf_path) print(f'Pages: {len(doc)}') # Extract text using PyMuPDF for i, page in enumerate(doc): text = page.get_text('text') print(f'--- Page {i+1} ---') print(text[:1000]) print() "
python3 -c " import fitz import os pdf_path = '/home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/Excellent Textbook images mil gayi Ab poora easy e.pdf' out_dir = '/home/daytona/workspace/pdf_fix/pages' os.makedirs(out_dir, exist_ok=True) doc = fitz.open(pdf_path) print(f'Total pages: {len(doc)}') # Render each page as high-res image for i, page in enumerate(doc): mat = fitz.Matrix(2.5, 2.5) # 2.5x zoom = ~225 DPI pix = page.get_pixmap(matrix=mat, alpha=False) img_path = f'{out_dir}/page_{i+1:02d}.png' pix.save(img_path) print(f'Saved page {i+1}: {img_path} ({pix.width}x{pix.height})') print('All pages rendered!') "
python3 -c " import fitz import os pages_dir = '/home/daytona/workspace/pdf_fix/pages' out_pdf = '/home/daytona/workspace/pdf_fix/Lactation_Physiology_Visible.pdf' # Create new PDF from images doc = fitz.open() for i in range(1, 8): img_path = f'{pages_dir}/page_{i:02d}.png' img_doc = fitz.open(img_path) rect = img_doc[0].rect page = doc.new_page(width=rect.width, height=rect.height) page.insert_image(rect, filename=img_path) print(f'Added page {i}') doc.save(out_pdf, deflate=True) print(f'Saved: {out_pdf}') print(f'Size: {os.path.getsize(out_pdf) / 1024:.1f} KB') "
python3 -c " import fitz pdf_path = '/home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/Excellent Textbook images mil gayi Ab poora easy e.pdf' doc = fitz.open(pdf_path) # Get raw unicode text with blocks for i, page in enumerate(doc): blocks = page.get_text('rawdict', flags=fitz.TEXT_PRESERVE_WHITESPACE) for block in blocks['blocks']: if block['type'] == 0: # text block for line in block['lines']: for span in line['spans']: txt = span['text'].strip() if txt: font = span['font'] # Check if any unicode outside basic latin has_unicode = any(ord(c) > 127 for c in txt) if has_unicode: print(f'P{i+1} | Font:{font} | Text: {repr(txt)}') " 2>&1 | head -80
python3 -c " import fitz pdf_path = '/home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/Excellent Textbook images mil gayi Ab poora easy e.pdf' doc = fitz.open(pdf_path) # Get dict text for i, page in enumerate(doc): blocks = page.get_text('dict', flags=fitz.TEXT_PRESERVE_WHITESPACE) for block in blocks['blocks']: if block['type'] == 0: for line in block['lines']: for span in line['spans']: txt = span['text'].strip() if txt: font = span['font'] has_unicode = any(ord(c) > 127 for c in txt) if has_unicode: print(f'P{i+1} | Font:{font} | Text: {repr(txt)}') " 2>&1 | head -80
# Check what fonts are embedded in the PDF python3 -c " import fitz pdf_path = '/home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/Excellent Textbook images mil gayi Ab poora easy e.pdf' doc = fitz.open(pdf_path) fonts = doc.get_page_fonts(0) print('Page 1 fonts:') for f in fonts: print(f) print() # Check page 6 Sanskrit content fonts6 = doc.get_page_fonts(5) print('Page 6 fonts:') for f in fonts6: print(f) "
# First check if Noto Devanagari font is available ls /usr/share/fonts/ 2>/dev/null | head -20 fc-list | grep -i "devanagari\|noto\|sanskrit\|hindi" 2>/dev/null | head -20
fc-list 2>/dev/null | grep -i "noto\|devanagari\|hindi" | head -20 # Also check if any devanagari fonts exist find /usr/share/fonts -name "*.ttf" 2>/dev/null | head -20
# Download Noto Serif Devanagari font mkdir -p /home/daytona/workspace/pdf_fix/fonts wget -q "https://github.com/googlefonts/noto-fonts/raw/main/hinted/ttf/NotoSerifDevanagari/NotoSerifDevanagari-Regular.ttf" \ -O /home/daytona/workspace/pdf_fix/fonts/NotoSerifDevanagari-Regular.ttf && echo "Downloaded OK" || echo "FAILED" ls -lh /home/daytona/workspace/pdf_fix/fonts/
python3 << 'EOF' import fitz import os # Strategy: render each page to high-res image using PyMuPDF renderer # but first install the Devanagari font so PyMuPDF can render it # Actually PyMuPDF uses its own internal rendering - we need to add the font to the system # Let's try a different approach: use the pages as images but render with higher DPI # and check what the PyMuPDF renderer outputs pdf_path = '/home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/Excellent Textbook images mil gayi Ab poora easy e.pdf' doc = fitz.open(pdf_path) # Try to add font resource font_path = '/home/daytona/workspace/pdf_fix/fonts/NotoSerifDevanagari-Regular.ttf' # Render page 6 (has Sanskrit) with the font available page = doc[5] # Get text dict to understand what's there blocks = page.get_text('dict') for block in blocks['blocks']: if block['type'] == 0: for line in block['lines']: for span in line['spans']: txt = span['text'] has_deva = any(0x0900 <= ord(c) <= 0x097F for c in txt) if has_deva or '🛡' in txt: print(f"Devanagari span: font={span['font']}, text={repr(txt[:80])}") print(f" bbox={span['bbox']}") EOF
python3 << 'EOF' import fitz import os import shutil pdf_path = '/home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/Excellent Textbook images mil gayi Ab poora easy e.pdf' font_path = '/home/daytona/workspace/pdf_fix/fonts/NotoSerifDevanagari-Regular.ttf' out_dir = '/home/daytona/workspace/pdf_fix/pages_fixed' os.makedirs(out_dir, exist_ok=True) doc = fitz.open(pdf_path) # The issue: PyMuPDF renders text using embedded fonts # Sanskrit chars are in Noticia-Text font but that font doesn't have Devanagari glyphs # Solution: use PyMuPDF's ability to substitute fonts during rendering # Add our Noto Devanagari as a font resource # Actually the best approach: use fitz.set_aa_level and add font substitution # Let's try rendering with font substitution # PyMuPDF supports font substitution via set_font_sub or similar # Actually let me check: we can use 'fontsubstitution' in rendering # Try rendering with the NotoDevanagari font added to system font path # First copy font to a location PyMuPDF can find import shutil shutil.copy(font_path, '/tmp/NotoSerifDevanagari-Regular.ttf') # Set up font substitution - PyMuPDF uses its own font db # We can try to add font paths fitz.set_font_names(os.path.dirname(font_path)) # Render each page for i, page in enumerate(doc): mat = fitz.Matrix(3.0, 3.0) # 3x zoom = ~270 DPI - very high quality pix = page.get_pixmap(matrix=mat, alpha=False) img_path = f'{out_dir}/page_{i+1:02d}.png' pix.save(img_path) print(f'Rendered page {i+1}: {pix.width}x{pix.height}') print('Done rendering!') EOF
# Copy the Devanagari font to system font dir and rebuild font cache # Then render using reportlab or weasyprint with proper font support # Actually - let's use a clean approach with reportlab to build a new PDF # with proper Sanskrit text replacement python3 << 'PYEOF' import fitz import os pdf_path = '/home/daytona/workspace/attachments/b5f47e8d-df9d-4532-85cc-d75d51a7305e/Excellent Textbook images mil gayi Ab poora easy e.pdf' out_dir = '/home/daytona/workspace/pdf_fix/pages_hires' os.makedirs(out_dir, exist_ok=True) # Install the Devanagari font into PyMuPDF's internal font database # by placing it in a recognized location import shutil # PyMuPDF looks in these paths - try user font dir os.makedirs(os.path.expanduser('~/.fonts'), exist_ok=True) shutil.copy('/home/daytona/workspace/pdf_fix/fonts/NotoSerifDevanagari-Regular.ttf', os.path.expanduser('~/.fonts/NotoSerifDevanagari-Regular.ttf')) # Rebuild system font cache os.system('fc-cache -f ~/.fonts/ 2>/dev/null') doc = fitz.open(pdf_path) # Render at 3x zoom for high quality for i, page in enumerate(doc): mat = fitz.Matrix(3.0, 3.0) pix = page.get_pixmap(matrix=mat, alpha=False) img_path = f'{out_dir}/page_{i+1:02d}.png' pix.save(img_path) print(f'Rendered page {i+1}: {pix.width}x{pix.height} -> {img_path}') print('Rendering complete!') # Now create PDF from these images out_pdf = '/home/daytona/workspace/pdf_fix/Lactation_Physiology_Visible_v2.pdf' new_doc = fitz.open() for i in range(1, 8): img_path = f'{out_dir}/page_{i:02d}.png' img_doc = fitz.open(img_path) rect = img_doc[0].rect page = new_doc.new_page(width=595, height=842) # A4 page.insert_image(page.rect, filename=img_path) img_doc.close() new_doc.save(out_pdf, deflate=True) size_kb = os.path.getsize(out_pdf) / 1024 print(f'Saved PDF: {out_pdf} ({size_kb:.0f} KB)') PYEOF
Lactation Physiology Visible v2
PDF Document · PDF