test_header_effect.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import os
  2. from markdown_pdf import MarkdownPdf, Section
  3. import fitz
  4. docs_dir = r"c:/Users/lanfr144/Documents/DOPRO1/Antigravity/Food/docs"
  5. md_file = os.path.join(docs_dir, "Installation_Guide.md")
  6. with open(md_file, "r", encoding="utf-8") as f:
  7. md_content = f.read()
  8. # Clean paths
  9. root_dir = r"c:/Users/lanfr144/Documents/DOPRO1/Antigravity/Food"
  10. md_content = md_content.replace("file:///" + root_dir + "/docs/", "")
  11. md_content = md_content.replace("file:///" + root_dir + "/", "../")
  12. pdf = MarkdownPdf()
  13. section = Section(md_content, paper_size="A4", root=docs_dir)
  14. pdf.add_section(section)
  15. doc = pdf._make_doc()
  16. total_pages = len(doc)
  17. print("Before drawing, Page 2 text length:", len(doc[1].get_text()))
  18. image_path = os.path.join(docs_dir, 'am.png')
  19. doc_title = "Local Food AI - Detailed Installation and Deployment Guide"
  20. r_text = "DOPRO1"
  21. l_footer = "lanfr144"
  22. fontsize = 8
  23. fontname = "helv"
  24. for page_idx in range(total_pages):
  25. page = doc[page_idx]
  26. width = page.rect.width
  27. height = page.rect.height
  28. if os.path.exists(image_path):
  29. image_rect = fitz.Rect(48, 12, 48 + 16, 12 + 16)
  30. page.insert_image(image_rect, filename=image_path)
  31. m_width = fitz.get_text_length(doc_title, fontname=fontname, fontsize=fontsize)
  32. r_width = fitz.get_text_length(r_text, fontname=fontname, fontsize=fontsize)
  33. footer_text = f"Page {page_idx + 1} of {total_pages}"
  34. f_width = fitz.get_text_length(footer_text, fontname=fontname, fontsize=fontsize)
  35. page.insert_text(fitz.Point((width - m_width) / 2, 22), doc_title, fontname=fontname, fontsize=fontsize, color=(0.5, 0.5, 0.5))
  36. page.insert_text(fitz.Point(width - 48 - r_width, 22), r_text, fontname=fontname, fontsize=fontsize, color=(0.5, 0.5, 0.5))
  37. page.insert_text(fitz.Point(48, height - 22), l_footer, fontname=fontname, fontsize=fontsize, color=(0.5, 0.5, 0.5))
  38. page.insert_text(fitz.Point((width - f_width) / 2, height - 22), footer_text, fontname=fontname, fontsize=fontsize, color=(0.5, 0.5, 0.5))
  39. print("After drawing (in memory), Page 2 text length:", len(doc[1].get_text()))
  40. doc.save("scratch/test_drawn.pdf", clean=True, garbage=3, deflate=True)
  41. doc.close()
  42. doc2 = fitz.open("scratch/test_drawn.pdf")
  43. print("After saving, Page 2 text length:", len(doc2[1].get_text()))
  44. doc2.close()