Можно печатать через Adobe Acrobat
Я использую стандартные библиотеки, такие как System.Diagnostics.ProcessStartInfo, чтобы использовать Adobe Acrobat для печати PDF. Конечному пользователю не придется взаимодействовать с графическим интерфейсом Acrobat, хотя, к сожалению, следующий код по-прежнему выводит его на экран в течение нескольких секунд.
// Sample fileName = System.Environment.GetFolderPath(
// System.Environment.SpecialFolder.CommonApplicationData)
// + @"\MyCompany\MyProject\TestPrint.pdf"
private void SendPrintJob(string fileName)
{
try
{
// Start by finding Acrobat from the Registry.
// This supposedly gets whichever you have of free or paid
string processFilename = Microsoft.Win32.Registry.LocalMachine
.OpenSubKey("Software")
.OpenSubKey("Microsoft")
.OpenSubKey("Windows")
.OpenSubKey("CurrentVersion")
.OpenSubKey("App Paths")
.OpenSubKey("AcroRd32.exe")
.GetValue(String.Empty).ToString();
ProcessStartInfo info = new ProcessStartInfo();
info.Verb = "print";
info.FileName = processFilename;
info.Arguments = String.Format("/p /h {0}", fileName);
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
info.UseShellExecute = false;
Process p = new Process();
p.StartInfo = info;
p.Start();
p.WaitForInputIdle();
// Recommended to add a time-out feature. Mine is coded here.
}
catch (Exception e)
{
Console.WriteLine("Error sending print job. " + e.Message);
}
Может манипулировать через PDFSharp / MigraDoc
Я не читал манипуляции с документами в ОП, но вижу другие ответы, комментирующие этот факт. В нескольких вопросах и ответах StackOverflow за 2008-2012 годы (включая @Robert Gowland из этого вопроса) говорится, что у PDFSharp / MigraDoc плохая документация.
В 2018 году я обнаружил, что это простая в освоении кривая, со многими образцами на домашней странице . Я прочитал этот вопрос сегодня утром, чтобы понять, как напечатать график, и теперь у меня есть кнопка, чтобы сделать снимок экрана с моим приложением и распечатать.
Вам нужно перейти к диспетчеру пакетов NuGet для PDFsharp-MigraDocs
(или PDFsharp-MigraDocs-WPF
, или PDFsharp-MigraDocs-GDI
). MigraDocs - это высокоуровневый компонент, который может создавать документы из элементов, не заботясь о том, являются ли они PDF-файлами, изображениями или чем-то еще. PDFSharp - это компонент, который помогает, то есть переупорядочивать документы, размещать несколько документов на странице и разбивать содержимое на одну-две страницы.