feat: implemented hit testing, form field, content stream and base security hardening
This commit is contained in:
@@ -212,6 +212,40 @@ PYBIND11_MODULE(pdfengine, m) {
|
||||
}
|
||||
return py_list;
|
||||
})
|
||||
.def("ordered_glyphs", [](const pdfengine::PdfPage& self) {
|
||||
auto res = get_or_throw(self.orderedGlyphs());
|
||||
py::list py_list;
|
||||
for (const auto& g : res) {
|
||||
py::dict d;
|
||||
d["text"] = g.text; d["x"] = g.x; d["y"] = g.y;
|
||||
d["w"] = g.w; d["h"] = g.h; d["fontSize"] = g.fontSize;
|
||||
py_list.append(d);
|
||||
}
|
||||
return py_list;
|
||||
})
|
||||
.def("hit_glyph", [](const pdfengine::PdfPage& self, double x, double y) {
|
||||
auto hit = get_or_throw(self.hitGlyph(x, y));
|
||||
py::dict d;
|
||||
d["glyphIndex"] = hit.glyphIndex;
|
||||
d["caret"] = hit.caret;
|
||||
d["line"] = hit.line;
|
||||
return d;
|
||||
}, py::arg("x"), py::arg("y"))
|
||||
.def("select_range", [](const pdfengine::PdfPage& self, double ax, double ay, double bx, double by) {
|
||||
auto sel = get_or_throw(self.selectRange(ax, ay, bx, by));
|
||||
py::dict d;
|
||||
d["startGlyph"] = sel.startGlyph;
|
||||
d["endGlyph"] = sel.endGlyph;
|
||||
d["text"] = sel.text;
|
||||
py::list rects;
|
||||
for (const auto& r : sel.rects) {
|
||||
py::dict rd;
|
||||
rd["x"] = r.x; rd["y"] = r.y; rd["w"] = r.w; rd["h"] = r.h;
|
||||
rects.append(rd);
|
||||
}
|
||||
d["rects"] = rects;
|
||||
return d;
|
||||
}, py::arg("ax"), py::arg("ay"), py::arg("bx"), py::arg("by"))
|
||||
.def("get_fonts", [](const pdfengine::PdfPage& self) {
|
||||
return get_or_throw(self.getFonts());
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user