国产凹凸在线-国产拗女一区二区三区-国产白白视-国产白领-国产白拍-国产白丝jk被疯狂输-国产白丝喷-国产白丝在线

金喜正规买球

4步教你學會使用Aspose在ASP.NET Core中將各種文檔合并為PDF

翻譯|使用教程|編輯:李顯亮|2020-11-03 09:59:45.900|閱讀 413 次

概述:在各種業務環境中,將各種文檔合并為一個PDF是客戶最常問的問題之一。本文演示了如何使用ASP.NET Core框架將多個文檔合并到一個PDF中。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

在各種業務環境中,將各種文檔合并為一個PDF是客戶最常問的問題之一。例如,假設您的組織有多個應用程序以XPS和PDF生成特定的文檔,使用掃描的圖像,并且您的用戶希望將其中一些文檔合并為一個PDF。

本文演示了如何使用ASP.NET Core框架將多個文檔合并到一個PDF中。Aspose.PDF提出了幾種使用.NET合并PDF的方法,這些內容在本文中進行了介紹。在本文中,將討論以下主題:

  • 如何使用ASP.NET Core Web API上傳PDF或其他文檔;
  • 如何實現簡單的Web UI來選擇要合并的PDF文件;
  • 如何實現用于合并PDF的簡單Web API容器;

在本文中,我們將創建一個簡單的ASP.NET Web API應用程序,該應用程序允許我們上載文檔,選擇2個或更多文件進行合并以及下載結果。

4步教你學會使用Aspose在ASP.NET Core中將各種文檔合并為PDF

點擊下載最新版Aspose.PDF

(安裝包僅提供部分功能,并設置限制,如需試用完整功能請。)

軟件國產化服務季來啦!整合所有格式的Aspose.Total永久授權正在火熱促銷中,樂享85折起!立馬1分鐘了解全部咨詢!

實施ASP.NET Core Web App以將各種文檔合并為PDF

步驟1:創建一個ASP.NET Core Web應用程序

我們將為此應用程序使用Web應用程序(模型-視圖-控制器)模板。

4步教你學會使用Aspose在ASP.NET Core中將各種文檔合并為PDF

創建基本應用程序后,我們將需要執行一些其他操作。

  • 為.NET庫添加Aspose.PDF作為依賴項(通過Nuget軟件包管理器);
  • 添加resumable.js庫;
  • 將臨時文件和文檔的wwwroot文件夾添加到該文件夾(例如files和temp);
  • 在appsettings.json中創建相應的屬性
    "Folders": {
        "Files": "files",
        "Temporary" :  "temp" 
    } 

步驟2:實施Web API控制器以管理服務器上的文件

我們的控制器應執行以下操作:

  • 返回具有某些擴展名的文件列表(在本示例中,將僅顯示.pdf,.jpg和.oxps文件);
  • 允許按文件名下載文件;
  • 允許通過文件名刪除服務器上的文件;
    using Aspose.Demo.Pdf.Merger.Models;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Logging;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using Microsoft.Extensions.Configuration;
    
    namespace Aspose.Demo.Pdf.Merger.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class FilesController : ControllerBase
        {
            private readonly Dictionary<string, string> _contentType;
            private readonly ILogger<FilesController> _logger;
            private readonly string _storageRootFolder;
            public FilesController(ILogger<FilesController> logger,
                IWebHostEnvironment env,
                IConfiguration configuration)
            {
                _logger = logger;
                _storageRootFolder = Path.Combine(env.WebRootPath, configuration["Folders:Files"]);            
                _contentType = new Dictionary<string, string> {
                { ".txt", "text/plain"},
                    { ".pdf", "application/pdf"},
                    { ".doc", "application/vnd.ms-word"},
                    { ".docx", "application/vnd.ms-word"},
                    { ".xls", "application/vnd.ms-excel"},
                    { ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},
                    { ".png", "image/png"},
                    { ".jpg", "image/jpeg"},
                    { ".jpeg", "image/jpeg"},
                    { ".gif", "image/gif"},
                    { ".csv", "text/csv"}
                };
            }
    
    
            // GET: /api/files 
            [HttpGet]
            public IEnumerable<FileViewModel> GetFiles()
            {
                _logger.LogInformation($"Get files from {_storageRootFolder}");
                var files = new DirectoryInfo(_storageRootFolder).EnumerateFiles("*.pdf").ToList();
                files.AddRange(new DirectoryInfo(_storageRootFolder).EnumerateFiles("*.jpg"));
                files.AddRange(new DirectoryInfo(_storageRootFolder).EnumerateFiles("*.oxps"));
                //TODO: add other file types below            
                return files.Select(f => new FileViewModel { Name = f.Name, Size = f.Length });
            }
    
            [HttpGet("{id}")]
            public IActionResult OnGetFile(string id)
            {
                _logger.LogInformation($"Get file {id}");
                var fileName = Path.Combine(_storageRootFolder, id);
                return File(System.IO.File.OpenRead(fileName), _contentType[Path.GetExtension(fileName)]);
            }
    
            [HttpDelete("{id}")]
            public IActionResult OnDeleteFile(string id)
            {
                _logger.LogInformation($"Delete file {id}");
                var fileName = Path.Combine(_storageRootFolder, id);
                System.IO.File.Delete(fileName);
                return Ok();
            }        
        }
    }

然后將使用附加的庫Resumable.JS來加載文件,因此將與加載文件相關的代碼移至單獨的控制器是有意義的。

步驟3:實現Web API控制器以使用Resumable.JS上傳文件

