69 lines
2.7 KiB
Python
69 lines
2.7 KiB
Python
"""Locate the real failing PDF containing 'Professional Experiences' / Arial-BoldMT."""
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, r"C:\Users\Maskan\pdfeng-build\win-local\lib")
|
|
sys.path.insert(0, r"c:\Users\Maskan\Desktop\pdf_editor\pdf\gateway")
|
|
import pdfengine # type: ignore
|
|
|
|
CANDS = [
|
|
Path(r"C:\Users\Maskan\Downloads\Saqib_Ali_Mir_Resume.pdf"),
|
|
Path(r"C:\Users\Maskan\Downloads\Saqib_Ali_Mir_Resume (1)vq.pdf"),
|
|
Path(r"C:\Users\Maskan\Downloads\Saqib_Ali_Mir_Resume (1)vq (1).pdf"),
|
|
Path(r"C:\Users\Maskan\Downloads\Saqib_Ali_Mir_Resume (1)verfication.pdf"),
|
|
Path(r"C:\Users\Maskan\Downloads\DemoPdf.pdf"),
|
|
Path(r"C:\Users\Maskan\Downloads\DemoPdf-1-3.pdf"),
|
|
Path(r"C:\Users\Maskan\Desktop\docQube\docqube_backend\app\temp_uploads\801c2dcf-afa2-462a-a71d-4b2e2599808f.pdf"),
|
|
Path(r"C:\Users\Maskan\Desktop\docQube\docqube_backend\app\temp_uploads\fc716e7e-aa82-4bb3-825a-51140db03c1b.pdf"),
|
|
]
|
|
|
|
raw = Path(r"C:\Users\Maskan\Documents\pdf_html\backend\storage\raw")
|
|
if raw.exists():
|
|
CANDS.extend(sorted(raw.glob("*.pdf")))
|
|
for d in raw.iterdir():
|
|
if d.is_dir():
|
|
CANDS.extend(sorted(d.glob("*.pdf")))
|
|
|
|
|
|
def main():
|
|
hits = []
|
|
for p in CANDS:
|
|
if not p.exists():
|
|
continue
|
|
try:
|
|
doc = pdfengine.PdfDocument.load_from_file(str(p), "")
|
|
except Exception as e:
|
|
print(f"ERR load {p}: {e}")
|
|
continue
|
|
for pi in range(min(doc.page_count, 5)):
|
|
page = doc.get_page(pi)
|
|
try:
|
|
model = page.extract_document_model()
|
|
except Exception as e:
|
|
print(f"ERR model {p} p{pi}: {e}")
|
|
continue
|
|
for para in model.paragraphs:
|
|
text = " ".join("".join(r.text for r in ln.runs) for ln in para.lines)
|
|
if "Professional Experience" in text:
|
|
fonts = sorted({
|
|
(r.font_name, r.internal_font_id, r.is_embedded, r.type, r.font_size)
|
|
for ln in para.lines for r in ln.runs
|
|
})
|
|
hits.append((str(p), pi, text[:100], fonts))
|
|
print("FOUND", p)
|
|
print(" page", pi)
|
|
print(" text", repr(text[:120]))
|
|
print(" fonts", fonts)
|
|
for f in doc.get_fonts(pi, pi):
|
|
if "Arial-BoldMT_TrueType_32" in (f.internal_font_id or "") or (
|
|
"Arial-BoldMT" in (f.font_name or "") and f.is_embedded
|
|
):
|
|
print("FONT", p, "page", pi, f.font_name, f.internal_font_id, "emb", f.is_embedded)
|
|
print("hits", len(hits))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|