Независимо от того, какой принтер я выбрал, я получаю « Задание печати не выполнено: неподдерживаемый формат документа« application / pdf ».
Я пытаюсь печатать только на принтерах HP.
Я не вижу места в коде для изменения типа вывода.
Я использую UISimpleTextFormatter для форматирования строки.
Не уверен, как обойти это.
Редактировать : приведенный ниже код взят прямо из примера Мигеля. с той лишь разницей, что я попробовал форматирование разметки, чтобы увидеть, будет ли он выводиться в формате, отличном от application / pdf .
В диалоговом окне печати отображается список принтеров HP, я выбираю принтер, но ничего не печатается, и в режиме отладки регистрируется ошибка, указанная вверху.
Кроме UIPrintInfoOutputType.General , я также пытался UIPrintInfoOutputType.GrayScale , но с тем же эффектом.
public partial class AppDelegate : UIApplicationDelegate
{
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
window.MakeKeyAndVisible ();
var button = UIButton.FromType (UIButtonType.RoundedRect);
button.Frame = new RectangleF (100, 100, 120, 60);
button.SetTitle ("Print", UIControlState.Normal);
button.TouchDown += delegate {
Print ();
};
window.AddSubview (button);
return true;
}
void Print ()
{
var printInfo = UIPrintInfo.PrintInfo;
printInfo.JobName = "Test :";
printInfo.OutputType = UIPrintInfoOutputType.General;
printInfo.JobName = "Test: My first Print Job";
/*
var textFormatter = new UISimpleTextPrintFormatter ("Once upon a time...") {
StartPage = 0,
ContentInsets = new UIEdgeInsets (72, 72, 72, 72),
MaximumContentWidth = 6 * 72,
};
*/
var htmlFormatter = new UIMarkupTextPrintFormatter("<html><body>Test : Hi There!!</body></html>");
htmlFormatter.StartPage = 0;
htmlFormatter.ContentInsets = new UIEdgeInsets (72, 72, 72, 72); // 1 inch margins
htmlFormatter.MaximumContentWidth = 6 * 72;
var printer = UIPrintInteractionController.SharedPrintController;
printer.PrintInfo = printInfo;
printer.PrintFormatter = htmlFormatter;
printer.ShowsPageRange = true;
printer.Present (true, (handler, completed, err) => {
if (!completed && err != null){
Console.WriteLine ("error");
}
});
}
public override void OnActivated (UIApplication application)
{
}
}