老司机夜插-理伦理片-理伦片免费-理伦片免费观看-理伦片免费看-理伦日韩-理论福利片-理论片第一页-理论片电影-理论片理论

金喜正规买球

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
国产乱子伦视频大全 | 在线观看国产精选免费 | 欧美日韩免费一区高清 | 永久国产 | 国产精品99r8免费视频2022 | 免费视频久久 | 亚洲成综合 | 麻豆自制传媒 最新网站 | 亚洲欧美手机在线观看 | 日韩亚洲欧美中文高清在线 | 久久久九九精品国产毛片A片 | 五月天社区 | 久久久综合香蕉尹人综合网 | 欧美精品hdxxxxx | 师尊被掐着腰做到潮喷纯肉GB | 久久国产成人精品Av | 精品不卡高清视频在线观看 | 91尤物国产尤物福利在线 | 亚洲制服丝袜在线观看 | 天堂8а√中文在线官网 | 天天燥日日燥 | 欧美色啪 | 中文字幕一区在线观看 | 国产香港特级一级毛片 | 日本高清免费在线视频 | 香蕉在线综合2019版 | 国产精品人妻一码二码 | 风韵丰满熟妇啪啪区老老熟女百度 | 欧亚乱色熟一区二区三四区 | 4480yy午夜私人影院 | 隔壁邻居大乳在线播放 | 性开放的欧美大片高清播放 | 在线看免费毛片 | 久久毛片免费看一区二区三区 | 沈清秋屁股扒开臀缝调教 | 98久久人妻少妇激情啪啪 | 久久99精品国产99久久 | 国产全黄a一级毛片 | 中文精品一区二区三区四区 | 色噜噜狠狠狠狠色综合久不 | 国产网曝门亚洲综合在线 | 色综合久久88色综合天天提莫 | 在线播放一区二区 | 国产亚洲精品久久精品69 | 日本韩国的免费观看视频 | 亚洲精品A片99久久久久 | 青草国内精品视频在线观看 | 开心色插 | 影音先锋av熟女资源网 | www.黄视频 | 亚洲精品123区| 可以直接看的av网址站 | 少妇高潮灌满白浆毛片免费看 | 日韩精品在线视频观看 | 久久国产免费观看精品 | 国产精品一区二区免费 | 日韩大片在线观看 | 最新亚洲一区二区三区四区 | 天堂tv亚洲tv日本tv欧洲 | 一卡二卡三卡四卡无卡在线 | 欧美性v | 国产精品久久人妻无码网站蜜臀 | 欧美日韩免费看 | 黄色网址播放 | 日日噜噜夜夜狠狠视频buoke | 色播五月www 222uk | 日本久久精品 | www欧美视频 | 日本三级韩国三级韩级在线观看 | 国产精品免费久久久免费 | 大又大粗又爽又黄少妇毛片 | 日本三级在线观影 | 免费观看欧美一级牲片一 | 91热久久免费精品99 | 久久人人爽爽人人爽AA片 | 久久久无码AV精品亚洲网站 | 黄色a一级 | 成人特级毛片 | 家庭教师波多野结衣 | 精品视频入口 | 伦理片美亚影院 | 91天堂影院| 亚洲愉拍自拍另类天堂 | 天天爱天天做天天爽天天躁 | 国产精品视频九九九 | 中国疯狂做爰XXXX高潮 | 99热久久最新地址 | 国产精品人妻99一区二区 | 亚洲A片成人无码久久精品 亚洲A片不卡无码久久 | 亚洲 欧美 制服 中文字幕 | 亚洲 欧洲 国产 日产 综合 | 精品久久久久久无码人妻国产馆 | 免费观看一级成人毛片软件 | 韩国美女毛茸茸 | 色窝窝免费播放视频在线 | а8天堂资源在线官网 | 婷婷五月俺也去人妻 | 国产在线高清视频无码 | 欧美另类色图片 | 亚洲色图激情小说 | 视频二区日韩 | 欧美 亚洲 日韩 在线综合 | 成熟人妻AV无码专区A片 | 日韩乱码在线观看 | 摸捏奶头动态图 | 看看少妇的阳道毛偷拍女浴室 | 风流少妇A片一区二区蜜桃 风流少妇与黑人做爰 | 国产不卡高清在线观看视频 | 99色视频在线 | 日韩电影免费在线观看中文字幕 | 久操手机在线视频 | 欧美日韩色情FTP在线播放 | 色哦色哦哦色天天综合 | 国产免费久久精品国产传媒 | 都市人妻古典武侠另类校园 | 国产91一区二区在线播放不卡 | 久久精品人妻无码一区二区三区V | 狠狠色婷婷综合天天久久丁香 | 可乐视频国产区 | 91制片厂制作果冻大象传媒 | 美女扒开尿口让男人桶进 | 国产亚洲玖玖玖在线观看 | 国产久操视频 | 国色天香视频社区手机版 | 欧美成人无码视频午夜福利 | 无码欧美喷潮福利XXXX | 日日夜夜天天干干 | 樱花树下未删减在线观看 | 日本高清免费一本视频无需下载 | 免费观看片 | 99久久久无码欧美精品性 | 99久久无码一区人妻A黑国产馆 | 免费中文字幕不卡视频 | 日日碰狠狠躁久久躁7777 | av撸色| 乱码精品一卡二卡无卡 | 国产精品日本免费视频 | 又硬又粗进去好爽A片欧美 又硬又粗进去好爽A片天美APP | 粗长巨龙挤进美妇 | 国产日韩精品一区二区在线观看 | 一本色道久久综合亚洲精品加 | 免费一级特黄欧美大片久久网 | 国产剧情www.yw193.com | 无码人妻AV一区二区三区96 | 美国全免费特一级毛片 | 91综合网| 少妇做爰喷水高潮呻吟A片免费 | 一级片免费在线观看 | 久久免费网| 2020年日本高清一卡二卡三卡四卡 | 久久精品美女 | 中国免费黄色片 | 欧美色第一页 | 成人性生交A片免费看麻豆 成人性生交大片免费看中国A片 | 性欧美xxxx | xxxwww黄色| 丰满熟妇被掹烈进入高清片 | 艳妇荡岳丰满交换做爰 | 四虎影视免费完整版在线观看 | 免费a级网站 | 日产精品卡2卡三卡乱码网站 | 美女被C污黄网站免费观看 美女被抽插舔B到哭内射视频免费 | 欧美日韩亚洲成人 | 一区二区三区高清不卡 | 一本色道久久爱88AV俺也去 | 永久免费观看黄网站 | 中文字幕乱码熟女人妻水蜜桃 | 中文字幕精品视频在线观看 | R男女牲交45分钟A片 | 日韩福利视频高清免费看 | 插老师进去了好大好舒服小说 | 亚洲精美视频 | 性欧美xxxxhd| 99久久精品免费看国产一区二区三区 | 亚洲国产麻豆 | 巨大黑人极品vjdeo | 日本无码V视频一区二区 | 日本中文字幕在线播放 | 久久精品国产福利国产秒 | 久操视频在线观看 | 老司机精品在线 | 最新本道高清无码av | 青青青国产精品免费观看 | 少妇大叫又粗又大太爽A片 少妇大乳妓女毛片A片 | 五月天婷婷激情网 | 欧美日本一道免费一区三区 | 免费观看久久 | 免费激情网址 | 97爱爱爱 | 泷泽萝拉qvod快播 | 曰本熟妇乱妇色A片在线 | 国产综合有码无码中文字幕 | 国色天香精品卡一卡二卡三二百 | 精品国产成人 | 五月天婷婷视频在线观看 | 午夜亚洲动漫精品AV网站 | 永久在线免费 | 国产网站91| 一久久 | 影音先锋资源站男人网 | 国产一区二区三区四区精华 | 日本视频一区二区免费播放 | 自拍小电影 | 亚洲伊人成色综合网 | 91秒拍国产福利一区 | 男人天堂网2021| 成人YY视频在线观看 | 免费看高视频hh网站免费 | 97看片| 国产特一级毛片 | 国产精品久久精品第一页不卡 | 日韩精品视频美在线精品视频 | 日本欧美中文字幕人在线 | 国产男女猛烈无遮挡A片软件 | 最爽最刺激18禁视频 | 国产又爽又黄无码无遮挡在线观看 | 欧美精品色婷婷五月综合 | 欧美裸色美妆大全 | 一二三四日本无码影视 | 午夜DJ国产精华日本无码 | 亚洲黄色免费观看 | 大陆极品少妇内射AAAAAA | 一个色综合亚洲色综合 | 97蜜桃网| 特级毛片AAAAAA | 91免费观看在线网址 | 免费看黄网站在线看 | 婷婷色五月另类综合视频 | 饥渴少妇A片AAA毛片小说 | 色-情-乱-交-二三区视频 | 最近韩国中文字幕更新 | 俺去也官网 | 欧美爆操 | 四虎影视免费看 | 成人在线午夜 | 免费无码毛片一区二区三区A片 | 一区二区三区美女视频 | 一级片网站在线观看 | 国产精品久久福利新婚之夜 | 日本欧美中文字幕 | 深爱综合网 | 无节操摄影部第一集第二集 | 最近最好的中文字幕2019 | 天天夜夜啦啦啦 | 欧美日韩国产伦理 | 国产成人v爽在线免播放观看 | 国产在线码观看清码视频 | 免费成人电影在线观看 | 性一乱一交一A片视频 | 久久精品久噜噜噜久久 | 91精品国产免费青青碰在线观看 | 久热亚洲精品一区二区 | 亚洲xxx视频 | 成人18在线视频播放 | 国产日韩成人内射视频 | 亚洲久久无码在线视频 | 日本一区二区三区免费更新不卡 | 99国内视频| 韩国男人的天堂 | 丁香色狠狠色综合久久小说 | 波多野结衣在线播放 | 92看片淫黄大片一级 | 欧美大码毛片在线播放 | 夜色成人网| jizz 日本| 国产女人毛片好多水 | 女人潮抽搐动态图gif后 | 日本欧美中文字幕人在线 | 色播在线电影 | 奥様は元ヤリマン | 久久网免费 | 天天操天天做 | 亚洲一区二区三区在线视频 | 精品国产91乱码一区二区三区 | 国产精品久久免费视频 | 无码中文字幕免费一区二区蜜桃 | 欧美在线观看一区二区三 | 天堂8在线天堂资源bt | 国产99视频在线观看 | 日本人妻仑乱少妇A级毛片潘金莲 | 国内精品久久久久久久试看 | 毛茸茸性毛茸茸大b | 亚洲制服另类 | 亚洲夜夜爱 | 国产一级第一级毛片 | 久久理伦片琪琪电影院 | 亚洲射图| 国产精品18久久久久久欧美网址 | 国产一性一交一伦一A片 | 国内精品久久 | 欧美日韩影院 | 日韩精品中文字幕在线 | 1000部做羞羞事禁片免费视频网站 | 国产成人精品一区二区 | 婷婷中文 | 亚洲精品无码一区二区色戒 | 花房姑娘免费观看8集电视剧高清 | 欲妇荡岳丰满少妇岳A片 | 国产国语一级毛片中文 | 2018亚洲男人天堂 | 午夜久久精品 | 亚1州区2区3区产品乱码 | 天天干天天射天天 | 色青片大全电影国语 | 古装一级淫片a免费播放口 古装一级无遮当一级毛片 古装一级毛片手机免费看 古装一级毛片免费观看 | 色天天综合网色天天 | 荡公乱妇翠翠 | 欧美与黑人午夜性猛交久久久 | 91视频导航 | 小秘书夹得好紧太爽H大肉乳 | 麻豆最新国产剧情AV原创免费 | 3d 肉 蒲 团| 丰满多毛少妇做爰视频 | 扒开双腿被两个男人玩弄视频 | 免费理伦电影 | 草久视频在线观看 | 精品国产91久久久久久久 | 国产免费福利在线视频 | 天天综合网天天综合色不卡 | 国产精品一区二区三区免费 | 谁有色网站 | 欧美人妖ts | 在线成人精品国产区免费 | 欧美黑人添添高潮A片WWW | 日韩精品一区二区在线观看 | 日本三级观看高清免费 | 少妇内射视频播放舔大片 | 非洲黑人女bbwxxxx | 亚洲欧洲巨乳清纯 | 久久亚洲精品无码A片大香大香 | chinese国产hdfree中文 | 国产成熟妇人高潮A片 | 免费做A爰片久久毛片A片下载 | 日韩精品在线观看视频 | 2020欧美极品hd18 | 午夜精品一区二区三区免费视频 | 五月天丁香婷婷网 | 性欧美人| 99re在线精品99re8热视频 | 理论片带中文2019 | 日日夜夜综合 | 亚洲国产高清视频 | 天天舔天天插 | 日本A片色情AAA片WWW | 日本精品不卡 | 婷婷五月开心五月色情 | 天堂国产在线观看 | 一本久道综合五月色婷 | 手机av在线播放 | 美女性生活毛片 | 精东麻豆 | 天天干天天舔天天操 | 国产 日韩 欧美 综合 激情 | 桃子视频在线观看高清免费视频 | 最新中文字幕日本 | 亚洲国产欧美在线人网站 | 久久se精品一区二区国产 | 欧美日韩免费大片 | 国产成久久免费精品AV片天堂 | 久久综合九色综合97_ 久久久 | 国产精品人妻系列21P | 色婷婷在线观看视频 | 亚洲精品久久久AV无码专区 | 国产成人在线观看免费网站 | 丰满人妻无码AV一区二区免费 | 久久a 热6| 国产免费又黄又爽又色的小说 | 国产精品久久无码人妻一区二区 | 巜疯狂的少妇4做爰HD | 国产做A爱片久久毛片A片小说 | 97久久综合精品久久久综合 | 伊人二区 | 日本在线视频一区二区 | 妞妞影视一二三区 | 久久国产精品99久久久久久牛牛 | 老湿机免费体十分钟 | 全黄a免费一级毛片人人爱 全古装一级毛片大全 | 欧美流行 在线播放 | 夜夜躁狠狠躁日日躁2024 | 日本69色视频在线观看 | 成人麻豆日韩在无码视频 | 欧美五月 | 午夜精品九九九九99蜜桃 | 黄色在线网站视频 | 色综合久久久久久久久久久 | 苍井空A级在线观看网站 | 人人撸狠狠碰 | 免费一级欧美大片在线观看 | 永久免费精品视频 | 日本视频免费观看的网站 | 亚洲精品一卡2卡3卡四卡乱码 | 好吊日在线视频 | 成av人电影在线观看 | 宝宝影院| 高树玛利亚种子 | 天堂在线中文网 | 囯产精品一区二区三区线 | 国产人妻一区二区三区色戒乐 | 日本喷潮 | 在线你懂得 | 午夜亚洲视频 | 国产精品久久久久久久免费大片 | 最近免费中文字幕MV | 九九精品久久久久久噜噜中文 | 97人妻熟女中文免费视频 | 色婷婷六月 | 少妇大叫太大太粗太爽了A片在线 | 偷拍欧洲亚洲性 | 日本一区二区在线看 | 免费无码毛片一区二区A片 免费无码精品黄AV电影 | 亚洲人成一区二区不卡 | 快播色导航 | 放荡勾人h的辣文 | 中文在线免费不卡视频 | 久久久久久综合一区中文字幕 | 香蕉视频国产精品 | 亚洲精品久久久久秋霞 | 辽宁老熟女高潮狂叫视频 | 特级做A爰片毛片免费看无码 | 斯大林格勒战役免费高清观看 | 日韩免费黄色片 | 老少交玩TUBE | 婷婷狠狠| 国产91一区二区在线播放不卡 | 性一交一伦一A片免费看 | 欲色影视天天一区二区三区色香欲 | 综合久青草视频 | 欧美激情精品久久久久久久 | 乱码一二三入区口 | 色天天综合网色天天 | 黑人外教啪啪中国女留学生 | 国产亚洲欧洲人人网 | 床戏吻戏裸戏视频超长 | 扬名立万免费观看完整版 | 迅雷成人网 | 求个网站你懂的无毒 | 久久久噜噜噜 | 无码日本精品一区二区片 | 波多野结衣免费线在线 | 日本中文字幕巨大的乳专区 | 午夜射精日本三级 | 欧美最骚最疯日B视频观看 欧美做愛坉片 | 精品欧美一区二区3d动漫 | 免费99精品国产自在在线 | 午夜插插插 | 99精品国产三级在线观看 | 丁香婷婷在线 | 天天干天天干天天干天天干 | 饥渴的少妇黑人在线观看 | 免费国产成人高清在线观看网站 | 一区二区视频在线观看高清视频在线 | 野外xxx| 黄色国产精品 | 亚洲一区二区三区在线免费观看 | 最近电影大全免费 | 日本成人不卡视频 | 国产精品国产成人国产三级 | 清扫魔 | 欧美一级三级 | 天天操视频 夜夜 | 一个人看的在线www高清视频 | 日韩欧美在线观看视频一区二区 | 日本中文字幕巨大的乳专区 | 国产又色又爽又黄的视频免费观看 | 亚洲午夜精品A片久久WWW慈禧 | 在线播放国产不卡免费视频 | 九九在线免费视频 | 日本成人一区二区 | 婷婷综合亚洲爱久久 | 亚洲区色情区激情区小说 | 亚洲欧美强伦一区二区另类 | 久久免费精品 | 被两个同桌绑起来玩乳动态gif | 亚洲色无码A片一区二区麻豆 | 午夜福利理论片高清在线 | 最近最新高清中文字幕MV在线 | 精品一区二区三区四区五区六区 | 又大又爽又黄无码A片小说 又大又硬又粗做大爽A片 | 搡老女人老熟妇HHD 搡老熟女老女人一区二区 搡女人真爽免费视频大全 搡女人真爽免费视频网站 骚片AV蜜桃精品一区 | 午夜日韩 | 人人看人人爽 | 无限观看社区在线观看免费 | 一级一级一级一级毛片 | 中文字幕热久久久久久久 | 成年人午夜电影 | 日日噜噜大屁股熟妇AV张柏芝 | 在教室伦流澡到高潮H强圩动漫 | 国语对白清晰好大好白在线 | 91精品手机国产在线能 | 国产成人精品在线 | 另类 校园 人妻 武侠 | 亚洲午夜视频在线观看 | 国色天香综合国产一区 | 国产高清国内精品福利色噜噜 | 毛片A级毛片免费观看品善网 | 偷偷鲁在线影院 | 亚洲不卡一区二区三区 | 色多多成人版污污网站APP大全 | 一级毛片免费播放 | 中文字幕在线视频观看 | 日韩视频免费 | 伊人综合在线 | 午夜三级毛片 | 国内精品久久久久久久999下 | 欧美亚洲日韩国产网站 | 91精品国产亚洲爽啪在线观看 | 草莓.combo2.1深夜释放自己污在线观看 | 免费国产直接看片av | 久久久久久久久久久9精品视频 | 强行进女小姪女小芳 | 谁有色网址 | 亚洲亚洲人成综合网络 | 国产伦精品一区二区免费 | 五月天婷婷在线视频国产在线 | 日韩焦点影视 | 久久天堂成人影院 | 国产国语一级a毛片高清视频 | 免费看污又色又爽又黄又脏小说 | 国产精品久久久久久爽爽爽床戏 | 被双修做到哭H被师尊强迫 被特种兵啪到哭BL 被拖进小树林C了好爽H出租车 | 国产亚洲精品网站在线视频 | 曰韩少妇内射免费播放 | 一区二区人妻精品无码A片 一区二区人妻无码欧美 | 天天射天天拍 | 国产精品日本不卡一区二区 | 偷偷撸在线影院 | v片免费看 | 高清国产精品人妻一区二区 | 国产精品扒开腿做爽爽青涩情侣 | 亚洲看片无码免费视频 | 国产99免费视频 | 午夜在线播放 | 日韩精品人妻AV一区二区三区 | 欧美激情一区二区三区中文字幕 | 亚洲AV无码专区国产精品麻豆 | 亚洲午夜高清 | 国产porn在线 | 国产资源一区 | 一女被两男吃奶添下A片免费网站 | 国产精品无码AV在线观小说 | 成人午夜性A级毛片免费 | 国产乱子伦精品无码码专区 | 国产精品久久久久久久人热 | 亚洲欧美日韩在线观看一区二区三区 | 日本www色视频成人免费免费 | 好爽快点我受不了了国产 | 成人亚洲区无码偷拍 | 国产欧美日韩不卡一区二区三区 | 欧美老头把我添高潮了A片视频 | 97玖玖| 亚洲精品综合一区二区三 | 最新日韩欧美不卡一二三区 | 日日噜噜大屁股熟妇AV张柏芝 | av淘宝 在线观看 | 亚洲日本无码一区二区三区四区卡 | 欧美性生交XXXXX无码久久久 | 婷停五月深爱五月 | 久久视频在线视频观看2019 | 久久99热只有频精品6狠狠 | 粉嫩AV久久一区二区三区 | 毛片基地免费视频a | 最好影院在线免费看 | 国产真实女人一级毛片 | 久久国产精品免费网站 | 婷婷在线视频 | 亚洲欧洲自拍拍偷 | 你懂的中文字幕 | 人人爽天天碰狠狠添 | 午夜视频观看 | 激情射精爽到偷偷C视频无码 | 亚洲尤码不卡AV麻豆 | 黄色片在线网站 | 浪妇叫床叫的很浪的小说 | 最近免费字幕高清在线观看 | 九九热精品免费观看 | 欧美色体 | 无码人妻丰满熟妇A片护士电影 | 影音先锋影院中文无码 | 小黄文污到湿透嗯啊滴水纯肉 | 免费在线观看一区 | 国产麻豆91网在线看 | 国产亚洲精品久久久久久白晶晶 | 精品免费看一区二区三区A片 | 久综合色| 久久久无码精品成人A片小说 | 久久精品一卡二卡三卡四卡视频版 | 欧美の无码国产の无码影院 | 午夜免费看视频 | 国产一区二区在线观看免费 | 天天成人综合网 | 婷综合| 国产一级生活片 | 成人免费在线视频观看 | 日本一区二三区好的精华液 | 小小女视频网站色琼网站 | 亚洲va欧美va国产综合下载 | 免费在线看v片 | 高清不卡二卡三卡四卡无卡 | 黄色免费三级 | 伦理电影中文手机在线观看 | 亚洲精品久久久久一区二区三 | 影音先锋最新av资源库 | www.色网| 国产乱码卡一卡2卡三卡四 国产乱码一卡二卡3卡4卡网站 | 免费看到湿的小黄文软件APP | 好男人社区神马WWW在线观看 | 谁有毛片网站 | 国产大毛片 | 久在线视频 | 欧美1区2区3区 | www.久久综合 | 99re66热这里只有精品免费观看 | 国产亚洲精品久久久闺蜜 | 韩国男人的天堂 | 日本在线日本中文字幕日本在线视频播放 | 性做久久久久久久久浪潮 | 一区二区三区四区在线 | 美丽的小蜜桃2 | 欧美日本免费一区二区三区 | 久亚洲AV无码专区A片 | 亚洲精品无码成人A片在线漫画 | 亚洲欧美日本国产 | 亚洲视频自拍 | 日本在线观看网站 | 久久国产亚洲精品AV麻豆 | 苏南现代化建设示范区规划 | 久久精品成人国产午夜 | 亚洲人成一区二区不卡 | 人人妻人爽A片二区三区 | 色猫成人 | 真实露脸国产熟妇熟年妇人视频 | 男女做爰的全部过程A片 | 久久精品免视着国产成人 | 精品国产人妻一区二区三区免费 | a色毛片免费视频 | 日韩操穴 | 四虎www4hv | 大地影院_日本骚妇 | 四虎 在线播放 | 国产成人深夜福利在线观看 | 日日摸夜夜添夜夜添亚洲女人 | 亚洲在线中文无码首页 | 无码又爽又刺激视频A片涩涩 | 一个好妈妈7中字头强华驿 一二三影院 | 国产免费网站看v片在线 | 丁香五月亚洲中文字幕 | 日韩视 | 精品国产一区二区三区久久影院 | 婷婷开心激情综合五月天 | 日本xxx在线观看免费播放 | 亚洲精品口国自一产A片 | 80电影天堂网香蕉视频 | 无码观看在线电影 | 日韩人妻无码精品系列 | 亚洲欧洲无码AV在线观看你懂的 | 办公室制服丝祙在线播放 | 日本一道一区二区免费看 | 国产又黄又湿又刺激不卡网站 | 性欧美久久 | 亚洲欧美强伦一区二区另类 | J8又粗又硬又大又爽又网站 | 乱码1234区2021| 免费一级a毛片在线播放视 免费一级a毛片在线播放 | 亚洲午夜国产片在线观看 | 亚洲午夜无码毛片AV久久小说 | 亚洲色婷婷久久精品AV蜜桃久久 | 狠狠色伊人亚洲综合第8页 狠狠色网 | 欧美人成在线观看ccc36 | 性一交一乱一交A片久久四色 | 无限看视频在线看 | 黄色在线网站观看 | 清晨被舔醒的NP小说 | 久精品在线观看 | 中文字幕在线有码高清视频 | 玉蒲电影完整版 | 中日文字字幕乱码视频 | 亚洲综合日韩精品欧美综合区 | 最新版资源在线天堂 | 亚洲第一免费播放区 | 日韩在线你懂的 | 黄页视频在线观看 | 人妻熟女狠狠涩蜜桃 | 乱肉怀孕系列小说 | 妇女敕BBB搡BBBBBB搡 | 日本www色视频成人免费免费 | 2021久久伊人精品中文字幕有 | 韩国日本不卡高清免费视频 | 精品国精品国产自在久国产不卡 | 岛国在线无码免费观 | 亚洲天堂男人影院 | 日本一道一区二区免费看 | 日韩熟女精品一区二区三区 | 97色婷婷 | 99奇米a影色777四色在线观看 | 老熟女强人国产在线播放一区 | 国产精品色情国产电影 | 伊人网站| 久一视频在线 | 国产精品变态重口在线 | 日本色免费| 草久在线视频 | 精品人妻无码一区二区三区蜜桃臀 | 灌满抽搐合不拢双性HBL | 国产69精品久久久久观看软件 | 欧美jav | 精品国产品在线2019 | 日韩精品欧美一区二区三区 | 五月综合激情婷婷六月 | 激情综 | 天天综合网久久 | 被黑人猛烈进出到抽搐动A片 | 精品人妻少妇一区偷拍视频 | 国产精品99久久99久久久看片 | A级毛片高清免费网站不卡 a级毛片黄色 | 91小视频在线 | 五月天婷婷影院 | 国产一级高清视频免费看 | 久久亚洲精品国产亚洲老地址 | 好吊射视频988gaocom | 成人黄 在线播放 | 黄毛片免费 | 日本在线国产 | 天天干视频在线观看 | 中文字幕在线视频网 | 亚洲女同在线观看 | 四虎成人免费观看在线网址 | 国产三级精品三级在线专区1 | 国产顶级AAAAA片 | 亚洲精品国产不卡在线观看 | 亚洲国产欧美目韩成人综合 | 国产成人无码啪一区二区 | 国产丰满老熟妇乱XXX1区 | 韩国日本在线 | 麻豆AV久久AV盛宴AV | 看全色黄大色黄大片爽一次 | 伦理片在线线手机版韩国免费观看 | 天天色天天干天天 | 国产精品刺激好大好爽视频 | 涩五月婷婷 | 最近韩国动漫免费观看视频 | 久久ZYZ资源站无码中文动漫 | 国产熟妇的荡欲午夜视频 | 国产综合视频在线观看一区 | 2020年最新国产精品正在播放 | 最近中文免费字幕在线播放 | 亚州日本乱码一区二区三区 | 亚洲精品久久蜜臀AV色欲 | A片做爰片仑理片免费看 | 日韩黄色一级视频 | 在线免费观看毛片 | 国产一国产一级毛片视频在线 | A片做爰片仑理片免费看 | 日本天天操 | 午夜免费电影 | 亚洲综合久久成人A片红豆 亚洲综合激情小说 | 国产人妻丰满熟妇嗷嗷叫 | 天天干精品| 国产成人精品综合久久久 | 国产jizzjizz视频免费看 | 18禁无遮挡羞羞动漫视频免费 | 天天干天天爽天天操 | 久久精品99久久香蕉国产色戒 | 狼人香蕉网 | 国产精品久久毛片完整版 | 久久综合老色鬼网站 | 黄到下面流水的爽文很污的情话 | 亚洲精品久久区二区三区蜜桃臀 | 韩国免费看 | 久久激情免费视频 | 韩国最污禁网站免费观看 | 免费视频国产在线观看网站 | WWW婷婷AV久久久影片 | 久久久国产精品免费A片蜜臀 | 亚洲午夜视频在线 | 欧美精品第三页 | 黑人大JI巴做爰呻吟视频 | 香港三级日本三级韩国三级 | 久操小视频 | 少妇被猛烈进入A片 | 色欲AV久久一区二区 | 99久久精品免费国产一区二区三区 | 18禁无遮挡羞羞动漫视频免费 | 美女扒开腿让男生桶爽免费APP | 四虎影视永久免费观看 | 欧美一级日韩一级亚洲一级 | 国产精品久久国产三级国电话系列 | 国产亚洲精品第一综合另类 | 色琪琪女色窝202477 | 国内揄拍国内精品对白86 | 91国在线产 | 人人看电影 | 被黑人伦流澡到高潮HNP动漫 | 午夜福利合集1000在线 | 麻豆文化传媒精品 | 成人区色情综合小说 | 亚洲欧美色图小说 | 久久精品国产亚洲麻豆小说 | 亚洲国产成人久久三区 | 国内精品久久毛片一区二区 |