Resumable.JS庫的主要功能是它允許您分塊加載文件。因此,我們需要實現一些方法來處理此過程:

  • HTTP GET請求的方法,該方法應檢查服務器上是否存在塊;
  • HTTP POST請求的方法,該方法應該是服務器上的上傳塊;
  • 其他輔助方法(用于HTTP OPTIONS請求,合并塊等)
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Logging;
    using System.IO;
    using Microsoft.Extensions.Configuration;
    
    namespace Aspose.Demo.Pdf.Merger.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class UploadController : ControllerBase
        {
            private readonly ILogger_logger;
            private readonly string _storageRootFolder;
            private readonly string _filesRootFolder;
    
            public UploadController(
                ILoggerlogger,
                IConfiguration configuration,
                IWebHostEnvironment env)
            {
                _logger = logger;
                _storageRootFolder = Path.Combine(env.WebRootPath, configuration["Folders:Temporary"]);
                _filesRootFolder = Path.Combine(env.WebRootPath, configuration["Folders:Files"]);
                if (!Directory.Exists(_storageRootFolder))
                    Directory.CreateDirectory(_storageRootFolder);
            }
    
            [HttpOptions]
            public object UploadFileOptions()
            {
                return Ok();
            }
    
            [HttpGet]
            public object Upload(int resumableChunkNumber, string resumableIdentifier)
            {
                _logger.LogInformation($"Check if chunck {resumableChunkNumber} from {resumableIdentifier} is here.");            
                return ChunkIsHere(resumableChunkNumber, resumableIdentifier) ? Ok() : StatusCode(418);
            }
    
            [HttpPost]
            public IActionResult Upload(
                [FromQuery(Name = "ResumableIdentifier")] string resumableIdentifier,
                [FromQuery(Name = "ResumableFilename")] string resumableFilename,
                [FromQuery(Name = "ResumableChunkNumber")] int resumableChunkNumber,
                [FromQuery(Name = "ResumableTotalChunks")] int resumableTotalChunks,
                IFormFile file)
            {
                _logger.LogInformation(file.FileName);
                var stream = System.IO.File.Create(GetChunkFileName(resumableChunkNumber, resumableIdentifier));
                file.CopyTo(stream);
                stream.Close();
                TryAssembleFile(resumableFilename, resumableIdentifier, resumableTotalChunks);
                return Ok();
            }
    
            #region Chunk methods
            [NonAction]
            private string GetChunkFileName(int chunkNumber, string identifier)
            {
                return Path.Combine(_storageRootFolder, $"{identifier}_{chunkNumber}");
            }
    
            [NonAction]
            private string GetFilePath(string identifier)
            {
                return Path.Combine(_storageRootFolder, identifier);
            }
    
            [NonAction]
            private bool ChunkIsHere(int chunkNumber, string identifier)
            {
                return System.IO.File.Exists(GetChunkFileName(chunkNumber, identifier));
            }
    
            [NonAction]
            private bool AllChunksAreHere(string identifier, int chunks)
            {
                for (var chunkNumber = 1; chunkNumber <= chunks; chunkNumber++) if (!ChunkIsHere(chunkNumber, identifier)) return false; return true; } [NonAction] private void DeleteChunks(string identifier, int chunks) { for (var chunkNumber = 1; chunkNumber <= chunks; chunkNumber++) { var chunkFileName = GetChunkFileName(chunkNumber, identifier); System.IO.File.Delete(chunkFileName); } } [NonAction] private string ConsolidateFile(string identifier, int chunks) { var path = GetFilePath(identifier); using var destStream = System.IO.File.Create(path, 15000); for (var chunkNumber = 1; chunkNumber <= chunks; chunkNumber++) { var chunkFileName = GetChunkFileName(chunkNumber, identifier); using var sourceStream = System.IO.File.OpenRead(chunkFileName); sourceStream.CopyTo(destStream); } destStream.Close(); return path; } [NonAction] private void TryAssembleFile(string rfn, string ri, int rtc) { if (AllChunksAreHere(ri, rtc)) { // Create a single file var path = ConsolidateFile(ri, rtc); // Move consolidated file System.IO.File.Move(path, Path.Combine(_filesRootFolder, rfn),true); // Delete chunk files DeleteChunks(ri, rtc); } } #endregion } }

該庫將標識符用于內部目的。它可以以不同的方式生成。在示例應用程序中,我們使用了一個單獨的控制器。

using Microsoft.AspNetCore.Mvc;
using System;
using System.Linq;

namespace Aspose.Demo.Pdf.Merger.Controllers
{
    [Route("api/[controller]")]
    [ApiController]

    public class TokenController : ControllerBase
    {
        // GET: api/Token?id=<filename>
        [HttpGet("{id}")]
        public string OnGet(string id)
        {
            var hash = new System.Security.Cryptography.SHA1Managed()
                .ComputeHash(System.Text.Encoding.UTF8.GetBytes(id + DateTime.Now.Ticks.ToString()));
            return string.Concat(hash.Select(b => b.ToString("x2")));
        }
    }
}

步驟4:為合并的應用程序實現Web UI

現在,我們可以開始實現Web界面了。在示例應用程序中,我們沒有使用Angular,React Vue或其他框架,但是我們實現了基于Bootstrap和JQuery的單頁應用程序。應用程序頁面可以分為兩個部分:

  • 服務器上的文件部分將使我們可以查看服務器上的文件,下載或刪除它們。此外,用戶可以通過單擊文件名來選擇要合并的文檔。要獲取合并的文檔,用戶應單擊“合并”按鈕,合并的文檔將顯示在文件列表中。
  • “上載文件”部分僅用于上載文件。

由于該網頁的代碼量很大,因此在此不再顯示,我們將完全局限于描述該算法的兩個想法。

  • 合并序列中的文件位置存儲在與其對應的單元格的data-order屬性中。因此,要將文件合并為一個PDF,我們應該獲取所有數據順序,對它們進行排序并發送文件名序列;
  • 要選擇/取消選擇要合并的文件,請單擊文件名。選定的文件標有徽章;
    4步教你學會使用Aspose在ASP.NET Core中將各種文檔合并為PDF

以下代碼段演示了這兩種操作的處理程序:

let lastIndex = 0;
function selectFileClickHandler() {
    let order = parseInt($(this).attr('data-order'));
    if (order > 0) {
        $(this).attr('data-order', '0');
        $(this).find('span').hide('slow');
        for (let cell of $("*[data-order]")) {
            let currentOrder = parseInt(cell.dataset.order);
            if (currentOrder > order) {
                cell.dataset.order = currentOrder - 1;
                cell.firstElementChild.innerHTML = currentOrder - 1;
            }
        }
        lastIndex--;
    }
    else {
        $(this).attr('data-order', ++lastIndex);
        $(this).find('span').html(lastIndex);
        $(this).find('span').show('slow');
    }
    $('#btnMerge').prop('disabled', lastIndex<2);
}

$('#btnMerge').click((e) => {
    e.preventDefault();
    const files = $('*[data-order]').sort(function (a, b) {
        const contentA = parseInt($(a).data('order'));
        const contentB = parseInt($(b).data('order'));
        return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
    });
    const data = [];
    for (let file of files) {
        const currentOrder = parseInt(file.dataset.order);
        if (currentOrder > 0) data.push(file.dataset.id);
    }

    fetch('api/merge/',
        {
            method: 'POST',
            mode: 'cors',
            cache: 'no-cache',
            credentials: 'same-origin',
            headers: { 'Content-Type': 'application/json' },
            redirect: 'follow',
            referrerPolicy: 'no-referrer',
            body: JSON.stringify(data)
        }
    )
        .then(res => res.json())
        .then(res => {
            console.log(res);
            refreshFileTable();
        })
        .catch(err => alert(err));
    lastIndex = 0;
});
    

將各種文檔合并為PDF

完成準備階段后,我們可以考慮項目的主要部分。.NET庫的Aspose.PDF提供了幾種合并文檔的方法。您可以在上一篇文章中學習其中的一些內容,但是現在我們將重點介紹一下,并討論影響PDF中任何文檔的可能性。

實際上,如果文檔為PDF格式,那么我們必須執行兩個操作,然后合并;如果文檔不是PDF,則首先進行轉換然后合并。

步驟1:實施Web API控制器以將各種文檔合并為PDF

using Aspose.Pdf;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;

namespace Aspose.Demo.Pdf.Merger.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class MergeController : ControllerBase
    {
        private readonly ILogger<MergeController> _logger;
        private readonly string _storageRootFolder;

        public MergeController(ILogger<MergeController> logger, IWebHostEnvironment env)
        {
            _logger = logger;
            _storageRootFolder = Path.Combine(env.WebRootPath, "files");
            //var license = new License();
            //license.SetLicense(@"<path to license>");
        }


        // POST: /api/merge 
        [HttpPost]
        public IActionResult PostMergeFiles(IEnumerable<string> list)
        {

            //TODO: Implement Image to PDF conversion
            throw new NotImplementedException();
        }
        
    }
}

如您所見,我們的控制器調用HTTP-Post方法來合并文檔。現在我們實現此方法。我們合并的想法是將所有頁面從一個文檔添加到另一個文檔。這很簡單,因為我們知道Document類包含一個Pages集合,而最后一個具有Add方法。

// POST: /api/merge 
        [HttpPost]
        public IActionResult PostMergeFiles(IEnumerable<string> list)
        {
            var document = new Document();
            foreach (var item in list)
            {
                var filePath = Path.Combine(_storageRootFolder, item);
                var pdfDocument = Path.GetExtension(item) switch
                {
                    ".jpg" => ConvertFromImage(filePath),
                    ".jpeg" => ConvertFromImage(filePath),
                    ".png" => ConvertFromImage(filePath),
                    ".oxps" => new Document(filePath, new XpsLoadOptions()),
                    _ => new Document(filePath)
                };
                document.Pages.Add(pdfDocument.Pages);
                pdfDocument.Dispose();
            }

            var guid = Guid.NewGuid();
            document.Save(Path.Combine(_storageRootFolder, $"{guid}.pdf"));
            _logger.LogInformation($"The merge result saved as: {guid}");
            return Ok(new { filename = guid.ToString() });
        }

        private Document ConvertFromImage(string filePath)
        {
            var docStream = new MemoryStream();
            var doc = new Document();
            var page = doc.Pages.Add();

            var image = new Aspose.Pdf.Image
            {
                ImageStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)
            };

            page.PageInfo.Margin.Bottom = 0;
            page.PageInfo.Margin.Top = 0;
            page.PageInfo.Margin.Left = 0;
            page.PageInfo.Margin.Right = 0;

            var imageSize = System.Drawing.Image.FromStream(image.ImageStream).Size;
            page.PageInfo.Width = imageSize.Width;
            page.PageInfo.Height = imageSize.Height;

            page.Paragraphs.Add(image);

            doc.Save(docStream);
            return doc;
        }
    }

