Можно печатать через 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 — это компонент, который помогает, например, переупорядочивать документы, размещать несколько документов на странице и разбивать содержимое с одной на две страницы.
24.07.2018