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

Как установить имя файла при печати в PDF через Delphi XE и Microsoft Print to PDF

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

При работе с печати в формате PDF через Delphi XE и использовании драйвера "Microsoft Print to PDF" может возникнуть проблема с установкой имени файла, которое не решается стандартным методом с помощью свойства Printer.Title. Это связано с особенностями работы драйвера Microsoft, который не поддерживает данный метод для установки имени файла по умолчанию.

Описание проблемы

Разработчики, использующие Delphi XE для печати в PDF, сталкиваются с проблемой, что стандартный способ установки имени файла через свойство Printer.Title не работает при использовании "Microsoft Print to PDF". Это затрудняет автоматизацию процесса печати, так как пользователю необходимо вручную вводить имя файла для сохранения документа.

Подтвержденный ответ

Для решения этой проблемы можно использовать структуру TDocInfo из модуля WinApi.Windows. Пример кода, который позволяет установить имя файла для печати через "Microsoft Print to PDF", выглядит следующим образом:

procedure TForm1.Button1Click(Sender: TObject);
var
  Pd : TPrintDlg;
  DocInfo: TDocInfo;
  const
    DOC_NAME = 'Stack Overflow';
    FILE_NAME = 'C:\temp\print\SO.pdf';
    MAX_PATH = 260;
begin
  Pd := default(TPrintDlg);
  Pd.lStructSize := sizeof(Pd);
  Pd.hWndOwner := Form1.Handle;
  Pd.Flags := PD_RETURNDC;
  if PrintDlg(Pd) then begin
    DocInfo := Default(TDocInfo);
    DocInfo.cbSize := SizeOf(DocInfo);
    DocInfo.lpszDocName := StrAllocW(32);
    DocInfo.lpszOutput := StrAllocW(MAX_PATH);
    lStrCpynW(DocInfo.lpszDocName, DOC_NAME, Length(DOC_NAME) * sizeof(char));
    lStrCpynW(DocInfo.lpszOutput, FILE_NAME, Length(FILE_NAME) * sizeof(char));
    StartDoc(Pd.hDc, DocInfo);
    // ... дальнейший код печати ...
    EndDoc(Pd.hDc);
    StrDisposeW(DocInfo.lpszDocName);
    StrDisposeW(DocInfo.lpszOutput);
  end;
end;

Установка значения lpszOutput в структуре TDocInfo позволяет указать имя файла для сохранения, когда в качестве принтера выбран "Microsoft Print to PDF".

Альтернативные способы

Существуют альтернативные подходы, например, использование внешних библиотек, таких как SynPDF, которые позволяют создавать PDF файлы напрямую без использования стандартного диалога печати. Также можно попробовать установить имя файла, используя метод SetPrinter, но это решение может работать не со всеми драйверами PDF печати.

Заключение

Используя структуру TDocInfo, можно настроить процесс печати в PDF с помощью "Microsoft Print to PDF" таким образом, чтобы имя файла устанавливалось автоматически. Это упрощает процесс печати и делает его более удобным для автоматизации в приложениях, написанных на Delphi XE.

Создано по материалам из источника по ссылке.

Разработчики на Delphi XE столкнулись с проблемой установки имени файла при печати в PDF через драйвер 'Microsoft Print to PDF'.


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

Получайте свежие новости и обновления по 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 13:08:50/0.0048608779907227/1