android 4.4打印功能

原创 2016年05月30日 15:14:48

Android 4.4goole提供了打印的统一接口,通过使用Android 的api,加上各个厂商提供的打印插件,实现起来相对比较容易些,因为之前在网上下载了一些打印app,连上打印机后打印不出来,有的就是按照提示下载驱动,同样无法打印,所以,最后选择的是Android api+厂家的的打印插件,

目前Android提供的比较容易的是打印图片和webview,代码相对比较简单

private void printPicture(Bitmap bitmap) {
        PrintHelper photoPrinter = new PrintHelper(this);
        photoPrinter.setScaleMode(PrintHelper.SCALE_MODE_FIT);

        photoPrinter.printBitmap("droids.jpg - test print", bitmap);
    }


打印webview设置自定义字体,首先将字体库放到assert子目录下:

InputStream in = new FileInputStream(new File(path));
    //    InputStream    in = getAssets().open("beihairen.doc");
            int len = in.available();
            byte[] buff = new byte[len];
            in.read(buff);
            String html = new String(buff, "UTF-8");

            html = html.replace("@fontPath0", "../font/fs_GBK.TTF");//设置webview中的字体为自定义的字体
            html = html.replace("@fontPath1", "../font/fzgfs.TTF");
            String baseurl = "file:///android_asset/html/";
            mwebView.loadDataWithBaseURL(baseurl, html, "text/html", "UTF-8",
                    null);
            mwebView.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    // TODO Auto-generated method stub
                    super.onPageFinished(view, url);
                    createWebPrintJob(mwebView);
                }
            });

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    private void createWebPrintJob(WebView webView) {
    
        // Get a PrintManager instance
        PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
        
        // Get a print adapter instance
        PrintDocumentAdapter printAdapter = webView
                .createPrintDocumentAdapter();
        // Create a print job with name and adapter instance
        String jobName = getString(R.string.app_name) + " Document";
        PrintJob printJob = printManager.print(jobName, printAdapter,
                new PrintAttributes.Builder().build());
    }

如果需要自定义字体html页面设置的style:

<style>
    .text0 { font-family: simsun; line-height:30.0pt;font-size:16.0pt;line-height:26.0pt}
    @font-face {
       font-family: simsun;
       src:url(@fontPath0);
    }
    .text1 { font-family: fangsong; line-height:30.0pt;font-size:16.0pt;}
    @font-face {
       font-family: fangsong;
       src:url(../font/fangsong.ttf);
    }
  .text3 {
    list-style: outside none none; border-bottom: 1px solid rgb(15, 15, 15);
    font-family: fangsong; line-height:30.0pt;font-size:14.0pt;
  }
  .text4 {
    font-family: fangsong; line-height:30.0pt;font-size:14.0pt;
  }  
    .text2 { font-family: fangzheng; line-height:30.0pt;text-align:center;font-size:22.0pt;}
    @font-face {
       font-family: fangzheng;
       src:url(../font/fzgfs.TTF);
    }
  li{
        list-style: outside none none; border-bottom: 1px solid rgb(15, 15, 15);font-size:14.0pt;
    font-family: fangsong; line-height:30.0pt;font-size:16.0pt;}
    }
</style>

打印pdf文件

打印pdf文档自定义adapter

PrintDocumentAdapter pda = new PrintDocumentAdapter() {

        @Override
        public void onLayout(PrintAttributes oldAttributes,
                PrintAttributes newAttributes,
                CancellationSignal cancellationSignal,
                LayoutResultCallback callback, Bundle extras) {
            if (cancellationSignal.isCanceled()) {
                callback.onLayoutCancelled();
                return;
            }
            PrintDocumentInfo info = new PrintDocumentInfo.Builder(
                    "printer_qr_code.pdf")
                    .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)
                    .setPageCount(1).build();//setPageCount(1)不设置打印所有页
            callback.onLayoutFinished(info, true);

        }

        @Override
        public void onWrite(PageRange[] pages,
                ParcelFileDescriptor destination,
                CancellationSignal cancellationSignal,
                WriteResultCallback callback) {
            // TODO Auto-generated method stub
            InputStream input = null;
            OutputStream output = null;

            try {

                input = getAssets().open("beihairen.pdf");
                output = new FileOutputStream(destination.getFileDescriptor());

                byte[] buf = new byte[1024];
                int bytesRead;

                while ((bytesRead = input.read(buf)) > 0) {
                    output.write(buf, 0, bytesRead);
                }

                callback.onWriteFinished(new PageRange[] { PageRange.ALL_PAGES });

            } catch (FileNotFoundException ee) {
                // Catch exception
            } catch (Exception e) {
                // Catch exception
            } finally {
                try {
                    input.close();
                    output.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    };

参考:http://blog.csdn.net/sahadev_/article/details/51313384

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

读书笔记

1.  Getting Started 1.1  Building YourFirst App 1.1.1  Createing anAndroid Project 1.1.2  Running Yo...

android4.4 系统时间同步,添加NTP备份地址功能

android4.4 系统时间同步,添加NTP备份地址功能

Android 4.4(API 19)闹钟管理与计步器功能

Android 4.4好消息是从4.4开始,安卓系统自带计步传感器了,这样就再也不用我们自己通过监测加速传感器、重力传感器的数值变化去实现计步功能了,而且谷歌做的相当省电。 当然坏消息就是我们在使用...

Android 4.4新功能

网上查了一下 kk版本有如下新功能: 1、新的电话拨号应用,可快速搜索人名,甚至是地名 2、Hangouts直接整合了原来的短信应用,现在用Hangouts可以解决短信、网络文字、视频、彩...

Android4.4添加重启功能

需要gai dong frameworks\base\core\java\android\view\WindowManagerPolicy.java frameworks\base\core\re...

实现Android4.4系统设置分页滑动浏览功能

需求描述:     由于手机功能越来越完善,相应的偏好设置也就越来越多;从用户体验的角度考虑,为了让用户能够在短时间内对常用的偏好设置进行操作,如WIFI,蜂窝数据等。单独将一些常用的设置功能单...

Android KitKat 4.4平台开发-添加USB ADB和MTP功能支持

ADB和MTP是Android基于USB实现的两个重要功能,极大地方便了用户在PC与Android设备之间的互操作,比如传输文件、安装应用、开发调试应用。   本文讲述如何在特点软硬件平台下支持And...

Android KitKat 4.4 Wifi移植之AP模式与网络共享功能调试记录

Tethering技术在移动平台上已经运用的越来越广泛了,它可以把移动设备当做一个接入点,其它的设备可以通过Wi-Fi,USB或是Bluetooth等方式连接到此移动设备。在Android中可以将Wi...

使用Android4.4新增新媒体功能中的音量增强器LoudnessEnhancer实现仿酷狗音乐一键强音功能

转载请注明:http://blog.csdn.net/u012854870/article/details/58604351 由于自己开发的音乐播放器,安装在公司自己生产的平板上,播放音乐的时候,当...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)