Подготовка к печати

Для печати различных файлов в ОС Linux используется общая система печати UNIX (Common UNIX Printing System - CUPS). CUPS позволяет настраивать доступ к принтерам, управляет самой печатью. Для установки CUPS, а также всех необходимых зависимостей используйте команду:

sudo apt-get install cups

Далее для добавления принтера выполните следующие шаги:

  1. В браузере откройте веб-интерфейс CUPS по адресу http://localhost:631/.

  2. Щелкните «Добавление принтеров и групп», далее «Добавить принтер».

  3. Выберите «Хост или принтер LPD/LPR» и нажмите кнопку «Продолжить».

  4. Укажите путь до принтера в следующем формате: lpd://<server>/<printer>, где <server> - адрес и порт сервера печати; <printer> - наименование добавляемого принтера. Нажмите кнопку «Продолжить».

  5. Заполните поле «Название» латинскими буквами, например «MyPrinter». Нажмите кнопку «Продолжить».

  6. В списке «Создать» выберите необходимый тип принтера. Нажмите кнопку «Продолжить», далее «Добавить принтер».

После этого принтер будет добавлен в систему и готов к использованию.

Печать из прикладного кода

С помощью кода на Fore можно организовать печать объектов репозитория на принтере. Объекты, которые поддерживают печать, могут быть приведены к интерфейсу IGxDocument. С помощью свойств и методов этого интерфейса осуществляется подготовка и печать объектов.

Для выполнения примера в модуле должны быть подключены сборки Drawing и Metabase. В репозитории создан регламентный отчёт с идентификатором «Report».

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    GxDoc: IGxDocument;
    Printer: IGxDocumentPrinter;
Begin
    MB := MetabaseClass.Active;
    MObj := MB.ItemById(
"Report").Edit;
    
// Принтер, на котором осуществляется печать
    Printer := GxPrinters.DefaultPrinter As IGxDocumentPrinter;
    
// Печать отчёта
    GxDoc := MObj As IGxDocument;
    GxDoc.Print(Printer, -
1, -1"");
End Sub UserProc;

Используя графический контекст принтера, который можно получить в свойстве Graphics интерфейса IGxDocumentPrinter, можно организовать печать различных графических изображений. Изображения могут быть получены из файла, документа репозитория или нарисованы непосредственно с помощью программного кода.

Sub UserProc1;
Var
    Image: IGxImage;
    Printer: IGxDocumentPrinter;
Begin
    
// Принтер, на котором осуществляется печать
    Printer := GxPrinters.DefaultPrinter As IGxDocumentPrinter;
    
// Получение изображения из файла, который необходимо напечатать
    Image := GxBitmap.FromFile("D:\Work\Image.jpg");
    
// Заполнение графического контекста и печать
    Printer.StartDocument("Image");
    Printer.NewPage;
    Printer.Graphics.DrawImageTransparent(Image, 
NullNullNull);
    Printer.EndDocument;
End Sub UserProc1;

Для печати изображения, которое сохранено в документе репозитория, также необходимо подключить сборки Fore и IO.

Sub UserProc2;
Var
    MB: IMetabase;
    Doc: IDocument;
    MemStream: IMemoryStream;
    Image: IGxImage;
    Printer: IGxDocumentPrinter;
Begin
    MB := MetabaseClass.Active;
    Doc := MB.ItemById(
"IMG_REPORT").Bind As IDocument;
    
// Принтер, на котором осуществляется печать
    Printer := GxPrinters.DefaultPrinter As IGxDocumentPrinter;
    
// Получение изображения
    MemStream := New MemoryStream.Create;
    Doc.SaveToStream(MemStream);
    Image := 
New GxImage.CreateFromStream(MemStream);
    
// Заполнение графического контекста и печать
    Printer.StartDocument("Image");
    Printer.NewPage;
    Printer.Graphics.DrawImageTransparent(Image, 
NullNullNull);
    Printer.EndDocument;
End Sub UserProc2;

См. также:

Дополнительные настройки