久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Java 實現word模板轉為pdf

瀏覽:200日期:2022-05-24 17:26:24
1. pom相關依賴

工具poi-tl (操作word文檔模板) + jacob (將操作后的word模板轉為pdf)

<!-- poi-tl的pom依賴 --> <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.9.1</version></dependency>

<!-- jacob的pom依賴(需自行導入.jar包) --><dependency> <groupId>com.jacob</groupId> <artifactId>jacob</artifactId> <version>1.17</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/lib/jacob.jar</systemPath></dependency>2. 對word模板進行插入數據操作

使用poi-tl操作word需要創建一個用于向word插入數據的Map<String, Object>集合, word模板中標簽格式為'{{標簽}}', 其中標簽內容為Map<String, Object> 的key.

// 項目根路徑String abPath = new File('').getAbsolutePath() + '/src/main/resources';// 創建用于插入數據的MapMap<String, Object> map = new HashMap<>();map.put(<k>, <v>);...// 填充word文檔XWPFTemplate template = XWPFTemplate.compile(abPath + '<模板路徑>').render(map);// 輸出文檔template.writeAndClose(new FileOutPutStream('<輸出路徑>'));3. 對word模板的表格執行插入數據操作(動態表格)

使用poi-tl操作word的表格,動態的插入數據,需要用到poi-tl的可選插件進行自定義渲染策略, 首先在word需要操作的表格中的任意單元格添加標簽“{{標簽}}”

自定義渲染策略

