android 開發 將view儲存為image的實現及將html儲存為pdf格式

來源:互聯網
上載者:User

標籤:bool   flush   public   stack   ase   font   absolute   trace   cti   

一、將view儲存為image


public class ImageHelper {
  ///將view儲存到bitmap中 public Bitmap createBitmap(View view) { int widthSpec = View.MeasureSpec.makeMeasureSpec(view.getLayoutParams().width, View.MeasureSpec.EXACTLY); int heightSpec = View.MeasureSpec.makeMeasureSpec(view.getLayoutParams().height, View.MeasureSpec.EXACTLY); view.measure(widthSpec, heightSpec); int measureWidth = view.getMeasuredWidth(); int measureHeight = view.getMeasuredHeight(); view.layout(0, 0, measureWidth, measureHeight); int width = view.getWidth(); int height = view.getHeight(); Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.draw(canvas); return bitmap; } /** * 儲存bitmap到本地並拷貝並重新整理相簿 * * @param context 上下文 * @param mBitmap 圖片資訊 * @param savePath 儲存路徑(臨時) * @param fileName 檔案名稱 * @return */ //public String saveBitmap(Context context,Bitmap mBitmap,String savePath,String fileName) { public String saveBitmap(Context context,Bitmap mBitmap,String savePath) { File filePic; try { filePic = new File(savePath); if (!filePic.exists()) { filePic.getParentFile().mkdirs(); filePic.createNewFile(); } FileOutputStream fos = new FileOutputStream(filePic); mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return "儲存圖片到本地時報錯:"+e.getMessage(); } // 其次把檔案插入到系統圖庫// try {// MediaStore.Images.Media.insertImage(context.getContentResolver(),// filePic.getAbsolutePath(), fileName, null);// //MyToastUtils.showShortToast(context, "儲存成功");// } catch (FileNotFoundException e) {// //MyToastUtils.showShortToast(context, "儲存失敗");// e.printStackTrace();// return "把檔案插入到系統圖庫失敗:"+e.getMessage();// } // 最後通知圖庫更新 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(filePic.getPath())))); return "Success"; }}

 二、將html代碼儲存為pdf

需要引入三個jar包:itextpdf-5.5.jar、jsoup-1.7.jar、xmlworker-5.5.3.jar

public class PDFHelper {    ///儲存檔案的方法    public String createPDF(String rawHTML, String fileName, ContextWrapper context){        File file = new File(fileName);        try{            Document document = new Document();            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));            document.open();            //  HTML            String htmlText = Jsoup.clean( rawHTML, Whitelist.relaxed() );            InputStream inputStream = new ByteArrayInputStream( htmlText.getBytes() );            //  PDF            XMLWorkerHelper.getInstance().parseXHtml(writer, document,                    inputStream, null, Charset.defaultCharset(), new MyFont());            document.close();            return "";        } catch (FileNotFoundException e) {            e.printStackTrace();            return "Error|"+e.getMessage();        } catch (DocumentException e) {            e.printStackTrace();            return "Error|"+e.getMessage();        } catch (IOException e) {            e.printStackTrace();            return "Error|"+e.getMessage();        }    }    public class MyFont implements FontProvider {        private static final String FONT_PATH = "/system/fonts/DroidSansFallback.ttf";        private static final String FONT_ALIAS = "my_font";        public MyFont() {            FontFactory.register(FONT_PATH, FONT_ALIAS);        }        @Override        public Font getFont(String fontname, String encoding, boolean embedded,                            float size, int style, BaseColor color) {            return FontFactory.getFont(FONT_ALIAS, BaseFont.IDENTITY_H,                    BaseFont.EMBEDDED, size, style, color);        }        @Override        public boolean isRegistered(String name) {            return name.equals(FONT_ALIAS);        }    }}

 


android 開發 將view儲存為image的實現及將html儲存為pdf格式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.