2016-03-01 23 views
3

我是Xamarin的新手,我目前正在使用Xamarin.Forms製作樣本或「概念驗證」應用程序。從Xamarin.Forms應用打印

我應該從這個應用程序執行打印任務,雖然我現在還沒有確定要打印什麼(屏幕,標籤的內容,文件等)。

無論哪種方式,從Xamarin.Forms應用程序打印最簡單的方法是什麼? (當前目標主要是Android 4.4+)。

我希望這不是太複雜了:)

編輯:

好讓我更新這個帖子的原文可能有點雄心勃勃/含糊。

我有一個Xamarin.Forms項目(+一個Android部分),我在項目的XF部分有一些HTML需要進入WebView並打印出來。 從我所瞭解的情況來看,WebView必須在項目的Android部分完成,因爲這是處理打印的地方。 我希望這可以從代碼完成,因爲我不需要顯示WebView,只是打印它的內容。 該項目的Android部分只有MainActivity,沒有佈局或XAML文件。 我不知道在哪裏添加WebView或如何訪問它(除了DependecyService在這裏似乎是一個流行詞),所以我有點卡在這裏。

我在想這個任務應該對一個比我多一點Xamarin經驗的人來說是微不足道的。

+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不以跨平臺的方式爲打印提供任何抽象。您需要爲每層編寫打印邏輯並使用DependencyService(或其他一些DI引擎)將其暴露給XF。

+0

好吧,我目前正在研究DependencyService的事情,因爲它看起來像我以後會需要它的很多其他的東西。 – Aidal

0

您可以使用xamarin組件庫中的xfinium pdf組件處理列表/發票的打印。與您建立_pdffile,然後調用它開始從那裏你可以選擇打印機的adobereader(在我的情況下,谷歌CloudPrint中)以下的方法

 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。但使用xfinium創建pdf非常簡單。查看他們在組件存儲中獲取的startet。 – user1230268

+0

在創建pdf時沒有對話框。只有像頁面的消息...添加。在最終打印開始之前不需要用戶交互。這意味着每個文檔1次交互。 – user1230268