53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
import pdfplumber
|
|
import os
|
|
import time
|
|
import subprocess
|
|
import config
|
|
from PIL import ImageFont
|
|
|
|
def draw_boxes(page, boxes):
|
|
im = debug_im(page)
|
|
for i in boxes:
|
|
i["y0"] = page.height - i["y0"]
|
|
i["y1"] = page.height - i["y1"]
|
|
#i["x0"] *= im.original.height / page.height
|
|
#i["x1"] *= im.original.height / page.height
|
|
#i["y0"] *= im.original.height / page.height
|
|
#i["y1"] *= im.original.height / page.height
|
|
for box in boxes:
|
|
im.draw_line(((box["x0"], box["y0"]), (box["x1"], box["y0"])))
|
|
im.draw_line(((box["x1"], box["y0"]), (box["x1"], box["y1"])))
|
|
im.draw_line(((box["x1"], box["y1"]), (box["x0"], box["y1"])))
|
|
im.draw_line(((box["x0"], box["y1"]), (box["x0"], box["y0"])))
|
|
if "debug_label" in box:
|
|
font = ImageFont.truetype("arial.ttf", 24)
|
|
for offset in [-2, -1, 1, 2]:
|
|
im.draw.text(
|
|
xy=(offset + box["x0"] * im.original.height / page.height, offset + box["y0"] * im.original.height / page.height),
|
|
text=str(box["debug_label"]),
|
|
fill=(255,255,255),
|
|
font=font,
|
|
)
|
|
im.draw.text(
|
|
xy=(box["x0"] * im.original.height / page.height, box["y0"] * im.original.height / page.height),
|
|
text=str(box["debug_label"]),
|
|
fill=(0,255,0),
|
|
font=font,
|
|
)
|
|
debug_show(im)
|
|
|
|
def debug_im(page):
|
|
return page.to_image(height=config.DEBUG_HEIGHT)
|
|
|
|
def debug_show(im, name=None):
|
|
im.show()
|
|
#im.save(f"/tmp/dnd-pdf-to-txt{'' if not name else '-'+name}.jpg")
|
|
#if not config.DEBUG_NO_SHOW:
|
|
# go(f"qlmanage -p /tmp/dnd-pdf-to-txt{'' if not name else '-'+name}.jpg &> /dev/null")
|
|
|
|
__subprocesses__ = []
|
|
def go(cmd):
|
|
global __subprocesses__
|
|
__subprocesses__.append(subprocess.Popen(cmd, shell=True))
|
|
|