Если у вас установлено Adobe Reader
, вы можете просто установить его в качестве принтера по умолчанию. И ВОЙЛА! Вы можете распечатать в PDF!
printDocument1.PrinterSettings.PrinterName = "Adobe PDF";
printDocument1.Print();
Так же просто, как это!
Поскольку буфер обмена используется всеми приложениями пользовательского интерфейса, время от времени вы будете сталкиваться с этим. Очевидно, вы не хотите, чтобы ваше приложение вылетало из строя, если ему не удалось выполнить запись в буфер обмена, поэтому разумно изящная обработка ExternalException. Я бы посоветовал сообщить пользователю об ошибке, если вызов SetObjectData для записи в буфер обмена завершился неудачно.
Было бы предложено использовать (через P / Invoke ) user32! GetOpenClipboardWindow
, чтобы узнать, открыт ли буфер обмена в другом приложении. Он вернет HWND окна, в котором открыт буфер обмена, или IntPtr.Zero
, если ни одно приложение не открыло его. Вы можете вращать значение до его IntPtr.Zero
в течение определенного периода времени.