日韩福利首页在线观看网站-日韩福利免费网站视频在线-日韩福利局二区视频-日韩福利-日韩二区在线-日韩二区三区四区-日韩二区三-日韩电影中文字幕

半岛外围网上直营

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

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

概述:在各種業務環境中,將各種文檔合并為一個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@ke049m.cn


為你推薦

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


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 欧美日韩乱一区二区 | 国产aⅴ精品一区二区 | jizz成熟丰满| 国产久爱青草视频在线观看 | 日韩中文字幕在线播放 | 91香蕉亚洲精品人人影视 | 国产人成视频 | 日本三级在线播放线观看视频 | 男男女女爽爽爽免费视频 | 美妇岳屈辱迎合 | 天天插一插 | 日本一区二区在线不卡 | 乱码一二三入区口 | 很黄很色的免费视频在线观看 | 男人的天堂a| 国产福利在线观看极品美女 | 日韩国产欧美 | 国产欧美成 | 欧美又色又爽又黄刺激免 | 熟女乱2伦 | 国产丰满 | 日产日韩在线亚洲欧 | 午夜日韩丝袜美女视频网站 | 国内精品视频在线观看 | 欧美精品自拍一区 | 亚洲欧美中文日韩v在线观看 | 99老司机精品视频在线观看 | 91精品一区二区三区蜜桃 | 日韩在线中文字幕欧美 | 欧美日韩一区二区在线观看视频 | 自在自线视频香蕉 | 国外精品视频在线观看免费 | 欧美巨大精品欧美一区二区 | 精品欧美日韩在线视频 | 精品国产福利片在线观看 | 99久热精 | 国产特黄特色大片免费 | 制服丝袜中文字 | 欧美国产极品在线播放 | 最新高清电影免费在线观看下载 | 亚洲国产在线精品国自产拍 | 一级视频在线播放 | 欧美日韩一区二区三区视频网站 | 国产精品伊人 | 成全视频大全高 | 在线播放69热精品 | 日本中文字幕在线精品一区 | 国产精品91在 | 国产精品综合在线观看 | www.激| 国产稀缺另类刺激对白 | 国产精品成人一区二区三区影院 | 色夜影院 | 10000部拍拍拍免费视频 | 一级特黄aaa大片在线观看 | 亚洲一区亚洲二区 | 91蜜桃视频 | 一区视频中文字幕 | 性xxxx视频播放 | 九九线精品视频在线观看视频 | 国产高清亚洲精品视bt天堂频 | 欧美特黄特色aaa大片免费看 | 妖精视频免费观看 | 日韩精品一区二在线观看视频 | 国产免费一区二区视频 | 国产不卡一区二区在线观看 | 日韩高清片一二区 | 国产精品黄在线观看免费 | 国产又色又爽又黄刺激91 | 精品欧美一区二区3d动漫 | 国产日韩综合精品一区二区三区 | 乱子对白 | 久99久热只有精品国产澳门 | 岛国岛国免费ⅴ片 | 最近中文字幕在线中文视频 | 脱岳裙子| 欧美日韩国产精品免费观看 | 国产精品综合视频一区二区 | good神马电影伦理午夜 | 欧美日韩国产一区二 | 成人亚洲偷自拍色 | 日韩电影手机在线观看 | 国产自产在线观看 | 91影视永久福利免费观 | 日本成a人片在线观看网址 视频试看 | 国产午夜亚洲精品不卡电影 | 国产精品一区二区亚瑟不卡 | 国产精品区乱淫片人成人 | 欧美另类一区二区在线观看 | 国产91刘玥在线观看 | 日日夜人人澡人人澡人人看免 | 日韩欧美国产综合在线播放 | 欧美在线观看h片 | 女人被男人摸下面免费视频 | 午夜福利理论片在线观看 | 免费黃色三級片在线观看18 | 国产高清不卡v清免 | 国产一区女优在线观看 | 国产黑色丝 | 米奇欧美777四色影视在线 | 日韩国产欧美亚洲一区不卡 | 无限资源最 | 精品国产亚洲一区二区三区 | 国产精品不卡在线观看的a站 | 中文字幕精品一区 | 一本大道香蕉在线 | 99热永久地址有精品 | 欧美无砖专区一中文字 | 91精品啪 | 日本中文字幕一区二区有码 | 欧美日韩中文国产一区 | 欧美好看的中文字幕在线精品 | 日韩免费电影网站 | 国产欧美日韩久 | 国产偷2025在线观看午夜 | 日韩精品一区二区三区四区蜜桃 | 91精品欧美激情在线播放 | 国产精品网站不卡在 | 国产不卡一区 | 日本簧片 | 99热这里只有精品免费播放 | 日本精品中文字幕在线 | 老司机在线精品视频网站 | 亚洲精品午夜不卡在线播放 | a国产乱理伦片在线观看夜 欧美日韩一二三四区 | 97国产精品人人 | 欧美国产视频一区二区91 | 91亚色视 | 日韩精品一区二区在线看 | 国产欧美日韩在线观看一区二区 | 日韩中文字幕a加勒 | 成人精品国产日本语音 | 久精品视在线观看视频 | 在线播放国产不卡免费视频 | 成年福利片在线观看 | 国内精品一区二区 | 成年人免费视频网站 | 亚洲午夜成激人情在线国内 | 日韩一区二区三区在线免费观看 | 国产乱子伦沙发睡午觉 | 国产午夜理论最新电影 | 精品国产日韩亚洲一区二区 | 国产乱轮在线观看 | 亚洲高清一二三网 | 欧美一区二区三区免费 | 国产精品网站在 | 韩国在线观看日韩免費資訊 | 中文字幕亚洲一区二区va在线 | 亚洲h成年动漫在线观看不卡 | 日韩乱码精品中文字幕不卡 | 国产一区二区三区四 | 第一页浮力影院草草 | 国产乱子夫妻xx黑人xyx真爽 | 国产精品福利一区二区 | 国产在线青青 | 中文字幕一区二区 | 日本国产精品二区 | 国产亚洲高清不卡在线观看 | 午夜免费福利 | 国产亚洲精品视频中文字幕 | 免费国产va在线观看视频 | 区二区三区四区免 | 国产香蕉97碰碰视频免费看 | 国产又粗又猛又大爽视频 | 99re国产精品视频首页 | 久热这里只有精品99在线观看 | 国产小视频在线播放 | 亚洲精品国产精品国自产网站 | 一区二区亚洲综合制服欧美 | 欧美精选一区二区三区 | 99欧美精 | 国产伦精品一区二区三区 | 国产免费网站看v片在线观看 | 日本一道一区二区免费看 | 亚洲欧美另类专区第一页 | 91视频网站免费 | 国产精品亚洲精品一区二区三区 | 一个视频在线观看免费 | 成人午夜在线观看日韩 | 国内自拍第一页 | 日韩国产精品一区二区 | 一级免费视频在线观看 | 亚洲制服在线亚洲制 | 91热成人精品国产免费 | 免费播放婬乱男女婬视频 | 欧美另类制服丝袜国产 | 精品欧乱仑在线 | 九九线精品视频在线观看视频 | 亚洲国产综合在线 | 亚洲精品国产精品乱码视色 | 免费国产gay片在线观看 | 欧美一区二区三区四区公司 | 国产人人视频 | а√天堂资源官网在线资源 | 国产精品网站在线观看 | 8x成年视频在线 | 亚洲卡一卡二卡三乱草莓 | 大地影院mv在线观看视频免费 | 成人精品视频一区二区三区尤物 | 国产精品视频一二三区 | 秋霞理伦韩国在线电影 | 欧美96| 狠狠狠狼鲁欧美综合网免费 | 96福利国产在线 | 日韩欧美国产精品免费一二 | 国产一级a毛一级a看免费人娇 | 亚洲中文字幕乱码一区 | 午夜性爽一区二区三区 | 国产人成视频免费看 | 日韩精品一区二区国产精品一 | 精品三级在线观看 | 日本性xxx| 搡老熟女69激情对白 | 欧美a级影院| 中文字幕在线 | 国产精品无需播放器 | 国产精品伊人 | 日韩精品免 | 日本玖玖资源在线一区 | 国产精品视频第 | 在线成人亚洲一区电影 | 国产成年大片免费视频播放 | 欧美+自拍+色 | 日本在线播放一 | 亚洲性日韩精品一区二区 | 国产又粗又黄又爽又硬的软件 | 国语成人自产拍在线观看 | 日韩精品乱码在线 | 国产又大又粗又黄又爽的视 | 一区二区三区精品视频免费播放 | 成人精品综合 | 国产真实伦 | 亚洲精品国产suv一区 | 国产v在线在线观看视频免费 | 中国凸偷窥xxxx自由视频 | 国产精品视频露脸 | 亚洲天天在线日亚洲洲精 | 亚洲天码中字 | 国产精品综合一区二区 | 女人体视频1963 | 日韩午夜影院 | 日韩视频在线观看视频 | 日产无人区一线二线三线最新版 | 国产又大又硬又粗视频 | 国产重口 | 欧美激情性色生活片免费观看 | 日韩免费一区二区三区高清 | 国产理论高清一卡二卡三卡 | 国产又粗又猛又大爽视频 | 欧美片亚洲片日韩片 | 综合网www | 国产精品片在线观看 | 韩国午夜理伦三级理论在线观看 | 99精品国产丝袜在线 | 在线天堂资源www在线中文 | 国产在线观看第二页 | 免费亚洲国 | 国产v精品欧美精品v日韩 | 欧美a级情欲片在线观看免费 | 国产做爰一区二区 | a欧美日韩高清在线播放不卡 | 乱色国内精品视频在线观看 | 成年免费大片黄在线观看一 | 国产精品专区第5页 | 免费国产a国产片精品 | 小说区图片区激情区视频区 | 在线播放国产精品三级 | 99国产精| 国产在线观看h尤 | 日韩一区二区www | 污污免费网站 | 欧美综合亚洲日韩精品区 | 国产高清免费a级在线观看 欧美第一夜 | 91福利影院 | 国产激情一区在线观 | 国产95在| 国产日韩另类视频一区爱 | 国产高清乱码一区二 | 亚洲日本国产乱码va在线观看 | 中文字幕在线播放视频 | 国产91色在| 久操视频网| 乱伦精品国产高清 | 亚洲国产精品一区第二页 | 欧美日本二区 | 日本黄页网址在线看免费不卡 | 国产欧美日本亚洲精品一4区 | 久热精品视频在线播放 | 日韩在线视频不卡视频 | 日韩精品视频美在线精品视频 | 欧美激情视频网站 | 91精品国产福利在线观看 | 日本一区二区高清无卡码 | 国产99视频精品免费观看6 | 欧美亚洲日本国产综合网 | 日韩精品一区二区三区在线观看 | 国产高清亚洲精品视bt天堂频 | 国产91精品成人不卡 | 免费精品国偷自产在线2025 | 精品国产小说 | 高清在线亚洲精品国产二区 | 国语自产拍在线视视频 | 天堂va蜜桃一区二区三区 | 3344视频在| 日韩欧美一区二区视频在线播放 | 国产欧美日韩精品a在线观看 | 香蕉有码在线视频发布 | 欧美日韩一区四区 | 国产专区一va亚洲v天堂 | a级日韩乱理伦片 | 韩国日本国产片免费观看 | 亚洲vr| 国产一级特黄aa大片在线观看 | 成人影院yy111111在线 | 国产+高| 国产精品敌一区二区三区 | ynzhcl.org.cn| 欧美日韩一区二区在线播放 | 激情六月在线视频 | 区三区免费中文字幕 | 福利片一区二区 | 国产免费观看大片视频 | 精品国产自1000在线现拍 | 91夜夜夜精品一区二区 | 国产乱码精品一区二区三区小说 | 国产美女一级做视频爱 | 色综合中文字幕色综合激情 | 国产专区一区 | 国产专区一区在线观看 | 国产福利电影在线视频 | 男人亚洲天堂日日夜夜 | 欧美精品一区二区在线观看播放 | 男人和女 | 日韩激情偷拍第3页 | 亚洲人成电影手机在线播放 | 欧美日韩午夜福利一区二区 | 欧美日韩免费 | 欧美日韩国产一区二区三 | 日本欧美一区二区三区在线播放 | 精品综合欧美在线观看 | 日韩成人精品二区 | 欧美日韩国产综合一区二区三区 | 日韩一区二区三区四区五区 | 小蝌蚪日韩国产高清影片 | 99热在线精品国产观看 | 欧美日韩电影一级 | 国产a在视频线精品视频 | 男人的天堂人人干香蕉 | 午夜成人亚洲理伦片在线观看 | 香蕉在线亚洲欧美专区 | 粗又爽电影 | 国精产品一二二线 | 免费软件下载网站 | 国国产综合在线观看 | 国产探花在线精品一区二区 | 97碰公| 免费级人成大片在线观看 | 91成人影院在线观看 | 欧美精品玖玖玖在线靠爱 | 国产日韩在线精品一区福利 | 午夜成人影院网站18进 | 午夜性色一区二区三区不卡视 | 视频精品全部国 | 国产欧美一区二区三区综合野 | 日韩在线中文 | 亚洲经典一区二区三区爱妃记歌词 | 国产在线看片免费人成视频 | 亚洲熟女一区二区三区 | 国产在线不卡人成视频 | 亚洲综合国产一区二区三区 | 欧美自拍另类欧美综合图区 | 爽黄的免费视频 | 国产精品午夜福利免费老师 | 成人美女视频 | 国产m3u8在线观看 | 久热视频在线观看精品 | 欧美日本一区二 | 国产va精品免费在线观看 | 欧美日韩一区四区 | 国产精品美女网站在线观看 | 精品国精品国产自在久国产87 | 国产女人精品视 | 免费簧网站永久在线播放国产 | 夫妇交换性4p中文字幕 | 18处破外女出血在线 | 日韩电影深夜专区福利 | 日本成本人片免费 | 国产亚洲成在线播放va | 九九视频在线免费观看 | 国内精品视频在线观看 | 国产九九免费视频 | 福利片一区二区 | 国产日韩亚洲不卡高清在线观看 | 国产精品青青青高清在线观看 | 亚洲卡一| 日韩一区二区三区电影成人 | 国产a∨国片精品青草视频 韩国精品一区二区三区在线 | 日本最新免费不卡二区在线 | 三级国产精品 | 日韩无卡一区二区三区视频 | 亚洲中文字幕高清有码在线 | 色综合欧美 | 热门短剧短视频 | 麻花传md0174苏蜜清歌 | 欧美性xx | 制服丝袜中文字幕在线 | 成人专区一区二区三区四区 | 亚洲高清中文字幕 | 99视频精品国在线视频艾草 | 在线观看精品国产免费 | 国产超薄肉丝袜在线 | 国产亚洲精品欧洲 | 国产极品视频一区二区三区 | 欧美日韩精品国产—区在线 | 网站视频福利 | 天天看片国产精品 | 精品成人女同一区二区三区 | 欧美日韩中文在线视频 | 99热6 | 91综合专区国产在线 | 亚洲日韩电影网天堂影院 | 日韩不卡高清中文字幕 | 国产高清乱 | 国产又湿又| 天堂中文在线最新版地址 | 久99精| 日韩欧美色综合网站免费 | 99精品国产一区二区婷婷 | 91探花在线观看 | 不卡一区二区三区在线视频 | 又湿又紧又大又爽又a视频 精品高清三级乱伦 | 亚洲国产欧美精 | 亚洲综合一区二区三区 | 亚洲综合另类小说色区一 | 精品大全中文字幕 | 国内精品一线二线三线黄 | 亚洲制服中文字幕一区二区 | 天天国产综合永久精品日韩 | 国产拍揄 | 欧美午夜激情免费看 | 精品国产高清自在 | 精品国产91乱码一区二区三区 | 不卡一区 | 国产激情在线观看免费视频 | 亚洲成a人一区二区三区 | 手机免费在线追剧网站 | 国产精品一线天在线观看 | 国语成人自产拍在线观看 | 日韩亚洲欧美一区二区三区综合 | 日日天干夜夜人人添 | 亚洲精品国精 | 三年片在线观看免费观看大全 | 日本伦理电影免费观看 | 亚洲色自偷自拍另类小说 | 好看的韩剧在线 | 国产中文字幕免费不卡 | 丁香伊人 | 亚洲人成网站在线观看 | 亚洲第一视频在线 | 老熟女高 | 免费黃色三級片 | 中文字幕亚洲无线码一区女同 | 国产a∨精品一区二区三区不卡 | 中文字幕亚洲一区二区三区四 | 182tv免费播放线路一线路二 | 国产一区二区精品在线观看 | 国产精品v欧美精品v日韩 | 91欧美在线精品 | 国产福利导 | 一区二区三区四区在线播放视频 | 国产美女精彩视频勾搭 | 免费看老女人 | 国产伦精品一区二区三区免费迷 | 菠萝菠萝蜜视频在线观看免 | 老色鬼在线精品视频 | 一本大道香蕉在线 | 国产欧美日韩综合一区在线播放 | 中文字幕国产在线观看 | a在线视频播放观看免费观看 | 区一区二区三高清免费视频 | 国产精品视频一区二区三区不卡 | 国产精品放荡v | 国产超刺激玩弄美女在线播放 | 国产精品黑人一区二区三区 | 国产欧美一区二区精品性色99 | 电话耳机 | 女人张开 | 国内一区 | 99热这里只有精品免费播放 | 国产精品第一偷怕自怕1区 野花香视频免费观看高清在线 | 成在线人永久免费播放视频 | 精品国精品国产自在久国产87 | 777国产偷窥盗摄精品品在线 | 国产精品高清一区二区不卡乱 | 国产高清一区二区三区视频 | 午夜成人性刺激免费视频在线观看 | 欧美日韩中文亚洲v在线综合 | 午夜国产精品视频一区 | 成人3d精品动漫在线播放 | 最新院线大片抢先看 | 国产又粗又黄又爽的大片 | 日本高清www片 | 91尤物视频在 | 日韩欧美国产一级免费 | 国产综合精品一区二区三区 | 亚洲综合亚洲综合网成人 | 国产偷国产偷亚洲清高app | 精品91自产拍在线观看 | 亚洲欧美v国产 | 高清免费视频一区二区三区 | 区一区二区三视频日韩 | 网站免费观看 | 欧美1区2区3 | 国产在线欧美日韩精品一区二 | 成年人免费在线观看视频 | 国产片人综合亚洲区 | 不卡日韩欧美亚洲 | 91成人精品在 | 国产女技师按摩在线观看 | 国产一区精品在线观看 | 国产福利小电影视福利在线 | 日本高清三区 | 最近免费中文字幕 | 国产福利在线网址成人 | 国产午夜小视频在线不卡 | 一级欧美一级日韩片 | 亚洲欧美日本人成在线观看 | 国产污视频在线观看 | 操你啦日本阿v网站在线观看 | 国产精品线在线精品 | 日本黄页免费大片在线观看 | 国内20| 成人导航在 | 日韩成人影片 | 国产精品一区二区三区在线观看 | 岳的大肥坹毛茸茸 | 国产亚洲欧美在线观看四区 | 亚洲狼人影院 | 99这里都是精品重查 | 日本免费影片一区二区 | 欧美日韩一区二区高清不卡 | 亚洲日韩穿丝袜在线推荐 | 日韩一区二区超清视频 | 成人看片777c | 按摩偷拍一区不卡 | 国语自产视频在线不卡 | 欧美精品一区二区三区在线播放 | 国产原创91| 欧美区一区二区三 | 国产日韩综合一区在线观看 | 欧美日韩视频在线第一区 | 91福利电影 | 午夜免费视频在线观看 | 欧洲vodafon | 欧美日韩在线精品一区二区三区 | 日韩欧美国产中文字幕 | 午夜不卡影| 国产精品一线二线三线 | 成人精品国产亚洲 | 无区码一码二码三码 | 亚洲国产综合 | 日本欧美欧美一级毛卡片 | 精品国内 | 视频在线观看 | 成在线人永久免费播放视频 | 国产精品中文字幕制服 | 国产制服中文字幕在线 | 国产精品成人自拍 | 激情五月天深爱网 | 欧美日本综合一区二区三区 | 不卡一卡二卡三 | 精品撒尿视频一区二区三区 | 国产偷伦视频片免费视频 | 337p日本 | 亚洲熟肉一区二区三区 | 性夜黄a爽爽免费视频国产 国产欧美日本亚洲精品五区 | 精品国产a自拍 | 亚洲综合一区二区三区 | 最近最新中文字幕在线第一页 | 国产日韩亚洲欧美第一区 | a级韩国乱理伦片在线观看 国产日产欧产精品 | 国产v一区二区综合 | 国产在线看片护士免费视频 | 国产又粗又硬又大爽黄老大爷视频 | 亚洲欧美中文字幕国产 | 欧美在线男人 | 又大又粗| 日韩一本二本在线观看视频 | 欧美中文 | 精品国产一区二区三区不卡在线 | 日本性色| 免费人成网址在线观看国内 | 成人国产精品秘片多多 | 欧美在线免费看 | 午夜男女爽爽影院在线 | 九月丁香婷婷激情四射视频一区 | 亚洲精品国产精品乱码不卡√ | 包括电视剧 | 九九热在线视频观看这里只有精品 | 国产性猛交xxxx乱大交 | 欧美日韩一区二区在线播放 | 精品成人一区二区三区电影 | 国产亚洲人成 | 成人人免费夜夜视频观看 | 国产精品永久免费视频观看 | 碰免费公开视频97 | 在线观看免费人成视频国产 | 国产欧美日韩精品高清二区综合区 | 在线观看免费高清 | 国产男女| 国产门事件真实视频在线 | 国产极品尤物铁牛tv网站 | 免费在线观看最新高清电影 | 欧美肥妇毛多水多b | 欧美喷潮 | 高清在线精品一 | 亚洲天堂2025女人天堂 | 欧美亚洲日韩一区二区三区中文 | 国产日韩欧美制服丝袜 | 午夜影院高清无 | 精品区2区3区国产 | 日本二区 | 国产精品三级一区二区秒拍 | 国产伦精品一区二区三区视频金莲 | 亚洲精品天天影视综合网 | 日韩不卡在线视频 | 国产一级二级三级精品视频 | 日韩免费在线 | 好吊妞在线视频免费观看综合网 | 欧美激情在线导航 | 国产萌白酱喷水在线播放尤物 | 国产日韩精品 | 欧美日韩专区 | 国产99对白在线播放 | 日韩一区二区三区免费看 | 国产精品综合一区二区三区 | 日韩高跟视频一区二区三区 | 日皮视频免费观看 | 日韩午夜剧场免费网站观看 | 俺去啦电影网 | 91影院免费 | 91大神福 | 亚洲无线观看国产超清 | 国产亚洲老熟女视频 | 欧美.成人.综合在线 | 免费观看a级 | 91www.| 精品一区二区不卡 | 一区二区国产高清视频在线 | 一区二区日韩 | 欧美+自拍+色 | 污污污污污污www网 a在线亚洲男人的天堂在线 | 成人免费午夜在线观看 | 色一情一乱一伦一区二区三区 | heyzo高清在线专区 | 日韩一区在线欧美激情 | 精品欧美一区二区三区精品久 | 国产资源在线视 | 国产欧美日韩视频专区在线观看 | 国语精品一区 | 欧美色综合精品视 | 国产a国产片 | 在线精品国产第一页 | 欧洲成人全免费视频网站 | 日本a级高清影片 | 亚洲日韩精品国产一区二区三区 | 欧美日韩一区二区在线观看视频 | 娇小videodes极 | 欧美女视频网站大全在线观看 | 卡一卡二扰乱码 | a在线亚洲男人的天堂在线 hd护士18 | 国产日产高清欧美一区二区三区 | 人免费观看在线视频www | 国产国产人免费视频成69大陆 | 国产传媒一 | wwww亚 | 国产乱码精品一区二区三区小说 | 日本欧美中文字幕精品一区 | 国产在线观看自拍日本 | 九九热这里 | 亚洲伦理一区二区三区 | 草莓视频污官网 | 宝宝真骚是不是想被c | 日韩在线观看精品 | 8x8ⅹ国产精品| 成人精品一区二区三区在线 | 欧美日韩一 | 国内国外一区二区三区 | 娇妻羞涩交换 | 二区高清不卡 | 八戒八戒在线资源网 | 99精品一区二 | 福利秀视频在线播放 | 欧美日韩网站在线观看 | 黄三级高清在线播放 | 日本一道在线播放高清 | 欧美日韩爽爽午夜影院 | 精品国产福利 | 在线观看国产日韩欧美 | ww网站免 | 日本一二三区视频在线 | 人人干美女 | 国产微视频在线观看网站 | 亚洲国产精品尤物yw在线观看 | 欧美日韩高清国产aⅴ | 日韩在线观看一区二区三区 | 欧美黑人在线免费观看 | 亚洲成在人线影视天堂网 | 欧美a色爱欧美综合v | 国产公妇仑在线观看 | 国产精选在线观看播放 | 日韩精品一区二区三区四区 | 精品国产国产自在线观看 | 国产午夜免费福利红片 | 欧美日韩专区一区二区三区 | 日韩精品国产一区 | 日韩精品永久免费播放平台 | 国产精品激情 | 国产短裙高 | 国产精品视频丁香花综合 | 99九九视频高清在线 | 收集最新中文国产中文字幕 | 美国成人影院 | 天天看片国产精品 | 成年人免费在线观看视频 | 国产一级特黄高清在线大片 | 92看片淫黄大片看国产片 | 精品日韩女仆在线观看不卡 | 人人揉人人捏人人添 | 美腿丝袜在线播放 | 欧美在线播放成人a | 精品国夜夜区二一区三区 | 喷了一地 | 亚洲v高清一区二区三区尤物 | 国产精品素人福利 | 日韩精品一区二区三区视频 | 小明欧美精品视频在线观看 | 国产精品免费视频网站 | 麻花影院 | 国产在线一区二区视频 | 欧美国产午夜福利院 | 福利片福利一区二区三区 | 国产亚洲蜜| 国产欧美日韩制服在线 | 欧美黑人又大又粗xxxⅹ | 欧美日韩综合免费视频 | 吃瓜网黑料大全 | 大地资源在线观看免费中文版 | 黄三级在线观看 | 最近日本电影免费观看全集 | 同性男男黄h片在线播放网站 | 高清在线精品一区 | 国语自产精品视频熟女 | 日本免费一级婬片a级中文字幕 | 国产精欧美一区二区三区 | 韩国一区二区在线观看免费在线 | 国产电影手机在线观看黄 | 欧美性爱专区在线观看 | 女性一级全黄生活片免费看 | 国内精品| 字幕a∨ | 国产精品欧美一区二区三区 | 欧美国产剧情一区二区 | 亚洲视频日 | 亚洲欧美日韩高清在线电影 | 亚洲狠狠ady亚洲精品大秀 | 欧美色综合网站 | 国产小呦泬泬99精品 | 亚洲熟女乱综合一区二区 | 成人免费观看a级网站 | 欧美大片免费播放器 | 欧美在线| 国产精品资源网站视频 | 手机免费在线日韩电影大片 | 不卡中文字幕 | 免费高清影视资源 | 日本视频二 | 欧美高清一区三 | 日韩中文字幕高清一区 | 日本高清不卡中文字幕网 | 国产经典aⅴ三级观看 | 欧美影院一区二区在线观看 | 又粗又大又硬又爽的免费视频 | 亚洲无线码高清在线观看 | 日韩免费在线 | 国产精品自在线拍国产手机版 | 青春娱乐国产分类精品二 | 亚瑟视频在线观看 | 精品国产国产自在线观看 | 卡4卡无卡免费2 | 国产对白刺激真实精品91 | 成人看片在线观看免费 | 岛国三级在| 九九精品成人免费国产片 | 国产精品视频一区 | 中文字幕在线二区 | 亚洲十欧美十 | 国产传媒在线 | 日本一区二区在线免费观看 |