步驟2:實現用于將圖像轉換為PDF的輔助方法

   private Document ConvertFromImage(string filePath)
        {
            var docStream = new MemoryStream();
            var doc = new Document();
            var page = doc.Pages.Add();

            var image = new Aspose.Pdf.Image
            {
                ImageStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)
            };

            page.PageInfo.Margin.Bottom = 0;
            page.PageInfo.Margin.Top = 0;
            page.PageInfo.Margin.Left = 0;
            page.PageInfo.Margin.Right = 0;

            var imageSize = System.Drawing.Image.FromStream(image.ImageStream).Size;
            page.PageInfo.Width = imageSize.Width;
            page.PageInfo.Height = imageSize.Height;

            page.Paragraphs.Add(image);

            doc.Save(docStream);
            return doc;
        }

本文示例演示了Aspose.PDF庫在ASP.NET Core環境中的正常運行。該應用程序的目的是展示使用.NET Core的Aspose.PDF合并任何文檔并將其保存為PDF格式的可能性,并且可能需要對其進行改進。例如,此程序不考慮保存具有相同名稱的文件。該問題的可能解決方案是使用具有生成名稱的文件夾上載每個文檔或使用數據庫存儲文件。


還想要更多嗎?您可以點擊閱讀【2020 · Aspose最新資源整合】查找需要的教程資源。如果您有任何疑問或需求,請隨時加入Aspose技術交流群642018183,我們很高興為您提供查詢和咨詢
標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn


