2016-03-01 3 views
3

Я все новичок в Xamarin, и сейчас я работаю над примером или приложением «доказать концепцию» с помощью Xamarin.Forms.Печать с приложения Xamarin.Forms

Я должен выполнить задачу печати из этого приложения, хотя я не уверен, что еще напечатать (экран, содержимое ярлыка, файл и т. Д.).

В любом случае, что является самым простым способом печати из приложения Xamarin.Forms? (текущая цель - в основном Android 4.4+).

Я надеюсь, что это не слишком сложно :)

EDIT:

Хорошо позвольте мне просто обновлять этот пост, как исходный текст может быть немного амбициозны/расплывчатым.

У меня есть проект Xamarin.Forms (+ часть Android), и у меня есть HTML-код в XF-части проекта, который мне нужно получить в WebView и распечатать. Из того, что я понимаю, вещь с WebView должна быть выполнена в части Android проекта из-за того, что именно здесь будет обрабатываться печать. Я надеялся, что это можно сделать из кода, так как мне не нужно отображать WebView, просто распечатайте его содержимое. Android часть проекта имеет только MainActivity, а не макеты или файлы XAML. Я не знаю, где добавить WebView или как получить доступ к нему (кроме DependecyService, похоже, здесь звучит слово), поэтому я застрял здесь.

Я думаю, что эта задача должна быть довольно тривиальной для кого-то, у кого больше опыта Ксамарина, чем у меня.

+0

этот блог может помочь вам: https://blog.xamarin.com/native-printing-with-android/ – Nfear

+0

Я уже видел эту статью, и это, кажется, о родных приложениях Android (или Android конкретных часть), а не что-то сделанное из части Xamarin.Forms (кросс-платформенная) проекта. Поскольку я полный новичок, я стараюсь придерживаться формы, насколько могу. – Aidal

+0

Это невозможно сделать с помощью форм. Ближе всего вы можете отвлечь некоторые части через [DependencyService] (https://developer.xamarin.com/guides/xamarin-forms/dependency-service/). – Nfear

ответ

3

У каждой платформы поддержка XF имеет собственный механизм для печати. XF не предоставляет абстракций для печати кросс-платформенным способом. Вам нужно будет написать логику печати для каждого слоя и выставить ее на XF, используя DependencyService (или какой-либо другой движок DI).

+0

Хорошо, я сейчас смотрю на DependencyService, так как похоже, что мне понадобится это для многих других вещей, а позже. – Aidal

0

Вы можете обрабатывать печать списков/счетов-фактур .. с помощью компонента xfinium pdf из xamarin componentstore. При том, что вы создаете _pdffile, а затем вызвать следующий метод, который запускает AdobeReader, где вы можете выбрать принтер (в моем случае Google Виртуального)

 public void printPdfToCloud(string _pdffile) 
     { 
      try 
      { 
       var saveto = System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(), "YourApp/"+_pdffile); 
       string file_path = saveto; 
       if (System.IO.File.Exists(file_path)) 
       { 
        Android.Net.Uri pdfFile = Android.Net.Uri.FromFile(new Java.IO.File(file_path)); 
        Intent pdfIntent = new Intent(Intent.ActionView); 
        pdfIntent.SetPackage("com.adobe.reader"); 
        pdfIntent.SetDataAndType(pdfFile, "application/pdf"); 
        pdfIntent.SetFlags(ActivityFlags.NoHistory); 
        StartActivity(pdfIntent); 


       }else 

       { 
        // give a note that the file does not exist 
       } 

      } 



      catch (Exception E) 
      { 
       // Do some Error dialog 
      } 

     } 
+0

Это создает PDF-файл и печатает его?Есть ли способ подавить некоторые диалоги при печати? - То, что мне нужно создать, будет печатать много, поэтому меньше диалогов, которые пользователь представляет для лучшего. – Aidal

+0

моя часть кода печатает только PDF. Но очень просто создать pdf-файл с xfinium. Посмотрите на их запуск в магазине компонентов. – user1230268

+0

нет диалога при создании pdf. только сообщения, такие как страница ... добавлены. нет необходимости в пользовательском взаимодействии, пока окончательная печать не начнется. это означает 1 взаимодействие на один документ. – user1230268

Смежные вопросы