精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java中常用的幾種DOCX轉PDF方法

開發 后端
將DOCX文檔轉化為PDF是項目中常見的需求之一,目前主流的方法可以分為兩大類,一類是利用各種Office應用進行轉換,譬如Microsoft Office、WPS以及LiberOffice,另一種是利用各種語言提供的對于Office文檔讀取的接口(譬如Apache POI)然后使用專門的PDFGenerator庫,譬如IText進行PDF構建。

DOCX2PDF

將DOCX文檔轉化為PDF是項目中常見的需求之一,目前主流的方法可以分為兩大類,一類是利用各種Office應用進行轉換,譬如Microsoft Office、WPS以及LiberOffice,另一種是利用各種語言提供的對于Office文檔讀取的接口(譬如Apache POI)然后使用專門的PDFGenerator庫,譬如IText進行PDF構建。總的來說,從樣式上利用Office應用可以保證較好的樣式,不過相對而言效率會比較低。其中Microsoft Office涉及版權,不可輕易使用(筆者所在公司就被抓包了),WPS目前使用比較廣泛,不過存在超鏈接截斷問題,即超過256個字符的超鏈接會被截斷,LiberOffice的樣式排版相對比較隨意。而利用POI接口進行讀取與生成的方式性能較好,適用于對于格式要求不是很高的情況。另外還有一些封裝好的在線工具或者命令行工具,譬如docx2pdf與OfficeToPDF。

MicroSoft Office