/** * 自定義渲染策略 * * @author */public class DetailTablePolicy extends DynamicTableRenderPolicy { // 表格起始行行數 int tableStartRow = 1; /** * 自定義渲染策略 * * @data 傳入的封裝好的數據 */ @Override public void render(XWPFTable table, Object data) throws Exception { // 如果數據為空,直接返回 if (null == data) return; // 封裝數據List的數據封裝對象 NdrwhkhzbData detailData = (NdrwhkhzbData) data;// 獲取當前列表行高 int height = table.getRow(2).getHeight(); // 從封裝對象中獲取數據集合 List<RowRenderData> datas = detailData.getNdrwhkhzbs(); if (null != datas) { // 循環移除空白表格中數據數量的空白行 for (int i = 1; i < datas.size() + 2; i++) {table.removeRow(i); } // 循環插入數據 for (int i = 0; i < datas.size(); i++) {// 新增一行空白行XWPFTableRow insertNewTableRow = table.insertNewTableRow(tableStartRow);// 設置行高insertNewTableRow.setHeight(height);// 循環添加單元格(4為每行單元格數量)for (int j = 0; j < 4; j++) { insertNewTableRow.createCell();}// 填充表格TableRenderPolicy.Helper.renderRow(table.getRow(tableStartRow), datas.get(i)); } } }}

把自定義渲染策略當做工具類, 在主邏輯中直接配置使用

/** * 操作年度任務和考核指標表 * * @throws IOException 輸入輸出流異常 */ private void createNdrwhkhzb(Integer uid, String dirPath) throws IOException { PageData datas = new PageData(); NdrwhkhzbData detailTable = new NdrwhkhzbData(); List<RowRenderData> nds = new ArrayList<>(); // 根據uid查詢年度任務和考核指標數據 List<NdrwhkhzbEntity> list = ndrwhkhzbService.selectNdrwhkhzbByUid(uid); for (NdrwhkhzbEntity ndrwhkhzbEntity : list) { RowRenderData rrd = Rows.of(ndrwhkhzbEntity.getNd(), ndrwhkhzbEntity.getNdrw(), ndrwhkhzbEntity.getNdkhzb() , ndrwhkhzbEntity.getZyrwdsjjd()).center().create(); nds.add(rrd); } detailTable.setNdrwhkhzbs(nds); datas.setNdrwhkhzbData(detailTable); // 配置表格 Configure config = Configure.builder().bind('detail_table', new DetailTablePolicy()).build(); // 調用渲染策略進行填充 XWPFTemplate template =XWPFTemplate.compile(dirPath + '/' + uid + '_Complete.docx', config).render(datas); // 寫入表格中 template.writeToFile(dirPath + '/' + uid + '_Complete.docx'); }

用到的一些實體類

// PageDatapublic class PageData { @Name('detail_table') private NdrwhkhzbData ndrwhkhzbData; public NdrwhkhzbData getNdrwhkhzbData() { return ndrwhkhzbData; } public void setNdrwhkhzbData(NdrwhkhzbData ndrwhkhzbData) { this.ndrwhkhzbData = ndrwhkhzbData; }}// NdrwhkhzbDatapublic class NdrwhkhzbData { private List<RowRenderData> ndrwhkhzbs; public List<RowRenderData> getNdrwhkhzbs() { return ndrwhkhzbs; } public void setNdrwhkhzbs(List<RowRenderData> ndrwhkhzbs) { this.ndrwhkhzbs = ndrwhkhzbs; }}4. 將編輯好的Word轉為pdf格式(jacob)

這里將word轉為pdf時需要用到jacob, 這里需要將jacob的dll文件放到jdk和jre的bin目錄下, 下載的jacob中dll文件一般為兩個版本, X86為32位, X64為64位, 根據自己安裝的jdk版本添加所對應的dll文件

/** 將 .docx 轉換為 .pdf*/ ActiveXComponent app = null; String wordFile = dirPath + '/' + uid + '_Complete.docx'; String pdfFile = dirPath + '/' + dirName + '.pdf'; System.out.println('開始轉換...'); // 開始時間 long start = System.currentTimeMillis(); try { // 打開word app = new ActiveXComponent('Word.Application'); // 設置word不可見,很多博客下面這里都寫了這一句話,其實是沒有必要的,因為默認就是不可見的,如果設置可見就是會打開一個word文檔,對于轉化為pdf明顯是沒有必要的 //app.setProperty('Visible', false); // 獲得word中所有打開的文檔 Dispatch documents = app.getProperty('Documents').toDispatch(); System.out.println('打開文件: ' + wordFile); // 打開文檔 Dispatch documentP = Dispatch.call(documents, 'Open', wordFile, false, true).toDispatch(); // 如果文件存在的話,不會覆蓋,會直接報錯,所以我們需要判斷文件是否存在 File target = new File(pdfFile); if (target.exists()) { target.delete(); } System.out.println('另存為: ' + pdfFile); // 另存為,將文檔報錯為pdf,其中word保存為pdf的格式宏的值是17 Dispatch.call(documentP, 'SaveAs', pdfFile, 17); // 關閉文檔 Dispatch.call(documentP, 'Close', false); // 結束時間 long end = System.currentTimeMillis(); System.out.println('轉換成功,用時:' + (end - start) + 'ms'); } catch (Exception e) { e.getMessage(); System.out.println('轉換失敗' + e.getMessage()); } finally { // 關閉office app.invoke('Quit', 0); }5. 通過lo流將生成好的文件傳到瀏覽器下載

/* * 下載pdf */String fileName = dirName + '.pdf';File file = new File(dirPath + '/' + fileName);if (file.exists()) { BufferedInputStream bis = null; FileInputStream fis = null; try { response.setHeader('Content-disposition', 'attachment; filename=' + fileName); byte[] buff = new byte[2048]; fis = new FileInputStream(file); bis = new BufferedInputStream(fis); OutputStream os = response.getOutputStream(); int i = bis.read(buff); while (i != -1) { os.write(buff, 0, i); i = bis.read(buff); } os.close(); } catch (Exception e) { e.printStackTrace(); } finally { assert fis != null; fis.close(); assert bis != null; bis.close(); }}6. 最后的Controller整體代碼

package org.example.controller;import com.deepoove.poi.XWPFTemplate;import com.deepoove.poi.config.Configure;import com.deepoove.poi.data.Includes;import com.deepoove.poi.data.RowRenderData;import com.deepoove.poi.data.Rows;import com.jacob.activeX.ActiveXComponent;import com.jacob.com.Dispatch;import org.example.entity.*;import org.example.service.*;import org.example.utils.DetailTablePolicy;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import org.springframework.util.DigestUtils;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.*;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * 創建pdf控制器 * * @author: yoojyn * @data: 2021/1/11 */@Controller@RequestMapping('/createPdfController')public class CreatePdfController { @Autowired private IKtfmService ktfmService; @Autowired private IKtjbxxService ktjbxxService; @Autowired private IKtbyxfxService ktbyxfxService; @Autowired private IZtmbhkhzbService ztmbhkhzbService; @Autowired private INdrwhkhzbService ndrwhkhzbService; @Autowired private IKtjfysjsmService ktjfysjsmService; @Autowired private IXjxhkxxfxService xjxhkxxfxService; /** * 生成word文件 * * @param session 作用域 */ @Scope('prototype') @ResponseBody @RequestMapping('/createPdf') public void createPdf(HttpSession session, HttpServletResponse response) { // 獲取當前用戶id Userinfo loginedUser = (Userinfo) session.getAttribute('loginedUser'); Integer uid = loginedUser.getUid(); String dirName = DigestUtils.md5DigestAsHex((uid + '_國家重大專項任務合同申報').getBytes()); String dirPath = 'D:/' + dirName; String abPath = new File('').getAbsolutePath() + '/src/main/resources'; try { // 創建用于存儲中間文件的文件夾 new File(dirPath).mkdirs(); // 創建用于存儲數據的map集合 Map<String, Object> map = new HashMap<>(); // 獲取封面數據 createKtfm(uid, map); // 獲取基本信息數據 createJbxx(uid, map); // 獲取必要性分析 createByxfx(uid, map); // 獲取總體目標和考核指標 createZtmbhkhzb(uid, map); // 獲取經費預算及說明 createJfysjsm(uid, map); // 查詢附件 XjxhkxxfxEntity xjxhkxxfxEntity = xjxhkxxfxService.selectXjxhkxxfxByUid(uid); // 設置下一步處理表格要用到的標簽 map.put('page9', Includes.ofLocal(abPath + '/static/file/upload/' + xjxhkxxfxEntity.getFilename()).create()); map.put('detail_table', '{{detail_table}}'); // 填充文檔 XWPFTemplate template = XWPFTemplate.compile(abPath + '/static/file/moban/moban.docx').render(map); // 輸出文檔 template.writeAndClose(new FileOutputStream(dirPath + '/' + uid + '_Complete.docx')); // 操作年度任務和考核指標表 createNdrwhkhzb(uid, dirPath); } catch (IOException e) { e.printStackTrace(); } try { /* * 將 .docx 轉換為 .pdf */ ActiveXComponent app = null; String wordFile = dirPath + '/' + uid + '_Complete.docx'; String pdfFile = dirPath + '/' + dirName + '.pdf'; System.out.println('開始轉換...'); // 開始時間 long start = System.currentTimeMillis(); try {// 打開wordapp = new ActiveXComponent('Word.Application');// 設置word不可見,很多博客下面這里都寫了這一句話,其實是沒有必要的,因為默認就是不可見的,如果設置可見就是會打開一個word文檔,對于轉化為pdf明顯是沒有必要的//app.setProperty('Visible', false);// 獲得word中所有打開的文檔Dispatch documents = app.getProperty('Documents').toDispatch();System.out.println('打開文件: ' + wordFile);// 打開文檔Dispatch documentP = Dispatch.call(documents, 'Open', wordFile, false, true).toDispatch();// 如果文件存在的話,不會覆蓋,會直接報錯,所以我們需要判斷文件是否存在File target = new File(pdfFile);if (target.exists()) { target.delete();}System.out.println('另存為: ' + pdfFile);// 另存為,將文檔報錯為pdf,其中word保存為pdf的格式宏的值是17Dispatch.call(documentP, 'SaveAs', pdfFile, 17);// 關閉文檔Dispatch.call(documentP, 'Close', false);// 結束時間long end = System.currentTimeMillis();System.out.println('轉換成功,用時:' + (end - start) + 'ms'); } catch (Exception e) {e.getMessage();System.out.println('轉換失敗' + e.getMessage()); } finally {// 關閉officeapp.invoke('Quit', 0); } /* * 下載pdf */ String fileName = dirName + '.pdf'; File file = new File(dirPath + '/' + fileName); if (file.exists()) {BufferedInputStream bis = null;FileInputStream fis = null;try { response.setHeader('Content-disposition', 'attachment; filename=' + fileName); byte[] buff = new byte[2048]; fis = new FileInputStream(file); bis = new BufferedInputStream(fis); OutputStream os = response.getOutputStream(); int i = bis.read(buff); while (i != -1) { os.write(buff, 0, i); i = bis.read(buff); } os.close();} catch (Exception e) { e.printStackTrace();} finally { assert fis != null; fis.close(); assert bis != null; bis.close();} } } catch (Exception e) { e.printStackTrace(); } finally { delDir(new File(dirPath)); } } /** * 刪除文件夾 * * @param file 文件夾對象 */ private void delDir(File file) { if (file.isFile()) { file.delete(); } if (file.isDirectory()) { File[] files = file.listFiles(); for (File f : files) {f.delete(); } file.delete(); } } /** * 儲存經費預算及說明 * * @param uid 用戶id * @param map 儲存數據的map集合 */ private void createJfysjsm(Integer uid, Map<String, Object> map) { // 根據用戶編號查詢經費預算及說明 KtjfysjsmEntity ktjfysjsmEntity = ktjfysjsmService.getDatesByUid(uid); // 添加到map集合 map.put('zjzyczzj', ktjfysjsmEntity.getZjzyczzj()); map.put('zjdfczzj', ktjfysjsmEntity.getZjdfczzj()); map.put('zjdwzczj', ktjfysjsmEntity.getZjdwzczj()); map.put('zjqt', ktjfysjsmEntity.getZjqt()); } /** * 操作年度任務和考核指標表 * * @throws IOException 輸入輸出流異常 */ private void createNdrwhkhzb(Integer uid, String dirPath) throws IOException { PageData datas = new PageData(); NdrwhkhzbData detailTable = new NdrwhkhzbData(); List<RowRenderData> nds = new ArrayList<>(); // 根據uid查詢年度任務和考核指標數據 List<NdrwhkhzbEntity> list = ndrwhkhzbService.selectNdrwhkhzbByUid(uid); for (NdrwhkhzbEntity ndrwhkhzbEntity : list) { RowRenderData rrd = Rows.of(ndrwhkhzbEntity.getNd(), ndrwhkhzbEntity.getNdrw(), ndrwhkhzbEntity.getNdkhzb() , ndrwhkhzbEntity.getZyrwdsjjd()).center().create(); nds.add(rrd); } detailTable.setNdrwhkhzbs(nds); datas.setNdrwhkhzbData(detailTable); Configure config = Configure.builder().bind('detail_table', new DetailTablePolicy()).build(); XWPFTemplate template =XWPFTemplate.compile(dirPath + '/' + uid + '_Complete.docx', config).render(datas); template.writeToFile(dirPath + '/' + uid + '_Complete.docx'); } /** * 儲存總體目標和考核指標 * * @param uid 用戶id * @param map 儲存數據的map集合 */ private void createZtmbhkhzb(Integer uid, Map<String, Object> map) { // 根據用戶編號查詢總體目標和考核指標 ZtmbhkhzbEntity ztmbhkhzbEntity = ztmbhkhzbService.selectZtmbhkhzbByUid(uid); // 添加到map集合 map.put('page6', ztmbhkhzbEntity.getZtmbhkhzb()); } /** * 儲存必要性分析數據 * * @param uid 用戶id * @param map 儲存數據的map集合 */ private void createByxfx(Integer uid, Map<String, Object> map) { // 根據用戶編號查詢必要性分析數據 KtbyxfxEntityWithBLOBs ktbyxfxEntity = ktbyxfxService.selectKtbyxfxByUid(uid); // 添加到map集合 map.put('page5_ktyzx', ktbyxfxEntity.getKtyzx()); map.put('page5_ktysfgc', ktbyxfxEntity.getKtysf()); map.put('page5_ktyq', ktbyxfxEntity.getKtyq()); } /** * 儲存基本信息數據 * * @param uid 用戶編號 * @param map 儲存數據的map集合 */ private void createJbxx(Integer uid, Map<String, Object> map) { // 根據用戶編號查詢基本信息數據 KcjbxxEntity kcjbxxEntity = ktjbxxService.selectKtjbxxByUid(uid); // 添加到map集合 map.put('page3_ktmc', kcjbxxEntity.getKtmc()); map.put('page3_ktmj', kcjbxxEntity.getKtmj()); map.put('page3_yjwcsj', kcjbxxEntity.getYjwcsj()); map.put('page3_kyhdlx', kcjbxxEntity.getKthdlx()); map.put('page3_yqcglx', kcjbxxEntity.getYqcglx()); map.put('page3_dwmc', kcjbxxEntity.getDwmc()); map.put('page3_dwxz', kcjbxxEntity.getDwxz()); map.put('page3_txdz', kcjbxxEntity.getTxdz()); map.put('page3_yzbm', kcjbxxEntity.getYzbm()); map.put('page3_szdq', kcjbxxEntity.getSzdq()); map.put('page3_dwzgbm', kcjbxxEntity.getDwzgbm()); map.put('page3_lxdh', kcjbxxEntity.getLxdh()); map.put('page3_zzjgdm', kcjbxxEntity.getZzjgdm()); map.put('page3_czhm', kcjbxxEntity.getCzhm()); map.put('page3_dwclsj', kcjbxxEntity.getDwclsj()); map.put('page3_dzxx', kcjbxxEntity.getDzxx()); } /** * 儲存課題封面數據 * * @param uid 用戶編號 * @param map 儲存數據的map集合 */ private void createKtfm(Integer uid, Map<String, Object> map) { // 根據用戶編號查詢封面數據 KtfmEntity ktfmEntity = ktfmService.selectKtfmByUid(uid); // 添加到map集合 map.put('page1_zxmc', '5G總體及關鍵器件'); map.put('page1_xmbh', '2016ZX03001_001'); map.put('page1_xmmc', '新一代寬帶無線移動通信網'); map.put('page1_ktbh', '2016ZX03001_001_002'); map.put('page1_ktmc', '5G高性能基站A/D、D/A轉換器試驗樣片研發'); map.put('page1_zrdw', 'program_test'); map.put('page1_ktzz', ktfmEntity.getKtfzr()); map.put('page1_ktnx1', '2016-01-01'); map.put('page1_ktnx2', '2017-12-31'); map.put('page1_tbrq', '2020-12-28'); map.put('page1_nian', '二一'); map.put('page1_yue', '一'); }}

以上就是Java 實現word模板轉為pdf的詳細內容,更多關于Java word模板轉為pdf的資料請關注好吧啦網其它相關文章!

標簽: word
相關文章:
主站蜘蛛池模板: 成人亚洲 | 天天夜夜操| 欧美性猛交xxxx黑人猛交 | 一区二区视频网 | 亚洲国产精品一区 | 亚洲精品一区二区三区蜜桃久 | 日韩国产一区二区三区 | 奇米av| 亚洲精品久久久久一区二区三区 | 亚洲国产二区 | 国产综合精品一区二区三区 | 久久久国产精品视频 | 亚洲国产精品成人久久久 | 亚洲精品免费在线 | 久久精品一区二区 | 夫妻午夜影院 | 亚洲精品国产偷自在线观看 | 国产精品欧美一区二区 | 一级黄色片日本 | 精品免费国产 | 亚洲一区视频在线 | 91资源在线观看 | 日韩视频在线观看视频 | 国产乱码精品一品二品 | 亚洲国产成人精品女人 | 亚洲精品久久久久久国产精华液 | 国产精品久久久久久久久久免费看 | 国产成人片 | av在线一区二区三区 | 国产激情网| 国产91富婆养生按摩会所 | 欧美性久久 | 密桃av| 看特级毛片 | 欧美a级成人淫片免费看 | 欧美国产日韩一区 | 国产一级片 | 看久久毛片| 国产精品1区2区3区 中文字幕一区二区三区四区 | 男女激情网址 | 日韩中文字幕免费在线 | 91资源在线 | 国产精品视频免费观看 | 国产96视频 | 在线视频 亚洲 | 国产在线免费 | 日本精品视频在线观看 | 久久久久久久国产精品 | 婷婷在线视频 | 一级特黄aaa大片在线观看 | 日日夜夜一区二区 | 欧美a网 | 亚洲国产成人av | 国产乱码精品一区二区三区中文 | 免费三级黄色 | 亚洲一区欧美一区 | 国产一区二区视频在线观看 | 99re在线视频 | 久久精品无码一区二区日韩av | 国产一区二区精品丝袜 | 中文字幕亚洲一区 | 精品视频在线免费观看 | 久久精品这里只有精品 | 成人免费淫片aa视频免费 | 久久精品一区二区三区四区 | 国产在线a | 91高清视频在线观看 | 黄在线免费观看 | 国产一区二区av | 国产精品一区在线看 | 91久久艹| 久久精品免费视频播放 | 一级黄色片网站 | 国产精品久久久久久久岛一牛影视 | 日韩欧美网| 91欧美在线 | 国产成人午夜高潮毛片 | 国产91富婆养生按摩会所 | 欧美精品一区二区三区免费视频 | 国产精品久久久久久久电影 | 艹艹网 | 日韩在线视频一区 | 国产精品一区av | 久久精品视频免费 | 国产精品久久久久久久久久99 | 黄色国产一级视频 | 玖玖久久 | 国产伦精品一区二区三区四区视频_ | 高清国产午夜精品久久久久久 | 久久av一区二区三区 | 国产美女久久久 | 精品久久久久久久久久久 | 中文字幕 国产 | 北条麻妃国产九九九精品小说 | 欧美日韩亚洲国产 | 97久久精品人人做人人爽50路 | 久久久久久久久久久久91 | 91在线观看视频 | 日韩精品一区二区三区四区五区 | 国产精品丝袜视频 | 国产精品久久久久久久久久久久冷 | 国产一区二区三区色淫影院 | 中文字幕亚洲一区 | 色爱av | 亚洲一区二区三区免费 | 欧美一级c片 | 国产黄色影视 | 欧美午夜一区 | 久久亚洲高清 | 亚洲伦理在线 | 成人免费一区二区三区视频网站 | 亚洲综合视频 | 亚洲成av人片一区二区梦乃 | 91精品久久久久久久久久入口 | 国产精品二区三区 | 91精品一区二区 | 精品无人乱码一区二区三区的优势 | 久久中文视频 | 成人不卡在线观看 | 日韩精品www | 精品国产欧美 | 日韩精品视频免费看 | 久久久999成人 | 国产精品高清在线 | 成人一区在线观看 | 国产成人免费视频网站高清观看视频 | 午夜老湿影院 | 91久久精品一区二区二区 | 在线视频中文字幕 | 日韩成人免费视频 | 久久免费精品视频 | 黄视频免费在线 | 国产精品99视频 | 国产福利91精品一区二区 | 黄色在线| 亚洲精品在线视频 | 在线播放国产一区二区三区 | 人人操日日干 | 欧美日韩视频网站 | 每日更新亚洲 | 国变精品美女久久久久av爽 | 欧美日本一区 | 国产精品日本一区二区不卡视频 | 成人精品一区 | 成人免费在线观看视频 | 中文字幕亚洲欧美日韩在线不卡 | 九九99久久 | 91se在线 | 久热久热| 7799精品视频天天看 | 日韩三级黄 | 中文字幕精品一区 | 日韩在线视频一区 | 日本一区二区三区四区视频 | 欧美激情欧美激情在线五月 | 美国黄色毛片女人性生活片 | 蜜桃臀一区二区三区 | 日韩精品第一页 | 日日摸日日碰夜夜爽不卡dvd | 精久久| 日韩城人网站 | 亚洲精品在线网站 | 91在线免费看 | 视频一区在线 | 毛片网站在线 | 精品久久久久久国产三级 | 日韩在线小视频 | 精品99久久 | 在线观看国产wwwa级羞羞视频 | 成人在线免费视频 | 亚洲欧洲日韩 | 亚洲高清在线 | 亚洲一区精品视频 | 精品久久中文 | 欧美 日本 国产 | 国产亚洲欧美一区二区 | 日韩精品一区二区三区第95 | 黄色一级大片网站 | 久久久久国产精品一区二区三区 | 国产精品永久在线 | 久久99精品久久久久国产越南 | 日韩综合一区 | 91久久精品一区二区三区 | 一区二区三区视频在线观看 | 成人免费毛片嘿嘿连载视频 | 久久久久久久一区 | 精品国产乱码久久久久久1区2区 | 另类五月 | 亚洲国产精品久久人人爱 | 久久99国产一区二区三区 | 欧美freesex交免费视频 | 午夜精品一区二区三区在线视频 | 亚洲精品一区二区三区中文字幕 | 国产精品福利视频 | 99亚洲国产精品 | 欧美综合视频 | 国产欧美日韩综合精品一 | 国产精品久久久久久久久久 | 国产精品久久久久久久粉嫩 | 成人区一区二区三区 | 欧美三级电影在线播放 | 一二三四在线视频观看社区 | 天天澡天天狠天天天做 | 国产欧美一区二区三区在线看 | 野狼在线社区2017入口 | 精品在线一区二区 | 一区二区三区在线 | 欧 | 99爱在线观看 | 久久精品国产99久久久 | 亚洲国产精品99久久久久久久久 | 国产视频久久精品 | 中文字幕黄色 | 成人做爰69片免费 | 99精品久久精品一区二区爱城 | 精品亚洲国产成av人片传媒 | 久久亚洲一区 | 亚洲欧美日韩一区 | 天天夜夜操 | 国产精品久久国产愉拍 | 国产精品亚洲欧美日韩一区在线 | www.99精品 | 成人欧美 | 精品一区二区三区免费 | 美女超碰| 欧美性猛交一区二区三区精品 | 视频一区 中文字幕 | 日韩日韩 | 日本不卡一区二区 | 成人福利 | www.操操操.com | 成人免费视频视频 | 中文字幕亚洲精品 | 久草热8精品视频在线观看 欧美全黄 | 欧美成人一区二区三区片免费 | 成人av一区二区三区 | 国产亚洲欧美在线 | 国产激情网站 | 69热在线观看 | 日韩欧美在线观看一区二区三区 | 欧美一区久久 | www国产亚洲精品久久网站 | 国产一区二区三区在线免费观看 | 激情久久av一区av二区av三区 | 91免费观看 | 亚洲成人精品久久久 | 久久精品91 | 一区二区三区在线播放 | 欧美另类亚洲 | 久久综合九色综合欧美狠狠 | 亚洲三级在线观看 | 亚洲四区 | 香蕉综合久久 | 久久精品亚洲精品国产欧美kt∨ | 日韩中文字幕无码一区二区三区 | 中文字幕精品一区二区三区精品 | 国产中文字幕一区二区三区 | 午夜激情视频 | 欧美日韩视频在线观看免费 | 伊人免费视频二 | 国产小视频在线观看 | 在线亚洲一区 | 狠狠躁夜夜躁人人爽天天高潮 | 欧美一级二级视频 | 国产精品久久久久久久久久ktv | 欧美日韩一区二区三区免费视频 | 国产不卡视频在线观看 | 狠狠操中文字幕 | 国产精品久久久久免费 | 国产美女永久免费无遮挡 | h片观看| 丁香婷婷久久久综合精品国产 | 91一区二区三区久久国产乱 | 精品国产一区二区三区久久久蜜臀 | 精品日韩一区二区三区 | 欧美日韩视频在线播放 | 特级理论片 | 日韩中文在线 | 国产91在线视频 | 在线免费国产 | 亚洲美女视频在线观看 | 中文字幕在线视频网站 | 国产福利视频 | 久久ri资源网 | 婷五月综合 | 欧美国产日韩在线 | 日日操日日操 | 国产丝袜在线 | 欧美一级做性受免费大片免费 | 成人欧美一区二区三区黑人孕妇 | 亚洲福利| 色婷婷亚洲一区二区三区 | 午夜视频在线观看网站 | 国产精品69毛片高清亚洲 | 亚洲人久久 | 日韩精品久久久久久 | 黑人xxx视频 | 国产午夜精品久久久久久久 | 久久成人免费视频 | 国产高清一区 | 国产午夜精品久久 | 国产精品99久久久久久动医院 | 久久免费99精品久久久久久 | 亚洲乱码国产乱码精品精的特点 | 亚洲成人精品 | 成人三级网址 | 少妇激烈床戏视频 | 日韩免费av网站 | 久久亚洲一区二区三 | 中文字幕av一区 | 欧美在线视频网站 | 久久久国产一区二区三区四区小说 | 久久午夜精品 | 天堂久久久久 | 日本三级在线观看网站 | 国产精品久久久久毛片软件 | 日韩在线国产精品 | 红色av社区 | 狠狠av| 免费的污网站 | 欧美久久精品 | 日韩一区二区不卡 | 在线成人www免费观看视频 | 亚洲依人| 欧美一级在线观看 | 国产在线视频网站 | 香蕉久久网| 日韩成人在线观看 | 夜夜操av| 欧美大片免费高清观看 | 99久久日韩精品视频免费在线观看 | 欧美日韩在线播放 | 欧美理论片在线观看 | 99久久99久久久精品色圆 | 国产精品一二三区 | 欧美激情精品 | 国产乱码精品一区二区三区手机版 | 男女视频网站 | 深夜成人小视频 | 免费av电影在线观看 | 99久久久无码国产精品 | 高清国产一区 | 成年人在线看 | 国产精品乱码一区二区三区 | a级片在线观看 | 国产免费高清 | 精品国产乱码久久久久久久软件 | 精品不卡| 国产成人一区二区三区 | 91一级| 99精品网站| 精品久久久久一区二区三区 | 在线日韩中文字幕 | 男人久久天堂 | 日韩成人影院在线观看 | 一级毛片在线 | 欧美综合久久 | 日韩精品一区二区三区老鸭窝 | 日韩精品一区二区三区在线观看 | av黄色在线观看 | 国产中文| 91在线视频免费播放 | 国产精品久久久久久亚洲调教 | 日本1区2区 | 亚洲精品www久久久久久广东 | 99久久夜色精品国产亚洲1000部 | 国产精品乱码一区二区三区 | 国产精品久久久精品 | 日韩中文不卡 | 国产精品资源在线 | 在线视频 亚洲 | 天天摸天天干 | 黄网站在线播放 | 久久国产欧美日韩精品 | 国产黄色在线观看 | 91精品久久久久久久久久入口 | 成人免费在线观看视频 | 国产成人精品一区一区一区 | 国产精品伊人影院 | 国产精品国产精品国产专区不卡 | 麻豆一区二区三区 | 欧美日韩黄色一区二区 | 国产天天操 | 精品国产一区三区 | 精品一区二区三区在线观看 | 午夜精品久久久久久久99黑人 | 国产精品久久久久久久久久久久久久 | www.99久久久 | 黄色片在线免费观看 | 久久99这里只有精品 | 中文字幕一区二区三区乱码在线 | 亚洲视频二区 | 在线日韩视频 | 久久久精品久久久久 | 91在线视频播放 | 欧美另类专区 | 亚洲综人网| 中文字幕在线视频免费播放 | 色com| 超碰在线观看97 | 亚洲精品在线视频观看 | 欧美黑人一级爽快片淫片高清 | 男女羞羞视频免费在线观看 | 亚洲 欧美 日韩 丝袜 另类 | 欧美偷偷操 | 中文字幕成人 | 欧美一级片在线 | 亚洲一区二区在线看 | 日本人做爰大片免费观看一老师 | 在线激情视频 | 亚洲精品在线免费播放 | 麻豆精品久久久 | 亚洲 精品 综合 精品 自拍 | 亚洲一区二区三区免费 | 欧美一级片在线 | 免费国产一区二区 | 浴室洗澡偷拍一区二区 | 久久久久久av | 欧美在线亚洲 | 中文在线播放 | 国产伦一区 | 日韩在线大片 | 亚洲成人一二区 | 久久综合成人精品亚洲另类欧美 | 高清一区二区三区 | 中文字幕av一区二区三区 | 欧美日韩成人免费 | 日韩一区二区三区在线视频 | 亚洲国产高清高潮精品美女 | 成人在线激情 | 午夜精品一区二区三区在线 | 久久精品亚洲精品 | 精品久久久久久亚洲综合网站 | 国产日韩欧美综合 | 超碰8| 久久国产精品亚洲 | 国产成人午夜 | 国产成人精品一区二区在线 | 国产精品二区三区 | 国产3区 | 在线观看亚洲 | 爱爱爱av| 亚洲精品视频一区 | 久久久影院| 日韩午夜电影 | 久久中文字幕一区 | 精品久久久久久久久久久久 | 在线观看免费视频亚洲 | 国产精品亲子伦av一区二区三区 | 国产高清中文字幕 | 91久久久久久久久久久久久久久久 | 亚洲精品视频在线 | 国产一级片 | 国产51人人成人人人人爽色哟哟 | 亚洲一区二区三区免费视频 | 日本爱爱 | 久久精品国产99国产精品 | 欧美日韩综合精品 | 亚洲啊v| 久久精品国产99 | 国产精品久久久久久久岛一牛影视 | 91精品久久久久久久99 | 午夜精品久久久久久久久久久久久 | 久久精品久久久 | 国产精品精品视频 | 午夜成人在线视频 | 伊人网在线免费观看 | 久久久久国产精品免费免费搜索 | 黄色毛片观看 | 色天天天天色 | 一级毛片免费在线 | 国产一区二区自拍视频 | 午夜精品视频 | 日韩欧美在线观看视频网站 | 欧美日韩国产在线观看 | 亚洲视频成人 | 国产精品二区三区 | 午夜免费福利电影 | 日日爱886| 国产在线观看一区二区三区 | 粉嫩视频在线观看 | 91精品免费在线观看 | 午夜影院入口 | 天天干天天看天天操 | 中文字幕日韩在线 | 亚洲激情第一页 | 波多野结衣一区二区三区中文字幕 | av成人免费在线观看 | 美女91 | 国产黄色一级大片 | 91免费看片网站 | 亚洲一区二区av | 福利久久 | 中文字幕一级 | 精品国产一区二区国模嫣然 | 精品国产黄色片 | 不卡视频一二三区 | 91在线影院| 国产精品11| 国产真实乱全部视频 | 欧美一级片在线 | 欧美日韩在线免费观看 | 日韩欧美手机在线 | 欧美视频精品在线观看 | 日韩在线免费观看网站 | 日本一区视频在线观看 | 日韩在线视频中文字幕 | 久久mm | 中文字幕日韩在线 | 精品视频一区二区三区四区 | 六月婷婷久久 | 日韩欧美一区二区三区免费观看 | 久久一二区 | 欧美日韩一区二区电影 | 日本不卡一区 | 亚洲精品一区二区三区樱花 | 毛片在线网站 | 久久综合一区 | 久久久影视 | 欧美精品理论片大全 | 天堂资源av | 息与子猛烈交尾一区二区 | 久久九精品 | 九九久久精品 | 国产精品一区二区三区在线播放 | 一区在线免费 | 日韩一区二区三区av | 久久精品成人 | 国产精品一区二区三区免费 | 成版人性视频 | 国产精品一区二区三区免费 | 伊人久久综合 | www.操操操 | 国产免费av大片 | 干干日日 | 欧美一区二区三区视频 | 成人精品高清 | 国产日韩一区二区三区 | 人人澡人人射 | 国产黄色大片免费看 | 在线观看欧美日韩 | 成人激情视频在线免费观看 | 国产精品成人3p一区二区三区 | 狠狠躁夜夜躁人人爽天天高潮 | 黄a免费| 国产精品久久久久久久午夜片 | 久久精品二区亚洲w码 | 中文字幕一二三 | 国产一区不卡 | 美女视频黄a | 色视频www在线播放国产人成 | 97精品久久 | 欧美日韩在线观看中文字幕 | 91久久久久久久久久久 | 久久麻豆视频 | 国产亚洲欧美在线 | 日批免费视频 | 国产激情网 | 青青草综合在线 | 一区二区免费在线 | av看片 | 91精品国产日韩91久久久久久 | 亚洲伦理一区 | 欧美激情一区二区三区 | 国产精品99久久免费观看 | 狠狠爱亚洲| 99国产精品久久久 | 精品国产一区二区三区四区 | 在线看免费黄色片 | 欧美日韩在线观看中文字幕 | 黄色国产精品 | 99re在线观看视频 | 亚洲精品久久久久久久久久久久久 | 国产一级片免费观看 | 男人天堂中文字幕 | 国产黄网 | 国产不卡免费视频 | 日韩久久网 | 99亚洲国产 | av一区二区在线观看 | 国产一区二区在线免费观看 | 欧美一级毛片日韩一级 | 99精品国产高清一区二区麻豆 | 日韩精品一区二区三区在线观看 | 日本不卡高字幕在线2019 | 久久爱电影 | 亚洲永久免费视频 | 国产精品九九九 | 日韩精品一区二区三区老鸭窝 | 超碰激情 | 国产精品久久久久久久久久东京 | 日韩一区二区在线观看视频 | 国产一级免费视频 | 国产午夜精品福利 | 日韩一区二区三区在线 | 亚洲午夜av| 一级免费av | 日韩久久精品 | 亚洲高清一区二区三区 | 欧美精品黄色 | hd国产人妖ts另类视频 | 亚洲国产精品久久久久婷婷老年 | 一区二区日韩欧美 | 久久一区二区三 | 国产黄网| av国产精品| 欧美不卡 | 国产特级毛片 | www.麻豆视频 | 在线免费观看日韩视频 | 视频在线一区二区 | 成人精品 | 欧美日韩在线观看一区二区 | 91av导航| 色五月激情五月 | 成人国产免费视频 |