Рейтинг:
2
Dave Kreskowiak
Это происходит байтами в браузере, потому что вы не говорите браузеру, какой тип контента он получает. Вы устанавливаете ContentType в пустую строку вместо "application/pdf".
Richard Deeming
То Оказывать[^] метод должен установить это значение в правильное значение.
loai_maane
спасибо , ребята, но Дорогой Дэйв, как сказал Ричард рендеру, установит значение . есть какие-нибудь варианты, Ребята, пожалуйста ?
Dave Kreskowiak
Да, но поведение, которое вы описываете, говорит о том, что он не установлен.
Пройдите через код в отладчике и выполните его построчно.
loai_maane
спасибо, Дэйв , я постараюсь, но как я могу распечатать временный PDF-файл, и я хочу распечатать его 5 копий
Richard Deeming
Ты не можешь. Ни код, запущенный на сервере, ни Javascript, запущенный на клиенте, не могут заставить пользователя распечатать файл, не говоря уже о том, чтобы контролировать, сколько копий печатается.
Представьте себе, что было бы, если бы это было возможно. Каждый розыгрыш или вредоносный сайт, который вы посещали, начинал печатать сотни копий бесполезного мусора, который вы не хотели печатать. Даже сайты производителей принтеров, вероятно, начнут печатать страницу за страницей сплошного цвета, чтобы слить чернила и заставить вас покупать больше.
Все, что вы можете сделать, это отправить файл пользователю. Затем они могут выбрать, Сохранить ли его на потом, распечатать ли и сколько копий распечатать.
Dave Kreskowiak
Это зависит от обстоятельств. Подключен ли принтер к веб-серверу или к клиенту?
loai_maane
ребята на самом деле, это программа для печати медицинской формы включает в себя 5 копий для каждой формы ,конечный пользователь вводит некоторые данные, такие как идентификатор сотрудника, код врача ..... затем нажмите на кнопку печати 5 копий формы будут напечатаны с помощью принтера, подключенного к клиентскому ПК .
Dave Kreskowiak
У тебя есть проблема. Ваш ASP.NET работает полностью на сервере и, следовательно, не будет иметь никакого доступа к периферийным устройствам клиентов, таким как принтеры.
Точно так же код javascript, запущенный в браузере, работает в защищенной песочнице, а также не имеет доступа к периферийным устройствам, поэтому он не может запустить процесс печати без участия пользователя.
Однако существует довольно сложная альтернатива. Обычное приложение имеет доступ к принтерам. Вам придется написать еще одно приложение, которое будет установлено на клиентских машинах. Этому приложению можно сказать, чтобы оно загрузило PDF-файл с такого-то URL-адреса, как вы ASP.NET сайт, и распечатать его.
Хорошо, но как получить код javascript, чтобы сказать этому приложению загрузить правильный PDF-файл? Ну, javscript может общаться только с веб-серверами. Там нет ничего, что говорит, что он не может говорить с веб-сервером, который работает на клиентской машине. Таким образом, ваше приложение печати также должно будет предоставлять функциональность веб-сервера, чтобы ваш клиентский код javascript мог разговаривать с ним и указывать ему, что делать.
loai_maane
большое спасибо Дорогой Дэйв за ваш повтор ,
поэтому я думаю, что лучше забыть .net и сделать эту работу с помощью приложения win . каково ваше мнение ?
и дорогой последний вопрос , как я могу распечатать временный PDF-файл после процесса рендеринга.
Dave Kreskowiak
Просто чтобы быть ясным, это не имеет никакого отношения .Сетка на всех. Это разница между веб-приложением и настольным приложением.
Печать PDF - файла будет функцией библиотеки PDF, которую вы используете для отображения объекта на экране. Печать-это просто рендеринг документа в другой контекст устройства с различными размерами высоты и ширины.
Чтобы браузер отображал PDF-файл, он должен использовать либо плагин, например Acrobat Reader, либо иметь встроенный код для интерпретации и визуализации PDF-файла. Браузер Microsoft Edge имеет такую возможность.
Для настольного приложения, чтобы отобразить PDF, он должен использовать библиотеку для интерпретации данных PDF и рисовать вещь на экране или на принтере. Там есть по крайней мере дюжина библиотек, таких как SharpPDF, IronPDF, iTextSharp ... Вы даже можете использовать Acrobat Reader в качестве своей библиотеки.
loai_maane
большое спасибо Дэйв за вашу информацию
loai_maane
Дорогой Дэйв, надеюсь, ты в порядке.....
я создаю настольное приложение ,чтобы сохранить отчет в формате pdf на жестком диске, и я успешно распечатал его, но когда я печатаю, появляется adobe reader. я пробую много методов, таких как убийство процесса все та же проблема , пожалуйста, помогите, я хочу распечатать pdf без всплывающего окна adobe reader.i будет, но мой код как новый комментарий любезно проверьте
loai_maane
строка Filepath = путь.Комбинат(exeFolder, @"форма.формат PDF");
ProcessStartInfo printProcessInfo = новый ProcessStartInfo()
{
Verb = "print",
WindowStyle = ProcessWindowStyle.Скрытый,
CreateNoWindow = true,
FileName = Путь К Файлу,
UseShellExecute = true
};
Process printPro = новый процесс();
printPro.StartInfo = printProcessInfo;
printPro.Начать();
printPro.WaitForInputIdle();
Нить.Сон(6000);
if (false == printPro.CloseMainWindow())
{
printPro.Убить();
}
Dave Kreskowiak
Вы не имеете никакого контроля над Acrobat Reader при печати. Если он хочет создать диалоговое окно, проверяющее принтер и настройки, он покажет это диалоговое окно, и вы не сможете его остановить.
loai_maane
спасибо, Дэйв, есть еще какой-нибудь вариант распечатать PDF-файл без всплывающего acrobat reader ?
Dave Kreskowiak
Как всегда, сторонние библиотеки. Вам придется исследовать это самостоятельно, чтобы увидеть, что будет соответствовать вашим потребностям.
loai_maane
спасибо Дэйв ,я буду проверять