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

Если твой Delphi приложение должно работать с различными типами файлов, одна из задач, которые могут возникнуть для вашего приложения, - разрешить пользователю приложения печатать файл, независимо от типа файла.

Большинство ориентированных на документы приложений, таких как MS Word, MS Excel или Adobe, могут легко печатать документы, созданные в этой программе. Например, Microsoft Word сохраняет текст, который вы пишете в документах с расширением DOC. Поскольку Word определяет, что является «необработанным» содержимым файла .DOC, он знает, как печатать файлы .DOC. То же самое относится к любому «известному» типу файла, содержащему некоторую информацию для печати.

Что делать, если вам нужно распечатать различные типы документов / файлов из вашего приложения? Можете ли вы знать, как отправить файл на принтер для правильной печати?

Печать из Delphi

Мы можем спросить Windows, какое приложение может напечатать, например, файл PDF. Или, что еще лучше, мы можем сообщить Windows, вот один файл PDF, отправить его в приложение, связанное / ответственное за печать файлов PDF.

instagram viewer

Для этого откройте проводник Windows, перейдите в каталог, содержащий несколько печатаемых файлов. Для большинства типов файлов в вашей системе, если щелкнуть правой кнопкой мыши файл в проводнике Windows, вы найдете команду «Печать». Выполнение команды Print shell приведет к отправке файла на принтер по умолчанию. Ну, это именно то, что мы хотим: для типа файла вызовите метод, который отправит файл в соответствующее приложение для печати. Функция, которую мы ищем, является функцией ShellExecute API.

ShellExecute: Print / PrintTo

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

Укажите принтер

Используя вышеуказанный вызов, документ «document.doc», расположенный в корне диска C, будет отправлен на принтер по умолчанию Windows. ShellExecute всегда использует принтер по умолчанию для действия «печать». Что если вам нужно распечатать на другом принтере, что если вы хотите позволить пользователю сменить принтер?

Команда PrintTo Shell

Перед копированием и вставкой: глобальная переменная Printer (тип TPrinter), доступная во всех программах Delphi, может использоваться для управления любой печатью, выполняемой приложением. Принтер определяется в блоке «printers», ShellExecute определяется в блоке «shellapi».

  1. Перетащите TComboBox на форму. Назовите это "cboPrinter". Установить стиль в csDropDownLidt
  2. Поместите следующие две строки в обработчик OnCreate формы:
    // иметь доступные принтеры в поле со спискомcboPrinter. Предметы. Назначить (принтер. Принтеры);// предварительно выбираем принтер по умолчанию / активныйcboPrinter. ItemIndex: = принтер. PrinterIndex;
использовать для печати любого типа документа на указанном принтере

Примечание. Некоторые типы документов не имеют приложения, связанного с печатью. В некоторых не указано действие printto.

instagram story viewer