Перейти к содержанию
Fire Monkey от А до Я
  • 0

Отправить на печать несколько изображений сразу


Николай_1988

Вопрос

Здравствуйте, коллеги! Нужна ваша помощь. Перерыл кучу гайдов, не нашел ответа на волнующий вопрос. Если ниженаписаное выглядит уныло, прошу не тролить, учусь только ))

Приложение для Windows на FM. На основании png-шного шаблона с помощью canvas, накидывает на него строки в определенные места и сохраняет в папке с ехе. В зависимости от диапазона вводимых дат создается несколько однотипных изображений 1_0, 1_1, 1_2 и т.д. (я художник, я так вижу) просто с разными датами и в цикле посылается на печать каждый файл следующим образом:

var
       SrcRect, DestRect: TRectF;
       DateCount, i : integer;
       IMG:TImage;
begin
       IMG:=TImage.Create(nil);
       DateCount := DaysBetween(DE_Order.Date,DE_Order2.Date);  //получаем количество дней между датами
       for I := 0 to DateCount do

       ListCreate(DE_Order.Date+i,i);  //процедура создания png. Втыкает дату в шаблон и сохраняет документ как 1_i

if PrintDialog1.Execute then    //После выбора принтера
   begin
    for i := 0 to DateCount do  //отправляем каждый файл в очередь печати напрямую в принтер
     begin
        Printer.BeginDoc;
        SrcRect.Left := 0;
        SrcRect.Top := 0;
        SrcRect.Right := 2481;
        SrcRect.Bottom := 3508;
        IMG.Bitmap.LoadFromFile(PChar('1_'+IntToStr(i)+'.png'));
        DestRect := TRectF.Create(0, 0, 4962, 7016);                  //тут я так и не понял, но методом подгона выяснилось, что без увеличения в 2 раза значений SrcRect нормально печатать не будет. Но это не важный момент
        Printer.Canvas.DrawBitmap(Img.Bitmap, SrcRect, DestRect, 1);
        Printer.EndDoc;
     end;
   end;
end;

Вот и сам вопрос.. Возникла задача.. Печатать все эти документы в А5 формате по 2 листа на странице. Если делать все руками, можно в папке выделить все изображения - на печать. Там и можно настроить 2 на стр, 4 на странице и прочее. Как программно это можно реализовать? 

Заранее огромное спасибо!

Изменено пользователем Николай_1988
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

если вы сами решаетесь печатать, вам нужно самостоятельно производить все расчеты.

для этого нужно ознакомиться с документацией http://docwiki.embarcadero.com/RADStudio/Rio/en/Printing_from_a_FireMonkey_Application

далее используем Printer.PageWidth и PageHeight

вы знаете размер бумаги в мм и знаете размер страницы в точках

далее идет тема Пропорции, 4-й класс, чтобы разместить то что вам нужно в правильное место хоть в точках, хоть в мм

Ссылка на комментарий
  • 0

Благодарю, решил немного иначе )

Создается лист вдвое шире чем изначальный и в него пихаются два битмапа. Если документов нечетное количество, суется пустой. Далее это дело переворачивается на 90 градусов и сохраняется (посылается на печать). Профит. А5 готов ))

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...