Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как распечатать PRN файл

Delphi , ОС и Железо , Принтеры и Печать



Автор: http://www.swissdelphicenter.ch

uses
  Printers, Winspool;

function SpoolFile(const FileName, PrinterName: string): Integer;
var
  Buffer: record
    JobInfo: record // ADDJOB_INFO_1
      Path: PChar;
      JobID: DWORD;
    end;
    PathBuffer: array[0..255] of Char;
  end;
  SizeNeeded: DWORD;
  Handle: THandle;
  PrtName: string;
  ok: Boolean;
begin
  // Flush job to printer
  PrtName := PrinterName;
  if PrtName = '' then
    PrtName := Printer.Printers[Printer.PrinterIndex]; // Default printer name
  ok := False;
  if OpenPrinter(PChar(PrtName), Handle, nil) then
    if AddJob(Handle, 1, @Buffer, SizeOf(Buffer), SizeNeeded) then
      if CopyFile(PChar(FileName), Buffer.JobInfo.Path, True) then
        if ScheduleJob(Handle, Buffer.JobInfo.JobID) then
          ok := True;
  if not ok then
    Result := GetLastError
  else
    Result := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if SpoolFile('c:\test.prn', Printer.Printers[0]) = 0 then
    ShowMessage('No error...');
end;

Код, который я предоставил, это приложение Delphi, которое печатает файл PRN на принтере с помощью API печати Windows. Вот подробное описание того, что код делает:

  1. Функция SpoolFile принимает два параметра: FileName, который является путем к файлу PRN, и PrinterName, который является именем принтера для использования.
  2. Функция открывает указанный принтер с помощью функции OpenPrinter и хранит его.handle в переменной Handle.
  3. Затем она создает буферную структуру, содержащую информацию о работе, включая путь к файлу PRN и ID работы.
  4. Функция использует функцию AddJob для добавления новой работы в очередь печати, указывая handle принтера, размер буфера и адрес буфера.
  5. Затем она копирует содержимое файла PRN в буфер с помощью функции CopyFile.
  6. Наконец, она планирует работу с помощью функции ScheduleJob.

Обработчик события Button1Click на форме используется для тестирования функции SpoolFile, печатая файл PRN по умолчанию (первый принтер в списке).

Чтобы распечатать файл PRN с помощью этого кода, выполните следующие шаги:

  1. Создайте новое приложение Delphi или откройте существующее.
  2. Добавьте units Printers и Winspool в раздел uses вашей формы.
  3. Скопируйте функцию SpoolFile и обработчик события Button1Click в свой код.
  4. Замените 'c:\test.prn' на путь к файлу PRN, который вы хотите распечатать.
  5. Запустите приложение, нажмите кнопку, и файл PRN должен быть распечатан по умолчанию.

Обратите внимание, что этот код предполагает, что файл PRN находится в том же каталоге, что и исполняемый файл, или был скопирован в местоположение, доступное программой. Вам может потребоваться изменить код для обработки различных местоположений файлов или прав доступа.

Также помните, что этот код использует API печати Windows и может не работать на платформах, отличных от Windows. Если вам нужно распечатать файлы PRN на других операционных системах, вам придется использовать другой подход.

В статье описана программа на языке Delphi, которая позволяет распечатать файл с расширением PRN на принтере.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Принтеры и Печать ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:26:58/0.0052781105041504/1