@@ -355,18 +355,22 @@ def assign_uuid(self, pdf: bytes) -> bytes:
355
355
return Utils ().generate_stream (pdf_file )
356
356
357
357
@staticmethod
358
- def get_character_x_paddings (
359
- element : "pdfrw.PdfDict" , element_middleware : "ElementMiddleware"
360
- ) -> List [float ]:
361
- """Returns paddings between characters for combed text fields."""
358
+ def get_char_rect_width (element : "pdfrw.PdfDict" , element_middleware : "ElementMiddleware" ) -> float :
359
+ """Returns rectangular width of each character for combed text fields."""
362
360
363
361
rect_width = abs (
364
362
float (element [TemplateCoreConstants ().annotation_rectangle_key ][0 ])
365
363
- float (element [TemplateCoreConstants ().annotation_rectangle_key ][2 ])
366
364
)
367
- length = min (len (element_middleware .value or "" ), element_middleware .max_length )
365
+ return rect_width / element_middleware .max_length
366
+
367
+ def get_character_x_paddings (
368
+ self , element : "pdfrw.PdfDict" , element_middleware : "ElementMiddleware"
369
+ ) -> List [float ]:
370
+ """Returns paddings between characters for combed text fields."""
368
371
369
- char_rect_width = rect_width / element_middleware .max_length
372
+ length = min (len (element_middleware .value or "" ), element_middleware .max_length )
373
+ char_rect_width = self .get_char_rect_width (element , element_middleware )
370
374
371
375
result = []
372
376
@@ -384,9 +388,8 @@ def get_character_x_paddings(
384
388
385
389
return result
386
390
387
- @staticmethod
388
391
def get_draw_text_coordinates_v2 (
389
- element : "pdfrw.PdfDict" , element_middleware : "ElementMiddleware"
392
+ self , element : "pdfrw.PdfDict" , element_middleware : "ElementMiddleware"
390
393
) -> Tuple [Union [float , int ], Union [float , int ]]:
391
394
"""Returns coordinates to draw text at given a PDF form text element."""
392
395
@@ -425,6 +428,8 @@ def get_draw_text_coordinates_v2(
425
428
float (element [TemplateCoreConstants ().annotation_rectangle_key ][2 ])
426
429
- string_width
427
430
)
431
+ if length > 0 and element_middleware .comb is True :
432
+ x -= (self .get_char_rect_width (element , element_middleware ) - stringWidth (element_middleware .value [- 1 ], element_middleware .font , element_middleware .font_size )) / 2
428
433
429
434
string_height = element_middleware .font_size * 96 / 72
430
435
height_mid_point = (
0 commit comments