為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
国产在线观看一区精品 | 欧美高清中文字幕综合网 | 国产中文字幕手机视频 | 国产一区二区三区精品视频 | 国产曰批的免费 | 偷拍精品视频一区二区三区 | 日韩欧美亚洲一区二区综合 | 国产精品亚洲一区二区在线观看 | 日韩综合第一页 | 91成年人免费视频 | 国产乱码精品在线播放 | 欧美亚洲综合另类成人 | 国产亚洲精品一级在线观看 | 国产区成人精品视频 | 日本精品中文字幕在线不卡 | 国产精选免 | 国内精品视频一区二区 | 免费人成视频在线看片下载 | 欧美v日韩v国产v亚洲v | 永久精品电影在线观看 | 三级三级三级a级全黄三电影 | 精品一区二区三区密臀在线 | 区亚洲二区三区 | 欧美日韩中文字幕第一页 | 日本一区二区免费在线观看视频 | 精品大臿蕉视频在线观看 | 日韩欧美色射高清 | 美女大黄三级视频在线观看 | 国产精品极品白 | 国产日韩精品欧美一区视频 | 亚洲欧美自 | 国产精品成aⅴ人片在线观看 | 日本高清在线视频观看 | 欧美激情国产精品视频一区二区 | 国产va在线观看免费 | 岛国一区二区 | 成人午夜免费视频 | 日韩亚洲国 | 亚洲丰满 | 国产直播视频在线播放 | yellow高清免费观看日本 | 欧美国产视频一区二区91 | 欧美国产亚洲一区 | aⅴ中文字幕在线日本 | 国产自产拍在线观看 | 国产综合中文一 | 欧美日韩精品一区二区 | 亚洲精品中文字幕不卡在线 | 中文字幕精品亚洲无线码一区 | 一区二区三区高清视频在线观看 | 国产女主播午夜福利在线观看 | 欧美日韩在线观看不卡一 | 国产一区二区在线免费观看 | 欧美一级成人免费大片 | jizz中国jizz免费 | 风韵犹存丰 | 国产精品网站在线播放 | 欧美日韩国产另类不卡在线 | 国产熟睡乱子伦视频频 | 国产福利一区二区三区在线视频 | 精品国产品香蕉在线观 | 精品国产亚洲第一区二区三区 | 福利片免费 | 日韩一区二区三区四区中文字幕 | 国产又色又爽又刺激在线观看 | 欧美、另类亚洲 | 天堂中文在线资源 | 日韩永久免费在线中文字幕 | 97一区二区国产好的精华液 | 日本免费一区二区三区高清视频 | 韩精品欧美综合区 | 精品国产日韩欧美一区二区 | 亚洲欧美韩 | 最新高清电影免费在线观看 | 亚洲人成aⅴ在线播放 | 国产h片在线观看视 | 黑人巨大精品欧 | 免费高清欧美亚洲视频 | 97视频国产中文字幕 | 欧美专区在线播放 | 一区两区三区四区乱码国产精品 | 片在线观看导航 | 国产午夜在线精品 | 国产日本免费乱伦 | 日本不卡一区二区三区在线 | 硬又粗视频 | 国产福利在线永久视频 | 最新电影电视剧 | 美女胸又www | 精品亚洲精品中文字幕 | 国产亚洲精品日韩综合网 | 欧美日韩综合不卡在线观看 | 国产欧美日韩丝袜精品一区 | 日韩精品一区二区 | 日产亚洲一区二区 | 自制国产2025福利看片 | 成人熟女日韩欧美综合 | 日本一在线中文字幕天堂 | 免费国产小视频在线观看 | 亚州精品永久观看视频 | 最好看免费观看高清电影大全 | 国内99精品视频在线播放 | 国产老妇 | 青青爽在线视频精品 | 欧美码一区二区三区 | 国产欧美日韩精品视频一区二区 | 国产高清超| 欧美日韩国产精品一区二区在 | 国产黄页在线观看黄a∨ | 韩国三级《私人教练》 | 午夜在线欧美曰韩精品影 | 贝贝福利电 | 免费人成年短视频在线观看网 | 亚洲欧美日韩国产精品一区二 | 区三区在线视频 | 夫妇交换| 日韩在线一区二区三区观看 | 丰满岳疯狂做 | ⅹxxx乱大交 | 夜夜橾天天橾 | 国产性夜夜春夜夜 | 欧洲精品卡1区2卡三卡四卡 | 精品精品国产国产 | 精品高清美女精品国产区 | 宅男噜噜噜一区二 | 精品一区二区三区日韩 | 99热这里只有成人精品国产 | 国产日韩欧美亚 | 欧美乱妇日本无乱码特黄大片 | 日韩精品亚洲人旧成在线 | 精品日韩欧美一区二区在线播放 | 国产女明星专区视频在线播放 | 欧美浓毛大泬视频在线观 | 日韩精品一区二区三区vr | 欧美黑人激情性 | 日本大片在线 | 在线精品自拍亚洲第一区 | 欧美日韩在线观看视频网站 | 国产第三页在线观看 | 中文字幕一精品亚洲无线一区 | 成年人射| 成人日韩在线视频观看 | 岛国精品 | 碰97精品视 | 国产高清视频在线播放 | 国产乱码精品一 | 国产精品2025在线 | 日韩在线观看第一页 | 中文字幕在线观看亚洲日韩 | 亚洲精品一级高清在线播放国 | 91免费精品国自产在线不卡 | 亚洲综合一区自偷自拍 | 日韩成人| 欧美韩日二三在 | 日本不卡三区中文字幕在线观看 | 日韩欧美国产一 | 亚洲一区在线 | 久热国产精品视频 | 国产肥熟女视频一区二 | 色吊丝中文字幕一区二区三区 | 欧美60浓毛大泬视频一级 | 一区二区三区激情 | 日韩精品欧美精品国产精品 | 精品国产蜜桃 | 亚洲愉拍自拍欧美精品 | 亚洲激情 | 伊人激情一区二区三区 | 日本乱熟 | 国产黄在线观看免费观看 | 国产a∨精品一区二区三区不 | 国产一区二区三区在线免费 | 宝宝真骚是不是想被c | 一区二区三区在线观看高清视频 | 国产精品乱码一 | 日本护士视频欧美无砖专区 | 欧美日韩在线第一 | 国产精品欧美激情一区二区亚洲 | 最好看免费观看高清电影大全 | 91国产最 | 成年在线影视免费观看 | 亚洲精品成人自拍视频 | 欧美在线观看精品国产 | 精品国产系列 | 国产精品va在线观看丝瓜影院 | 国产亚洲束缚综合在线 | 亚洲国产欧美在线观看片不卡 | 国产福利不卡在线观看视频 | 日本性xxxx | 国产一在线精品一区在线观看 | 欧美午夜激情影院 | 欧美高清午夜视频 | 亚洲成片 | 欧美日本一本 | 精品一区二区三区3d动漫 | 精品中文字幕在线观看 | 亚洲综合激情另类小说区 | 欧美日韩中文字幕一区二区三区 | 国产在线视频凹凸分类 | 无线资源国产资源好片欧美 | 欧美日韩一区在线观看 | 欧美va天堂va视频va在线 | 日本精品二三区视频在线观看 | 欧美不卡一区二区三区 | 99免费在线视频 | 午夜自产精品一区二区三区 | 国产中国三级在线视频 | 免费91视频 | 亚洲欧美中文日韩v在线 | 久青草国产在线视频高清正片 | 日韩在线一二三四区 | 精品精品国产自在97香蕉蜜芽 | 国产做国产| 97精产国品一二三产区 | 国产日韩中文字幕制服 | 国产亚洲日韩网曝欧美精品 | 国产精品剧情一区二区在线观看 | 黄工厂精品视频在线观看 | 亚洲第一国产综合 | 蜜桃mv在线播放免费观看视频 | 国产乱老熟视频 | 附近寂寞单身 | jizz成熟 | 国产一区日韩一区二区三区 | 日本不卡一区二区三区www | 国产一区二区视频在线关看 | 中文字幕日本一本二本 | 日韩欧美一区二区视频在线播放 | 国产免费不卡一区在线视频 | 精品国产理论在线进入 | 91香蕉国产线在线观看免费 | 国产欧美高 | 久青青在线观看视频国产 | 国产精品区1日本午夜影院 亚洲精品高清 | 欧美特黄aaaaa | 亚洲激精日韩激情欧美激 | 亚洲精品免费视频观看 | 久操视频免费 | 日本高清视频色www在线观看 | 国产aa | 91人成网站色www免费 | 欧美成在线国产更新影片资源 | 国产精品乱码高清在线 | 人摸人爱视频 | 欧美亚洲欧美日韩中文二区 | 亚洲精品国产高清在线观看 | 亚洲精品国产精品国自产观看 | 欧美日韩一区二区高清不卡 | 精品小说每天送 | 国产日韩欧美小视频 | 久在线中文字幕亚洲日韩 | 欧美日韩一级免 | 探花视频18免费观看 | 91午夜视| 日韩午夜视频 | 日本高清不卡一道免费观看 | 国产午夜福利精品电影 | 国产精品免费看 | 国产在线看片护士免费视频 | 欧美日韩一区二区综合在线 | 日韩精品一区二区三区在线 | 国产欧美日韩综合一区二区三区 | 国产又黄又粗又硬又爽视频 | 欧美整片sss第一页视频 | 国产乱码精品一区二三区最新 | 国产日产高清欧美一区等 | 日韩精品一区二区三区99 | 午夜欧美性视频在线播放 | 欧美在线播放成人a | 自拍偷在 | 日本乱理伦片在 | 国产在线91精品入口 | 三级视频网站在线观看视频 | 国产女优一区二区在线观看 | 国产高清日韩精品欧美激情 | 欧洲亚洲一区二区三区导航 | 亚洲欧美日韩一区在线观看 | 美国特黄三级完整在线电 | 国产精品免费一区二区三区 | 国产又粗又大又爽又免费视频 | 国产中文成人精品久v | 国产高清成人mv在线观看 | 欧洲精品色 | 九九免费视频网站 | 一本一本 | 欧美性性性| 精品精品国产欧美在线观看 | 精品欧美极品视频在线播放 | 人与动人物a级在线播放 | 国产偷国产偷亚洲欧美高清 | 中文字幕亚洲欧美专区不卡 | 欧美日韩一区二区三区四区91 | 国产盗摄视频在线 | 国产色啪a∨在 | 国产香蕉 | 乱伦综合免费国产 | 国产热门视频在线观看日韩 | 国产sm重味一区二区三区 | 又粗又硬又长又黄又爽 | 国产自拍偷拍在线一区二区 | 性xxx69xxx视频在线观看 | 成人免费视频在线观看 | 日韩欧综合精品 | 国产专区欧美专区在线观看 | 欧美线在线精品观看视频 | 国产一卡二卡 | 亚洲日本在线中文字幕 | 一区二区三区在线观看视频 | 日本一区视频在线观看 | 免费大mm视频在线观看 | 日韩欧美一及在线播放 | 中文字幕在线免费 | 欧美性猛交xxxx乱大交3 | 欧美日韩国产丝袜另类 | 国内自拍中文欧美 | 国产精品专区第一页在线观看 | 亚洲欧美综合人成在线 | 大香煮伊在2025一二三久 | 在线国产久 | 一级做a爰 | 欧美日韩一区精品在线 | 黄乱色伦短篇小说 | 国产日韩欧美视频在线观看 | 国产日韩在线视频 | 国产亚洲sss在线播放 | 成人欧美激情亚洲日韩蜜臀 | 欧美一级特黄aaa大片在线观 | 日韩视频www永 | 国产一区二区三区在线免费 | 福利第二页精品推荐在线观看 | 国产亚洲91精品色在线 | 欧美日韩免费一区二区在线 | 黄乱色伦短篇小说 | 国产亚洲中文不卡二区 | 日韩欧美精品一级特黄大片 | 精品日韩欧美一区二区三 | 国产视频 | 欧美性一区二区三区 | 久9视频这里只有精品试看 伊人成色综 | 欧美高清一区三 | 99re8这里有精品热视频 | 99在线视频免费观 | 日韩高清免费 | 亚洲色久婷婷 | 蜜桃视频免费 | 欧美在线网站 | 亚洲高清不卡 | 成人免费一区二区 | 国产91精品一 | 日本老师xxxxx18 | 91精品国产自在现线91 | 国产伦精品一区二区三区 | 日韩美女在线视频一区 | 看片免费人成视频 | 99亚洲国产综合 | 日韩精品一区二区三区四区 | 日本乱码乱码免费高清视频 | 国产极品翘臀在线观看 | 国产又爽又黄 | 午夜激情影院 | 国产在线视频无卡a | 国产精品网站在线播放 | 成人a视频在线观看 | 国产高清视频在线播放 | 91短视频版在线观看高清 | 国产精品亚洲综合视频 | 直播app下载 | 欧美影视 | 在线人成免费视频69国产 | 天堂中文最新版在线中文 | 国产偷国产偷精 | 怡红院免费的全部视频 | 亚洲影视网| 日韩福利 | 96在线视频精品 | 国产在线一区二区三区四区居文沛 | 国产大道香蕉大在线 | 女人靠逼视频不卡的 | 精品一区二区三区影院在线午 | 久天堂视频中文字 | 亚洲国产综合人成综合网站 | 日韩淫片一区二区 | 精品国产一区二区三区三州 | jizz国产精品大全 | 操人网站 | 亚洲欧美日韩中文高清一 | 91短视频app免费 | 欧美猛交xxxx乱大交 | 中文字幕一区二区三区免费视 | 日韩精品免费 | 亚洲人成伊人成综 | 亚洲日韩国产综合区 | 日韩一级簧片 | 国产亚洲天堂午夜福利小视频 | 成人区精品一区二区不卡亚 | 日本免费一区二区三区最新vr | 日韩欧美中文在线 | 色哟哟网站入口在线观看视频 | 在线精品国产一区二区三区 | 国产在线精品国自产拍影院 | 国产男女免费完整视频 | 国产精品国语对白露脸在线播放 | 99视频在线精品自拍 | 新欧美三级经典在线观看 | 日本黄一级日本黄二级 | 日韩免费一区二区三区高清 | 欧美精品黄页在线观看2区 日韩美中文字幕一二三区 国产精品nv在线观看 | 日本高清ww | 精品国产呦系列在线观看 | 玖月影视 | 9277免费高清在线观 | 亚洲人成依人成综合网 | 大伊香蕉在线观看视频 | 在线日韩日本国 | 国产免费h视频在 | 噼里啪啦的视频免费观看 | 99在线视频 | 国产精品不卡在线观看的a站 | 国产在线直播一区二区 | 精品自拍网友区在线观看 | 最新在线观看视频国产91 | 国产探花 | 日韩欧美大片精品黄 | 日本www在线视频 | 精品视频免费看天天春夜夜春 | 国产丝袜视频 | 一本大道精品视频在线 | 日韩高清码中文字幕日韩 | 强伦轩一区二区三区四区播放方式 | 999y| 天天射天 | 97超频精品视频在线观看 | 变态另类清纯唯美中文 | 中文字幕亚洲激情 | 欧美午夜高清在线 | 国产精品高清免费网站电影 | 欧美午夜性刺激在线观看免费 | 日韩在线成年视频人网站观看 | b站永久免费看片大全 | 日韩性爱在线观看 | 欧美中文小说在线观看 | 日韩欧美亚洲一区二区综合 | 免费香蕉一区二区在线观看 | 欧美精品国产制服一区 | 憧憬成为魔法少女 | 香蕉国产一区二区 | 日韩在线视频一区中文字幕不卡 | 午夜网站在线观看www | 国产中文字幕精品在线观看 | 天美麻花星空免费观看乡村版 | 日本妞xxxxxx| 日韩电影手机在线观看 | 欧美另类第一页 | 国产一二三四区 | 日本亚洲综合在线 | 亚洲一区制服丝袜 | 欧美精品一区二区在线观看 | 337p日本大胆欧美人 | 在线视频一区二区三区不卡 | 日韩一区二区三区在线精 | 免费看高视频hh网站免费 | 国产黑色丝袜在线观看下 | 欧美精品v国产精品v日韩精 | 国产普通话对 | 最爽的乱淫视频国语对 | 日韩四色在线视频观看网站 | 8x福利精品第一导航 | 日韩第一香蕉 | 欧美a级片一区二区在线播放 | 丰满岳乱一区二区三区在线观看 | 免费观看性欧美大片无片 | 九一国产 | 国产区免费视频 | 天天看片在线观看 | 国产精品一区二 | 色琪影院 | 97视频精品全国免费观看 | 国产最新看片在线 | 一二三四视频免 | 爱情岛论坛 | 欧美日韩制服诱惑在线观看 | 国产精品视频分类一区 | 成人精品视频一区二区三区尤物 | 亚洲国产一区视频 | 国产一级a毛一级a视频 | 国产污污污十八在线精品观看 | 日韩一区二区视频在线观看 | 91免费在线看 | 国产一区二区在线日韩 | 青青草色 | 色撸撸在线视频 | 欧美网站一区二区 | 欧美在线看片免费观看 | 精品国精品国 | 成人免费高清视频网址 | 亚洲痴女 | 国产精品一线免费观看 | 亚洲第区 | 亚洲人成在线观看影院 | 欧美多人顶级午夜寂寞影院 | 亚洲熟女乱色一区二区三区 | 欧美亚洲国产高清在线 | 国产亚洲欧美另类一区二区三区 | 成人午夜电影网十八岁勿入 | 国产午夜免费视频 | 国产综合一区二区在线观看 | 日韩大片高清播放器 | 精品成人免费 | 中文字幕资源网在线观看免费 | 精品国内一区二区三区蜜桃 | 91精品综合 | 奇奇影院 | 日韩一区二区视频在线 | 国产亚洲精品综合在线网址 | 欧美+日本+国产+在线观看 | 亚洲色国产电 | 精品影视 | 欧美日韩国产综 | 污网站在线观看视频平台 | 国产又色又爽又刺激在线观 | 国产夜色精品视频伊甸园 | 小说区亚洲自拍 | 日韩欧美中文字幕一字不卡 | 日本爽爽爽爽爽爽在线观看免 | 亚洲欧美色一区二区三区 | 日本免费| 大香伊蕉在人线国产最新75 | 国产精品不卡视频 | 99国产婷婷综合在线视频 | 亚洲小说欧美中文在线 | 青草青在线 | 欧美猛交喷潮在线播放 | 亚洲成脛∨人片在线观看福利 | 成人日韩高清 | 国产亚洲人成在线影院 | 日本中文字幕乱码在线精品 | 91午夜福利国产秒播在线观看 | 国产亚洲精品国产福利 | 国产最爽乱淫视频国语对白 | 国产精品亚洲日韩aⅴ在线 日本妇人 | 成年人免费体 | 18成禁 | 这里只有精品在线视频 | 97韩剧(tv)网 | 日韩欧美视频在线观看播放不卡 | 欧美一级一区二区电影 | 香蕉国产亚洲精品va在线观 | 精品欧美一区二区在线看片 | 国产精品欧美亚洲制服 | 欧美性生| 日本亚洲欧美国产电影在线观看 | 男人花免费观看视频在线观看 | 亚洲欧美精品综合中文字幕 | 乱子伦视频一区二区三区 | 精品日韩嗷嗷视频在线观看 | 91精品中文字幕 | 海角社真实xxⅹ人伦 | 成人高清在线视频 | 忘忧草影院在线www韩国日本 | 老司机深夜影院入口aaaa | 欧美一级日韩一级亚洲一级va | 国产精品永久免费 | 99视频精品全部免费免费观 | 中文字幕一精品亚洲无线一区 | 精品高清在线一区 | 高清免费| 国产全部 | 国产99久9在线视频传媒 | 欧洲乱码伦网站 | 中文精品视 | 欧美精品黄页在线视频高清 | 国产精品自在拍在 | 欧洲美熟女乱又 | 日日爽夜夜 | 亚洲国产欧美日韩精品18 | 精品国产午夜福利不卡在 | 国产精品一级国产精品片 | 国产在线精品一区免费香蕉 | 99视频精品全部免费 | 亚洲日日 | 国产一区二区三区四区五区 | 91香蕉网| 国产欧美一区二区综合 | 7799天天综合入口精品 | 97电影理论片在线观看 | 午夜成人激情视频 | 精品国产美女一级a爱 | 国产亚洲精品综合一区 | 区二区不卡 | 国产日韩欧美制服一区二区 | 国产视频99kai| 国产色系视频免费在线观看 | 国产va免费精品观看精品 | 中文字幕中字在线视频 | 日韩a级片在线观看 | 日韩精品国产一级 | 日韩精品人成在线播放 | 精品卡一卡二卡3卡高清乱码 | 亚洲一区二区三区在线观看网站 | а√天堂地址在线网 | 国产的精| 国产精品喂奶在线播放 | 日本高清视频在线观看不卡 | 国产a视频精品免费观看 | 色五月最新网 | 欧美在线区| 色人阁第四色 | 正在播放国产一区 | 亚洲色精品视频 | 日韩福利影院 | 国产高清www免费视频 | 精品国产午夜理论片在线 | 成人免费观看网欧美片 | 国产a网 | 欧美精品一区二区在线观看 | 国产路线1国产 | 男男女女爽爽爽免费视频 | 丰满在线观看 | 中文字幕婷婷在 | 色偷偷中文字 | 欧美亚洲日韩一区二区三区中 | 91国产精品午夜福利免费 | 日韩欧美精品一区二区三区经典 | 精品国产自在钱自 | 精品国产午夜肉伦 | 亚洲视频在线观 | 欧美激情国产日韩在线 | 国产女同一区二区三区五区 | 高清欧美性猛交xxxx黑人猛交 | 漂亮大学生韩国三级播放国产 | 7m在线视频国产最新 | 欧美日韩一区二区在线 | 国产对白精品刺激一区二区 | 国产在线不卡精品网站互動交 | a天堂中文在线天堂资源中文 | 区水蜜桃在线观看 | 国产亚洲aⅴ在线观看不卡 国产免费a视频网站在线观看 | 国产精品福利自产拍在线观看 | 国产高清久 | 欧美69视频在线观看 | 污污网站免费 | 中国字幕在线看韩国电影 | 亚洲色大成网站www在线观看 | 国产精品综合在线观看 | 成全视频在线观看免费高清 | 国产亚洲视频中文字幕在线视频 | 欧美专区亚洲专区 | 大伊香蕉在线观看视频 | 国产99视频精品免 | 国产在线不卡一区 | 国产在线精 | 国产乱码卡二卡三卡4 | 欧美精品一区三区在线观看 | 亚洲а∨精品天堂在线 | 国产玉足脚 | 国产20 | 99爱这里只有精品 | 亚洲精品国产精品成人不卡 | 欧美日韩国产码高清综合 | 欧美专区亚洲专区 | www国产精品 | 国产小视频在线观看网站 | 亚洲人成欧美中文字幕 | 亚洲免费人成在线视频观看 | 欧美精品在线 | 欧美乱伦国产精品 | 中文字幕欧美 | 在线播放成人高 | 精品中文日本电影免费 | 中文字幕偷乱视频在线 | 精品欧美一区二区三区免费观看 | 91福利日 | 国产国产人精品视频69 | 中文精品| 日本高清一二三不卡区 | 国产精品兄妹伦理片一区二区 | 亚洲色偷偷偷综合网另类小说 | 国产群p视频在线观看 | 97午夜理论片影院在线播放 | 97在线视频免费观看视频免费 | 成在线人永久免费视频播放 | 欧美人体一区二区视频 | 中文国产欧美影视 | 成人精品视频一区二区三区 | 国产日韩在线精品 | 亚洲日本va在 | 欧美日韩国产一区二区三 | 国产精品美脚玉 | 91国产在线 | 热播电影在线观看 | 国产最大在线色综合91 | 国产日韩欧美亚欧在线观看 | 日本中文一二区有码在线 | 国产尤物一区在线不卡 | 韩国精品视频一区二区在线播放 | 日韩第一页 | 18岁成年人网站 | 日本免码va在线看免费最新 | 欧美午夜婷婷国产电影 | 国产精品xxxx国产喷水 | 精品欧美在线观看 | 欧美国产日韩另类 | 日韩激情精品一区二区三区 | 999精品在线| 成人亚洲中文字幕在线精品 | 亚洲国产精品第一区 | 日本亚洲欧美风情 | 亚洲精品aⅴ中文字幕乱码 国产综合精品在线 | 国产精品老熟女露脸视频 | 高清一区二区三区视 | 精品综合视频一区二区 | 国内自拍一区 | 91视频app污| 老司机99视频在线免费观看 | 欧美伦理一区二区三区电影 | 在线观看有 | 欧美偷窥清纯综合图区 | 成人乱码| 国产乱子伦沙发睡午觉 | 日韩中文字幕网站 | 日本道在线视频 | 国产精品高清在线一区二区三区 | 国产精品爽爽va在线观看网站 | 国产色综合免费观看 | 韩国美女一区二区 | 国产老熟女精品一区二区 | 最近中文字幕完整版免费视 | 亚洲成年人网 | 日韩一区二区三区免费网站 | 成年黄页网站大全免费看 | 91桃色国产线观看免费 | 国产在线视频凹凸分类 | 欧美日韩精品乱国产 | 亚洲欧美日本国产专区一区 | 国产精品第2025在线 | 手机播放 | 福利二区 | 偷拍视频一区二区三区 | 97国产在线一区不卡 | 成年男人午夜片免费观看 | 国产福利短视频在线播放 | 亚洲精品自偷自拍 | 无限资源吧国产片1在线观看 | 日本三级免费网站 | 99精品高清视频观看a | 精品13页| 亚洲精品亚洲人成在线播放 | 国产a在亚洲线播放 | 99精品不卡一区二区三区 | 日本不卡免费中文字幕一 | 国产欧美日韩精品不卡在线观看 | 国产又爽又黄又爽又刺激 | 国产美女一级做视频爱 | 天堂8在线天堂资源 | 男人的j| 亚洲人成网7777777国产 | a级国产乱理论片在线播放 国产精品日韩精品在线 | 一本大道熟 | 一级特黄高清aaa | 国产美女淫秽一区二区三区 | 在线观看高清无 | 国产精品熟女视频一区二区 | 亚洲一区免 | 91一区二区午夜免费 | 中文字幕亚洲无线码一区女同 | 日本免费在线 | 日韩综合在线视频小说 | 成人性视频免费网站在线 | 日韩高清在线观看 | 欧美日韩国产首页 | 国产小电影在 | 国产精品九九视频 | 最近中文字幕 | 国内精品自在自线视频香蕉 | 日本成人大片一区二区 | 国产精品一区二区三区免费视频 | 99精品热这里只有精品 | 日韩高清在线观看不卡一区二区 | 国产福利在线观看视频 | 欧美大片va欧美在线播放 | 手机免费看一级 | 色老板在线精品免费视频 | 91精品啪在线观看 | 日韩视频www永 | 日本国产在线视频 | 美女福利 | 国产a∨精品一区二区三区不卡 | 欧美激情视频区一区二区在线观看 | 日韩高清亚洲精品va | 一本大道香蕉中文在线视频 | 精品一区二区三区免费观看 | 在线视频播放 | 免费无挡无| 欧美日韩一二三区 | 91精彩视频在线观看 | 在线视频下载 | 国产又大又粗又黄又爽的视 | 国产二三区 | 欧洲尺码日本尺码美国欧洲lv | 国内性色精品视频 |