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

Устранение проблемы квадратов вместо пробелов при экспорте отчета в PDF с использованием TlrPdfExportFilter

Delphi , Компоненты и Классы , TQuickReport

 

Экспорт отчетов в PDF является важной частью работы с данными, и любые проблемы, связанные с этим процессом, могут существенно затруднить использование отчетов. В данной статье мы рассмотрим проблему, когда вместо пробелов в PDF-файле появляются квадраты, и предложим решения, которые помогут устранить эту проблему.

Проблема

Пользователь artem101 столкнулся с проблемой, когда при экспорте отчета в PDF с использованием компонента TlrPdfExportFilter вместо пробелов в тексте отчета появлялись квадраты. Это явление было вызвано использованием неразрывного пробела (nbsp) в форматах переменных отчета.

Причины проблемы

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

Решение

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

Пример кода

Рассмотрим пример кода, который демонстрирует, как можно заменить неразрывные пробелы на обычные пробелы в форматах переменных отчета:

procedure TForm1.frReport1GetValue(const ParName: String; var ParValue: Variant);
begin
  case ParName of
    'Кол-во бронирований', 'Кол-во дней', 'Общий доход', 'Общая комиссия',
    'Средняя продолжительность', 'Кол-во продлений':
      ParValue := DataModule1.GeneralStatsSQLQuery.FieldByName(ParName).AsString;
  end;
end;

В данном примере мы используем метод AsString для получения значения поля в виде строки. Если в формате переменной используется неразрывный пробел, его нужно заменить на обычный пробел. Это можно сделать следующим образом:

procedure TForm1.frReport1GetValue(const ParName: String; var ParValue: Variant);
begin
  case ParName of
    'Кол-во бронирований', 'Кол-во дней', 'Общий доход', 'Общая комиссия',
    'Средняя продолжительность', 'Кол-во продлений':
      ParValue := DataModule1.GeneralStatsSQLQuery.FieldByName(ParName).AsString;
      // Замена неразрывных пробелов на обычные
      ParValue := StringReplace(ParValue, #160, ' ', [rfReplaceAll]);
  end;
end;

Альтернативное решение

Если проблема связана с некорректной обработкой символов в TlrPdfExportFilter, можно рассмотреть использование другого компонента для экспорта отчетов в PDF. Одним из таких компонентов является TFPReport.

Пример использования TFPReport для экспорта отчета в PDF:

procedure TForm1.SavePDFButtonClick(Sender: TObject);
var
  SaveDlg: TSaveDialog;
  PDFExporter: TFPReportPDFExporter;
begin
  SaveDlg := TSaveDialog.Create(nil);
  try
    SaveDlg.FileName := Format('report %s %s.pdf', [DateToStr(Now),
                                        StringReplace(TimeToStr(Now), ':', '-', [rfReplaceAll])]);
    SaveDlg.Filter := 'PDF|*.pdf';
    SaveDlg.DefaultExt := 'pdf';
    if SaveDlg.Execute then
    begin
      PDFExporter := TFPReportPDFExporter.Create(nil);
      try
        PDFExporter.Report := frCompositeReport1;
        PDFExporter.ExportToFile(SaveDlg.FileName);
      finally
        PDFExporter.Free;
      end;
    end;
  finally
    SaveDlg.Free;
  end;
end;

В данном примере мы используем компонент TFPReportPDFExporter для экспорта отчета в PDF. Этот компонент может быть более надежным в обработке символов и неразрывных пробелов.

Заключение

Проблема с квадратами вместо пробелов при экспорте отчета в PDF с использованием TlrPdfExportFilter может быть решена путем замены неразрывных пробелов на обычные пробелы. Однако, если проблема сохраняется, можно рассмотреть использование альтернативных компонентов для экспорта отчетов в PDF, таких как TFPReportPDFExporter. Эти решения помогут обеспечить корректное отображение текста в экспортированных PDF-файлах.

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

Context: В статье рассматривается проблема появления квадратов вместо пробелов при экспорте отчетов в PDF и предлагается несколько решений для её устранения.


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

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




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


:: Главная :: TQuickReport ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-22 12:02:40/0.0038809776306152/0