Пробел добавляется между символами при записи в PDF с использованием двоичной записи
Основная проблема заключается в том, что вы на самом деле не пишете PDF вообще!
Ваш код по существу возвращает чистые текстовые данные, а затем заявляет , что это PDF. Такая претензия никоим образом не изменяет текстовые данные, однако они остаются текстовыми и не становятся PDF.
Средство просмотра PDF, которое вы используете, очевидно, пытается каким-то образом отобразить то, что получилось, но результатэто оказывается очень неудовлетворительным (кажется, что пропорциональный шрифт используется в моноширинном виде).
Если вы действительно хотите вернуть PDF, вы должны явно его создать. PDF - это сложный двоичный формат, который лучше всего создавать с использованием выделенной библиотеки.
Найдите библиотеки PDF для своей среды. Вы можете найти некоторые, у которых есть явные способы добавить структуры таблиц или абзацев в pdf, а некоторые, которые создают контент путем преобразования из другого структурированного формата, например, html.
Вывод этих библиотек представляет собой двоичный файл в формате pdf, которыйВы можете вернуться из своего кода, используя Response.BinaryWrite
.
В последнее время в ряде вопросов можно прочитать, что у людей есть данные в текстовом или HTML-формате, вернуть его, задав некоторый двоичный тип контента (PDF в этомвопрос, MS Office форматирует в других), а затем предположим, что они сгенерировали файл в этом формате.
Это неправильно, утверждая, что формат не преобразуется в этот формат!
Все, что делает эта настройка типа контента, информирует клиента о том, какую программу просмотра использовать для открытия данных.
Вероятно, этот анти-паттерн появился из-за MS Word (и, скорее всего,другие текстовые процессоры тоже) могут также открывать текстовые и HTML-файлы и отображать их довольно корректно. Таким образом, этот анти-шаблон на первый взгляд кажется как-то работает.
Если вы пообещали клиенту, что ваше приложение возвращает документы MS Office, не возвращают HTMLили простой текст, утверждающий, что это документ Office, вместо этого создайте фактические документы MS Office! В противном случае знающие клиенты не примут вашу реализацию, и клиенты, которые ее приняли, в конечном итоге будут проинформированы знающими пользователями, что вы их обманули, что прихотя бы уменьшить свою известность.