Печать.DOC с переменной высотой на непрерывной бумаге (бумажный рулон) с помощью "Aspose Words"
Я программно создаю.DOC (используя Aspose Words) с переменной высотой в соответствии с содержимым, которое будет напечатано, и он будет напечатан в рулоне бумаги (см. Термопринтеры).
Какой подход я должен выбрать? Я подумал о двух способах: создать бумагу с минимальной высотой, но с нулевым верхним и нижним полями, чтобы страницы могли иметь эффект нахождения на одной странице, или динамически изменять высоту страницы?
Любое решение приветствуется, и, конечно, как это сделать. Но я бы предпочел, чтобы документ находился на уникальной странице (если нужно), потому что эти принтеры могут обрезать бумагу в некоторых событиях, например, при каждом разрыве страницы (функция оборудования / драйвера не контролируется приложением).
1 ответ
Я добился успеха с подходом, чтобы растянуть страницу, чтобы уместить содержимое только на 1 странице. Тем не менее, поскольку у Aspose Words, похоже, нет способов измерить оставшееся пространство последней страницы в API-интерфейсе Aspose Words, я обошел это следующим образом:
Я определил высоту страницы документа, умножив PageCount на полезную высоту страницы (поля вычтены), и, таким образом, примененный пытается отрегулировать оставшееся пространство, деля полезную высоту страницы на 2 при каждой попытке и увеличивая или уменьшая ее, как основу любого обычный алгоритм двоичного поиска.
Это работает, и как основа двоичных алгоритмов имеет логарифмический масштаб, в худшем случае это будет стоить мне меньше 10 попыток уместить страницу (моя полезная высота не будет превышать 30 см, но даже при этом, если бы у нее был 1 метр будет стоить около 14 попыток в худшем случае).