Печать .ДОКУМЕНТ с переменной высотой на непрерывной бумаге (рулон бумаги) с надписью «Aspose Words»

#c# #aspose.words

#c# #aspose.words

Вопрос:

Я программно создаю .DOC (используя Aspose Words) с переменной высотой в соответствии с содержанием, которое будет напечатано, и оно будет напечатано в рулоне бумаги (см. термопринтеры).

Какой подход я должен предпринять? Я подумал о двух способах: создать документ с минимальной высотой, но с нулевыми верхними и нижними полями, чтобы страницы могли находиться на одной странице, или динамически изменять высоту страницы?

Приветствуется любое решение и, конечно же, как это сделать. Но я бы предпочел, чтобы документ находился внутри уникальной страницы (по мере необходимости), потому что эти принтеры могут обрезать бумагу в некоторых случаях, например, при каждом разрыве страницы (функция аппаратного обеспечения / драйвера вне контроля приложения).

Ответ №1:

Я добился успеха с подходом к растягиванию страницы, чтобы вместить содержимое всего на 1 странице. Однако, поскольку в Aspose Words, похоже, нет способов измерить оставшееся пространство последней страницы в API Aspose Words, я решил обойти этот путь:

Я определил высоту страницы документа, умножив количество страниц на полезную высоту страницы (поля вычтены), и поэтому applied пытается отрегулировать оставшееся пространство, разделив полезную высоту страницы на 2 при каждой попытке и увеличивая или уменьшая ее, как основу любого обычного алгоритма бинарного поиска.

Это работает, и поскольку основа бинарных алгоритмов имеет логарифмическую шкалу, в худшем случае мне будет стоить менее 10 попыток уместить страницу (моя полезная высота не превысит 30 см, но даже при этом, если бы у него был 1 метр, в худшем случае это будет стоить около 14 попыток).