Как распечатать PDF в C# с помощью
Я использовал "процесс" для печати PDF-файла в приложении C#. Но я не могу получить статус печати. Я обнаружил, что возможно взаимодействовать с принтером / очередью с помощью System.management и System.printing. Я сделал много пробных n ошибок используя эти два пространства имен, но не смог распечатать файл. Есть ли примеры, как их использовать для печати PDF-документа на принтер?
3 ответа
System.Printing нельзя использовать для печати PDF-файлов. PDF-файлы должны быть сначала обработаны для печати.
Смотрите этот вопрос и его ответы для хорошего обзора различных подходов.
Если вы используете Linux, вы можете легко позвонить lp
команда.
На этот вопрос уже был дан ответ. Как я могу отправить файл документа на принтер и распечатать его?,
Вы не можете распечатать PDF-файл стандартными методами, потому что он должен быть отображен первым, вы можете использовать Ghostscript, Adobe Acrobat или что-то еще для этого.
Редактировать: Йохан был быстрее
Если у тебя есть WPF
приложение, а затем использовать System.Printing
,
Вот код:
var file = File.ReadAllBytes(pdfFilePath);
var printQueue = LocalPrintServer.GetDefaultPrintQueue();
using (var job = printQueue.AddJob())
using (var stream = job.JobStream)
{
stream.Write(file, 0, file.Length);
}
Теперь это пространство имен должно использоваться с WPF
приложение. Это не очень хорошо с ASP.NET
или же Windows Service
, Не следует использовать с Windows Forms
как оно System.Drawing.Printing
, У меня нет ни одной проблемы с моей печатью PDF с использованием приведенного выше кода, но я все слышу о том, почему это не работает для кого-то еще.
Я должен упомянуть, что у вас должен быть принтер, который будет поддерживать прямую печать, поскольку вы отправляете информацию непосредственно на принтер. По моему опыту, это работало с серией принтеров Brother HL и Sharp. Я хотел бы, чтобы это работало для других вещей, таких как документы Excel, но это не так. К счастью, их легко распечатать другими способами.