2016-03-01 491 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