本部分的核心代碼如下,全部代碼參考這里:

  1. private ActiveXComponent oleComponent = null
  2. private Dispatch activeDoc = null
  3. private final static String APP_ID = "Word.Application"
  4.  
  5. // Constants that map onto Word's WdSaveOptions enumeration and that 
  6. // may be passed to the close(int) method 
  7. public static final int DO_NOT_SAVE_CHANGES = 0; 
  8. public static final int PROMPT_TO_SAVE_CHANGES = -2; 
  9. public static final int SAVE_CHANGES = -1; 
  10.  
  11. // These constant values determine whether or not tha application 
  12. // instance will be displyed on the users screen or not
  13. public static final boolean VISIBLE = true
  14. public static final boolean HIDDEN = false
  15.  
  16. /** 
  17.  * Create a new instance of the JacobWordSearch class using the following 
  18.  * parameters. 
  19.  * 
  20.  * @param visibility A primitive boolean whose value will determine whether 
  21.  *                   or not the Word application will be visible to the user. Pass true 
  22.  *                   to display Word, false otherwise. 
  23.  */ 
  24. public OfficeConverter(boolean visibility) { 
  25.     this.oleComponent = new ActiveXComponent(OfficeConverter.APP_ID); 
  26.     this.oleComponent.setProperty("Visible", new Variant(visibility)); 
  27.  
  28. /** 
  29.  * Open ana existing Word document. 
  30.  * 
  31.  * @param docName An instance of the String class that encapsulates the 
  32.  *                path to and name of a valid Word file. Note that there are a few 
  33.  *                limitations applying to the format of this String; it must specify 
  34.  *                the absolute path to the file and it must not use the single forward 
  35.  *                slash to specify the path separator. 
  36.  */ 
  37. public void openDoc(String docName) { 
  38.     Dispatch disp = null
  39.     Variant var = null
  40.     // First get a Dispatch object referencing the Documents collection - for 
  41.     // collections, think of ArrayLists of objects. 
  42.     var = Dispatch.get(this.oleComponent, "Documents"); 
  43.     disp = var.getDispatch(); 
  44.     // Now call the Open method on the Documents collection Dispatch object 
  45.     // to both open the file and add it to the collection. It would be possible 
  46.     // to open a series of files and access each from the Documents collection 
  47.     // but for this example, it is simpler to store a reference to the 
  48.     // active document in a private instance variable. 
  49.     var = Dispatch.call(disp, "Open", docName); 
  50.     this.activeDoc = var.getDispatch(); 
  51.  
  52. /** 
  53.  * There is more than one way to convert the document into PDF format, you 
  54.  * can either explicitly use a FileConvertor object or call the 
  55.  * ExportAsFixedFormat method on the active document. This method opts for 
  56.  * the latter and calls the ExportAsFixedFormat method passing the name 
  57.  * of the file along with the integer value of 17. This value maps onto one 
  58.  * of Word's constants called wdExportFormatPDF and causes the application 
  59.  * to convert the file into PDF format. If you wanted to do so, for testing 
  60.  * purposes, you could add another value to the args array, a Boolean value 
  61.  * of true. This would open the newly converted document automatically. 
  62.  * 
  63.  * @param filename 
  64.  */ 
  65. public void publishAsPDF(String filename) { 
  66.     // The code to expoort as a PDF is 17 
  67.     //Object args = new Object{filename, new Integer(17), new Boolean(true)}; 
  68.     Object args = new Object { 
  69.         filename, new Integer(17) 
  70.     } ; 
  71.     Dispatch.call(this.activeDoc, "ExportAsFixedFormat", args); 
  72.  
  73. /** 
  74.  * Called to close the active document. Note that this method simply 
  75.  * calls the overloaded closeDoc(int) method passing the value 0 which 
  76.  * instructs Word to close the document and discard any changes that may 
  77.  * have been made since the document was opened or edited. 
  78.  */ 
  79. public void closeDoc() { 
  80.     this.closeDoc(JacobWordSearch.DO_NOT_SAVE_CHANGES); 
  81.  
  82. /** 
  83.  * Called to close the active document. It is possible with this overloaded 
  84.  * version of the close() method to specify what should happen if the user 
  85.  * has made changes to the document that have not been saved. There are three 
  86.  * possible value defined by the following manifest constants; 
  87.  * DO_NOT_SAVE_CHANGES - Close the document and discard any changes 
  88.  * the user may have made. 
  89.  * PROMPT_TO_SAVE_CHANGES - Display a prompt to the user asking them 
  90.  * how to proceed. 
  91.  * SAVE_CHANGES - Save the changes the user has made to the document. 
  92.  * 
  93.  * @param saveOption A primitive integer whose value indicates how the close 
  94.  *                   operation should proceed if the user has made changes to the active 
  95.  *                   document. Note that no checks are made on the value passed to 
  96.  *                   this argument. 
  97.  */ 
  98. public void closeDoc(int saveOption) { 
  99.     Object args = {new Integer(saveOption)}; 
  100.     Dispatch.call(this.activeDoc, "Close", args); 
  101.  
  102. /** 
  103.  * Called once processing has completed in order to close down the instance 
  104.  * of Word. 
  105.  */ 
  106. public void quit() { 
  107.     Dispatch.call(this.oleComponent, "Quit"); 
  108.  

WPS

Java調用WPS或pdfcreator的com接口實現doc轉pdf

本文的核心代碼如下,完整代碼查看這里:

  1.  @Override 
  2.         public boolean convert(String word, String pdf) { 
  3.             File pdfFile = new File(pdf); 
  4.             File wordFile = new File(word); 
  5.             boolean convertSuccessfully = false
  6.  
  7.             ActiveXComponent wps = null
  8.             ActiveXComponent doc = null
  9.  
  10.  
  11.             try { 
  12.                 wps = new ActiveXComponent("KWPS.Application"); 
  13.  
  14. //                Dispatch docs = wps.getProperty("Documents").toDispatch(); 
  15. //                Dispatch d = Dispatch.call(docs, "Open", wordFile.getAbsolutePath(), falsetrue).toDispatch(); 
  16. //                Dispatch.call(d, "SaveAs", pdfFile.getAbsolutePath(), 17); 
  17. //                Dispatch.call(d, "Close"false); 
  18.  
  19.                 doc = wps.invokeGetComponent("Documents"
  20.                         .invokeGetComponent("Open", new Variant(wordFile.getAbsolutePath())); 
  21.  
  22.                 try { 
  23.                     doc.invoke("SaveAs"
  24.                             new Variant(new File("C:\\Users\\lotuc\\Documents\\mmm.pdf").getAbsolutePath()), 
  25.                             new Variant(17)); 
  26.                     convertSuccessfully = true
  27.                 } catch (Exception e) { 
  28.                     logger.warning("生成PDF失敗"); 
  29.                     e.printStackTrace(); 
  30.                 } 
  31.  
  32.                 File saveAsFile = new File("C:\\Users\\lotuc\\Documents\\saveasfile.doc"); 
  33.                 try { 
  34.                     doc.invoke("SaveAs", saveAsFile.getAbsolutePath()); 
  35.                     logger.info("成功另存為" + saveAsFile.getAbsolutePath()); 
  36.                 } catch (Exception e) { 
  37.                     logger.info("另存為" + saveAsFile.getAbsolutePath() + "失敗"); 
  38.                     e.printStackTrace(); 
  39.                 } 
  40.             } finally { 
  41.                 if (doc == null) { 
  42.                     logger.info("打開文件 " + wordFile.getAbsolutePath() + " 失敗"); 
  43.                 } else { 
  44.                     try { 
  45.                         logger.info("釋放文件 " + wordFile.getAbsolutePath()); 
  46.                         doc.invoke("Close"); 
  47.                         doc.safeRelease(); 
  48.                     } catch (Exception e1) { 
  49.                         logger.info("釋放文件 " + wordFile.getAbsolutePath() + " 失敗"); 
  50.                     } 
  51.                 } 
  52.  
  53.                 if (wps == null) { 
  54.                     logger.info("加載 WPS 控件失敗"); 
  55.                 } else { 
  56.                     try { 
  57.                         logger.info("釋放 WPS 控件"); 
  58.                         wps.invoke("Quit"); 
  59.                         wps.safeRelease(); 
  60.                     } catch (Exception e1) { 
  61.                         logger.info("釋放 WPS 控件失敗"); 
  62.                     } 
  63.                 } 
  64.             } 
  65.  
  66.             return convertSuccessfully; 
  67.         }  

LiberOffice

Convert Microsoft Word to PDF - using Java and LibreOffice (UNO API)

LiberOffice本身提供了一個命令行工具進行轉換,在你安裝好了LiberOffice之后

  1. /usr/local/bin/soffice --convert-to pdf:writer_pdf_Export /Users/lotuc/Downloads/test.doc 

如果有打開的libreoffice實例, 要穿入env選項指定一個工作目錄

  1. /usr/local/bin/soffice "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_abc" --convert-to pdf:writer_pdf_Export /Users/lotuc/Downloads/test.doc 

首先我們需要安裝好LiberOffice,然后將依賴的Jar包添加到classpath中:I

  1. Install Libre Office 
  2.  
  3. Create a Java project in your favorite editor and add these to your class path: 
  4.   [Libre Office Dir]/URE/java/juh.jar 
  5.   [Libre Office Dir]/URE/java/jurt.jar 
  6.   [Libre Office Dir]/URE/java/ridl.jar 
  7.   [Libre Office Dir]/program/classes/unoil.jar  

然后我們需要啟動一個LiberOffice進程:

  1. import java.util.Date
  2. import java.io.File; 
  3. import com.sun.star.beans.PropertyValue; 
  4. import com.sun.star.comp.helper.Bootstrap; 
  5. import com.sun.star.frame.XComponentLoader; 
  6. import com.sun.star.frame.XDesktop; 
  7. import com.sun.star.frame.XStorable; 
  8. import com.sun.star.lang.XComponent; 
  9. import com.sun.star.lang.XMultiComponentFactory; 
  10. import com.sun.star.text.XTextDocument; 
  11. import com.sun.star.uno.UnoRuntime; 
  12. import com.sun.star.uno.XComponentContext; 
  13. import com.sun.star.util.XReplaceDescriptor; 
  14. import com.sun.star.util.XReplaceable; 
  15.  
  16. public class MailMergeExample { 
  17.  
  18. public static void main(String[] args) throws Exception { 
  19.  
  20.  // Initialise 
  21.  XComponentContext xContext = Bootstrap.bootstrap(); 
  22.  
  23.  XMultiComponentFactory xMCF = xContext.getServiceManager(); 
  24.   
  25.  Object oDesktop = xMCF.createInstanceWithContext( 
  26.       "com.sun.star.frame.Desktop", xContext); 
  27.   
  28.  XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface( 
  29.       XDesktop.class, oDesktop);  

接下來我們需要加載目標Doc文檔: 

  1. // Load the Document 
  2. String workingDir = "C:/projects/"
  3. String myTemplate = "letterTemplate.doc"
  4.  
  5. if (!new File(workingDir + myTemplate).canRead()) { 
  6.  throw new RuntimeException("Cannot load template:" + new File(workingDir + myTemplate)); 
  7.  
  8. XComponentLoader xCompLoader = (XComponentLoader) UnoRuntime 
  9.  .queryInterface(com.sun.star.frame.XComponentLoader.class, xDesktop); 
  10.  
  11. String sUrl = "file:///" + workingDir + myTemplate; 
  12.  
  13. PropertyValue[] propertyValues = new PropertyValue[0]; 
  14.  
  15. propertyValues = new PropertyValue[1]; 
  16. propertyValues[0] = new PropertyValue(); 
  17. propertyValues[0].Name = "Hidden"
  18. propertyValues[0].Value = new Boolean(true); 
  19.  
  20. XComponent xComp = xCompLoader.loadComponentFromURL( 
  21.  sUrl, "_blank", 0, propertyValues); 

 

然后我們可以使用如下方式對內容進行替換:

  1. // Search and replace 
  2. XReplaceDescriptor xReplaceDescr = null
  3. XReplaceable xReplaceable = null
  4.  
  5. XTextDocument xTextDocument = (XTextDocument) UnoRuntime 
  6.   .queryInterface(XTextDocument.class, xComp); 
  7.  
  8. xReplaceable = (XReplaceable) UnoRuntime 
  9.   .queryInterface(XReplaceable.class, xTextDocument); 
  10.  
  11. xReplaceDescr = (XReplaceDescriptor) xReplaceable 
  12.   .createReplaceDescriptor(); 
  13.  
  14. // mail merge the date 
  15. xReplaceDescr.setSearchString("<date>"); 
  16. xReplaceDescr.setReplaceString(new Date().toString()); 
  17. xReplaceable.replaceAll(xReplaceDescr); 
  18.  
  19. // mail merge the addressee 
  20. xReplaceDescr.setSearchString("<addressee>"); 
  21. xReplaceDescr.setReplaceString("Best Friend"); 
  22. xReplaceable.replaceAll(xReplaceDescr); 
  23.  
  24. // mail merge the signatory 
  25. xReplaceDescr.setSearchString("<signatory>"); 
  26. xReplaceDescr.setReplaceString("Your New Boss"); 
  27. xReplaceable.replaceAll(xReplaceDescr);  

然后可以輸出到PDF中:

  1. // save as a PDF 
  2. XStorable xStorable = (XStorable) UnoRuntime 
  3.   .queryInterface(XStorable.class, xComp); 
  4.  
  5. propertyValues = new PropertyValue[2]; 
  6. propertyValues[0] = new PropertyValue(); 
  7. propertyValues[0].Name = "Overwrite"
  8. propertyValues[0].Value = new Boolean(true); 
  9. propertyValues[1] = new PropertyValue(); 
  10. propertyValues[1].Name = "FilterName"
  11. propertyValues[1].Value = "writer_pdf_Export"
  12.  
  13. // Appending the favoured extension to the origin document name 
  14. String myResult = workingDir + "letterOutput.pdf"
  15. xStorable.storeToURL("file:///" + myResult, propertyValues); 
  16.  
  17. System.out.println("Saved " + myResult); 

 

xdocreport

本文的核心代碼如下,完整代碼查看這里:

  1. /** 
  2.  * @param inpuFile 輸入的文件流 
  3.  * @param outFile  輸出的文件對象 
  4.  * @return 
  5.  * @function 利用Apache POI從輸入的文件中生成PDF文件 
  6.  */ 
  7. @SneakyThrows 
  8. public static void convertWithPOI(InputStream inpuFile, File outFile) { 
  9.  
  10.     //從輸入的文件流創建對象 
  11.     XWPFDocument document = new XWPFDocument(inpuFile); 
  12.  
  13.     //創建PDF選項 
  14.     PdfOptions pdfOptions = PdfOptions.create();//.fontEncoding("windows-1250"
  15.  
  16.     //為輸出文件創建目錄 
  17.     outFile.getParentFile().mkdirs(); 
  18.  
  19.     //執行PDF轉化 
  20.     PdfConverter.getInstance().convert(document, new FileOutputStream(outFile), pdfOptions); 
  21.  
  22.  
  23. /** 
  24.  * @param inpuFile 
  25.  * @param outFile 
  26.  * @param renderParams 
  27.  * @function 先將渲染參數填入模板DOCX文件然后生成PDF 
  28.  */ 
  29. @SneakyThrows 
  30. public static void convertFromTemplateWithFreemarker(InputStream inpuFile, File outFile, Map<String, Object> renderParams) { 
  31.  
  32.     //創建Report實例 
  33.     IXDocReport report = XDocReportRegistry.getRegistry().loadReport( 
  34.             inpuFile, TemplateEngineKind.Freemarker); 
  35.  
  36.     //創建上下文 
  37.     IContext context = report.createContext(); 
  38.  
  39.     //填入渲染參數 
  40.     renderParams.forEach((s, o) -> { 
  41.         context.put(s, o); 
  42.     }); 
  43.  
  44.     //創建輸出流 
  45.     outFile.getParentFile().mkdirs(); 
  46.  
  47.     //創建轉化參數 
  48.     Options options = Options.getTo(ConverterTypeTo.PDF).via( 
  49.             ConverterTypeVia.XWPF); 
  50.  
  51.     //執行轉化過程 
  52.     report.convert(context, options, new FileOutputStream(outFile)); 
  53.  
責任編輯:龐桂玉 來源: segmentfault
相關推薦

2024-06-27 00:46:10

機器學習向量相似度

2009-06-11 13:49:30

2023-11-29 14:34:15

機器學習統計學

2023-05-18 07:48:01

.NET網絡編程

2012-06-04 09:36:50

2019-10-11 08:41:18

JavaMemcached數據庫

2020-08-25 08:53:02

Linux端口轉發

2010-05-17 15:17:06

MySQL常用操作

2024-01-17 13:58:00

算法C#冒泡排序

2024-06-12 08:05:06

2023-11-28 12:08:56

機器學習算法人工智能

2010-05-04 15:49:24

Oracle修改

2011-06-30 14:58:16

偽原創

2009-09-14 18:11:23

C#排序方法

2021-06-30 06:10:31

數組去重方法數組變量

2023-11-26 17:47:00

數據分析

2019-11-21 10:40:54

MySQLMySQL優化MySQL索引

2022-08-30 21:01:17

開發Java框架

2023-03-17 16:49:42

開發Java框架

2014-11-04 10:34:27

JavaCache
點贊
收藏

51CTO技術棧公眾號

成人国产精品免费视频| 亚洲国产一区二区三区在线观看| 在线观看欧美激情| www.国产视频| 在线亚洲欧美| 久久久久久久久成人| av在线免费不卡| 国产精品午夜国产小视频| 日本黄色片免费观看| 成人资源在线播放| 欧美中文字幕一区二区三区亚洲| 欧美 国产 精品| 四虎影院在线播放| 极品少妇xxxx偷拍精品少妇| 97在线视频免费播放| 色天使在线视频| 日韩成人精品| 在线欧美一区二区| 国产曰肥老太婆无遮挡| 自拍视频在线网| 国产成人综合在线播放| 国产精品久久久久77777| 国产一级在线播放| 婷婷亚洲五月| 亚洲无av在线中文字幕| 精人妻一区二区三区| 国产人妖一区| 色狠狠综合天天综合综合| 妺妺窝人体色www看人体| a黄色在线观看| 久久婷婷国产综合国色天香| 国产精品国产三级欧美二区| 国产影视一区二区| 青青青爽久久午夜综合久久午夜| 91国内产香蕉| 国产在线视频第一页| 香港欧美日韩三级黄色一级电影网站| 亚洲日韩中文字幕在线播放| 亚洲熟女一区二区| 96sao在线精品免费视频| 欧美狂野另类xxxxoooo| 黄色三级视频片| 中文字幕在线中文字幕在线中三区 | 九九热精品视频| 午夜成人亚洲理伦片在线观看| 亚洲制服一区| 精品视频在线播放免| 国产高潮视频在线观看| 91精品短视频| 欧美变态tickling挠脚心| www.五月天色| 韩国一区二区三区视频| 欧美一区国产二区| 日日干日日操日日射| 亚洲网站免费| 欧美一三区三区四区免费在线看| 一本色道久久亚洲综合精品蜜桃| 国产精品扒开腿做爽爽爽视频软件| 欧美日韩国产一区二区| 成 年 人 黄 色 大 片大 全| 国产美女一区视频| 香蕉av福利精品导航| 国产精品333| 亚洲午夜天堂| 欧美日韩中文另类| 在线播放av中文字幕| 精品中文视频| 亚洲精品在线三区| 成人午夜福利一区二区| 国产99久久| 日韩中文字幕av| 色哟哟一一国产精品| 你懂的亚洲视频| 久久久免费电影| 久久国产视频一区| 奇米影视7777精品一区二区| 成人写真视频福利网| 精品国产亚洲av麻豆| 成人免费不卡视频| 欧美日韩另类丝袜其他| 色视频在线免费观看| 亚洲欧美视频在线观看| 久久久久久久久久网| 欧美色网一区| 欧美日韩国产经典色站一区二区三区 | 欧美亚州在线观看| 97超碰国产一区二区三区| 亚洲人亚洲人成电影网站色| 丁香六月激情婷婷| 蜜桃视频成人m3u8| 欧美一区二区免费观在线| 日韩精品人妻中文字幕有码 | 波多野结衣在线一区| 久久综合久久久| 欧美一区二区三区| 天天操天天综合网| 羞羞的视频在线| 久久精品福利| 综合欧美国产视频二区| 久久精品这里有| 日韩主播视频在线| 超碰97在线资源| 成人资源www网在线最新版| 亚洲精品成人天堂一二三| 国产av麻豆mag剧集| 另类一区二区三区| 亚洲精品国产电影| 免费高清在线观看电视| 久久久久久穴| 成人一区二区在线| 亚洲1卡2卡3卡4卡乱码精品| 午夜一区二区三区在线观看| 午夜久久福利视频| 日韩有码中文字幕在线| 欧美国产日韩免费| 亚洲图片在线播放| 26uuu精品一区二区三区四区在线| 裸体裸乳免费看| 欧美特大特白屁股xxxx| 亚洲国产精品人久久电影| 亚洲区一区二区三| 日一区二区三区| 精品一区久久| 午夜小视频在线观看| 精品视频免费看| 久久精品一区二区免费播放| 激情偷拍久久| av在线亚洲男人的天堂| 欧美jizz18性欧美| 欧美三级中文字| 亚洲av综合一区二区| 99在线精品视频在线观看| 97超碰最新| 韩国av网站在线| 欧美无砖专区一中文字| 在哪里可以看毛片| 国产乱码精品| 久草热久草热线频97精品| 免费网站在线观看人| 日韩一区二区三区免费观看| chinese全程对白| 蜜乳av一区二区| 亚洲高清在线播放| 亚洲伦理影院| 一区国产精品视频| 伊人久久中文字幕| 国产欧美日韩一区二区三区在线观看| 亚洲精品无码久久久久久| 欧美亚洲国产日韩| 9.1国产丝袜在线观看| 四虎在线视频| 色丁香久综合在线久综合在线观看| 久久丫精品国产亚洲av不卡| 在线午夜精品| 欧美一区二区三区四区夜夜大片| 成人欧美一区二区三区的电影| 亚洲精品wwww| 精品人妻一区二区三区潮喷在线| 久久九九久精品国产免费直播| av天堂永久资源网| 国产探花一区| 成人国产精品色哟哟| 国产黄色在线免费观看| 日韩三级视频中文字幕| 日本系列第一页| 久久这里只有精品视频网| 欧美一级片中文字幕| 欧美日韩国产一区二区三区不卡 | 精品国产网站地址| 国产乱码一区二区| 亚洲最新在线观看| 变态另类丨国产精品| 蜜臀va亚洲va欧美va天堂| 久久久一二三四| av不卡一区| 日韩av免费在线播放| 欧美成人二区| 亚洲成人999| 波多野结衣在线电影| 亚洲色图.com| 中文字幕 亚洲一区| 日本在线不卡一区| 欧美日韩午夜爽爽| 日韩成人av在线资源| 国产美女搞久久| 精精国产xxxx视频在线中文版 | 久久99影院| 欧美va在线| 欧美丰满少妇xxxxx做受| 婷婷婷国产在线视频| 欧美日韩三级一区| 国产亚洲欧美精品久久久久久 | 婷婷六月国产精品久久不卡| 色阁综合伊人av| 丰满人妻一区二区| 欧美亚洲综合色| 久久久综合久久久| 欧美激情综合五月色丁香小说| 制服下的诱惑暮生| 日韩和欧美一区二区| 精品少妇人欧美激情在线观看| 国产剧情在线观看一区| 波多野结衣久草一区| 日韩漫画puputoon| 97国产精品久久| 成人在线app| 一本大道亚洲视频| 天天干天天做天天操| 欧美精品三级日韩久久| 成人a v视频| 亚洲第一久久影院| 精品国产视频在线观看| 国产日韩一级二级三级| 国产+高潮+白浆+无码| 激情成人午夜视频| 成人免费视频久久| 亚洲视频大全| 日本中文字幕在线视频观看| 久久久国产精品| 先锋影音日韩| 国产精品午夜一区二区三区| 国产日韩欧美一区二区三区四区| 香蕉成人在线| 国产精品私拍pans大尺度在线| 日韩激情电影| 57pao国产成人免费| 国产探花视频在线观看| 欧美成人一区在线| 老司机午夜在线视频| 中文字幕久热精品视频在线| 欧美女同网站| 亚洲欧美日韩图片| 亚洲人妻一区二区三区| 精品福利二区三区| 草草视频在线播放| 日韩欧美第一区| 国内精品国产成人国产三级| 91精品国产黑色紧身裤美女| 一区二区三区免费观看视频| 精品视频一区三区九区| 亚洲熟女乱色一区二区三区久久久| 91高清在线观看| 天堂免费在线视频| 欧美探花视频资源| 久久久国产免费| 欧美在线free| 一级二级三级视频| 欧美精品亚洲一区二区在线播放| 97超碰中文字幕| 欧美麻豆精品久久久久久| 国产一区二区三区四区视频| 91精品国产综合久久福利| 国产露脸无套对白在线播放| 欧美一级国产精品| 高h调教冰块play男男双性文| 精品美女在线观看| 高潮毛片7777777毛片| 精品成人a区在线观看| 青青草超碰在线| 一区二区三区精品99久久| 99青草视频在线播放视| 俺去亚洲欧洲欧美日韩| 91精选在线| 97碰碰碰免费色视频| 老司机2019福利精品视频导航| 国产精品精品久久久久久| 精品自拍视频| 91超碰在线电影| 国内精品国产成人国产三级粉色| 久久伊人一区二区| 日韩大片在线| 4444亚洲人成无码网在线观看| 一本久道久久综合婷婷鲸鱼| 男人透女人免费视频| 久久成人免费日本黄色| 久久黄色一级视频| 94色蜜桃网一区二区三区| 天天干天天操天天拍| 亚洲丝袜精品丝袜在线| 国产精品第二十页| 日本乱人伦aⅴ精品| 国产精品欧美久久久久天天影视 | 岛国av免费观看| 久久人人爽人人爽| 成人免费视频网站入口::| 亚洲成人综合视频| 中文字幕第2页| 欧美v日韩v国产v| 国产福利免费在线观看| 美女精品视频一区| 欧美7777| 国产精品对白刺激久久久| 精品国产一区二区三区噜噜噜| 天天干天天色天天爽| 久久久噜噜噜久久狠狠50岁| 亚洲第一区第二区第三区| 91香蕉视频在线| 亚洲一级生活片| 色婷婷激情综合| 亚洲第一天堂网| 色噜噜狠狠色综合网图区| 98色花堂精品视频在线观看| 成人在线中文字幕| 免费一区二区| 轻点好疼好大好爽视频| 久久99国产精品尤物| 搡老熟女老女人一区二区| 亚洲男人的天堂网| 人人妻人人爽人人澡人人精品| 欧美成人午夜电影| 91精品专区| 国产成人亚洲精品| 欧美久久精品| 国产91沈先生在线播放| 激情文学综合丁香| 波多野吉衣中文字幕| 亚洲精品久久嫩草网站秘色| 中文字幕人妻互换av久久| 日韩精品免费电影| 国内老司机av在线| 91香蕉嫩草影院入口| 日韩理论电影| 国产精品天天av精麻传媒| 99精品视频中文字幕| 麻豆成人在线视频| 91麻豆精品国产91久久久 | 欧美高清视频免费观看| 免费一区二区三区四区| 欧美日韩高清在线一区| 99在线|亚洲一区二区| 最好看的2019的中文字幕视频| 老女人性淫交视频| 在线观看不卡一区| 手机福利在线| 午夜精品免费视频| 成人av动漫| 免费人成自慰网站| 国产精品99久| 欧美成人精品欧美一| 欧美一级久久久久久久大片| 欧美日韩在线看片| 国产在线视频2019最新视频| 欧美熟乱15p| 天天爽夜夜爽一区二区三区| 久久久久国色av免费看影院| 日韩视频在线观看一区| 亚洲精品视频中文字幕| 欧美激情网站| 久久久久久a亚洲欧洲aⅴ| 亚洲黄色毛片| 黄色录像a级片| 色综合久久天天| 国产免费av高清在线| 国产精品入口免费视频一| 久久亚洲在线| 成人免费播放视频| 亚洲最新视频在线播放| 天天躁日日躁狠狠躁伊人| 欧美性资源免费| 成人久久综合| 久久精品视频在线观看免费| 亚洲综合偷拍欧美一区色| 少妇人妻精品一区二区三区| 欧美又大粗又爽又黄大片视频| 久久99国产精品视频| 少妇一级淫免费播放| 亚洲精品国产无天堂网2021| 亚洲精品国偷拍自产在线观看蜜桃| 97免费视频在线| 不卡中文一二三区| 99日在线视频| 午夜久久久影院| 国产黄色免费在线观看| 成人写真福利网| 99精品免费网| 黄色片网站在线播放| 欧美成人一区二区三区片免费| 在线免费三级电影网站| 亚洲欧美在线网| 丁香婷婷深情五月亚洲| 日韩在线视频不卡| 免费97视频在线精品国自产拍| 开心激情综合| 久久撸在线视频| 五月天网站亚洲| 免费av毛片在线看| 精品国产乱码久久久久久丨区2区| 丝瓜av网站精品一区二区| 黄色精品视频在线观看| 亚洲成人久久电影| 78精品国产综合久久香蕉| www.一区二区.com| 国产欧美综合在线观看第十页| 精品国自产在线观看| 日本免费一区二区三区视频观看| 色婷婷一区二区三区| 亚洲av成人片色在线观看高潮| 欧美性大战xxxxx久久久| 欧美人与性动交α欧美精品济南到 | 免费97视频在线精品国自产拍|