#c# #aspose.words
#c# #aspose.words
Вопрос:
Я программно создаю .DOC (используя Aspose Words) с переменной высотой в соответствии с содержанием, которое будет напечатано, и оно будет напечатано в рулоне бумаги (см. термопринтеры).
Какой подход я должен предпринять? Я подумал о двух способах: создать документ с минимальной высотой, но с нулевыми верхними и нижними полями, чтобы страницы могли находиться на одной странице, или динамически изменять высоту страницы?
Приветствуется любое решение и, конечно же, как это сделать. Но я бы предпочел, чтобы документ находился внутри уникальной страницы (по мере необходимости), потому что эти принтеры могут обрезать бумагу в некоторых случаях, например, при каждом разрыве страницы (функция аппаратного обеспечения / драйвера вне контроля приложения).
Ответ №1:
Я добился успеха с подходом к растягиванию страницы, чтобы вместить содержимое всего на 1 странице. Однако, поскольку в Aspose Words, похоже, нет способов измерить оставшееся пространство последней страницы в API Aspose Words, я решил обойти этот путь:
Я определил высоту страницы документа, умножив количество страниц на полезную высоту страницы (поля вычтены), и поэтому applied пытается отрегулировать оставшееся пространство, разделив полезную высоту страницы на 2 при каждой попытке и увеличивая или уменьшая ее, как основу любого обычного алгоритма бинарного поиска.
Это работает, и поскольку основа бинарных алгоритмов имеет логарифмическую шкалу, в худшем случае мне будет стоить менее 10 попыток уместить страницу (моя полезная высота не превысит 30 см, но даже при этом, если бы у него был 1 метр, в худшем случае это будет стоить около 14 попыток).