Как распечатать 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, но это не так. К счастью, их легко распечатать другими способами.

Другие вопросы по тегам