diff --git a/conservancy_beancount/pdfforms/fields.py b/conservancy_beancount/pdfforms/fields.py index 8a49567a6492c5078066ef4d840a3a217f81673c..23ebd6eff7fc997433e6c944ea4152a29801107f 100644 --- a/conservancy_beancount/pdfforms/fields.py +++ b/conservancy_beancount/pdfforms/fields.py @@ -8,6 +8,10 @@ import enum import functools +from decimal import Decimal + +import babel.numbers # type:ignore[import] + from pdfminer.pdftypes import resolve1 # type:ignore[import] from pdfminer import psparser # type:ignore[import] from . import utils as pdfutils @@ -22,6 +26,7 @@ from typing import ( Sequence, Tuple, Union, + cast, ) FieldSource = MutableMapping[str, Any] @@ -238,7 +243,9 @@ class TextField(FormField): def value(self) -> Optional[str]: return self._decode(super().value()) - def set_value(self, value: Optional[str]) -> None: + def set_value(self, value: Union[str, Decimal, float, int, None]) -> None: + if isinstance(value, (Decimal, float, int)): + value = cast(str, babel.numbers.format_decimal(value)) super().set_value(None if value is None else pdfutils.encode_text(value)) def fill_value(self) -> Optional[str]: