欧美日韩亚-欧美日韩亚州在线-欧美日韩亚洲-欧美日韩亚洲第一区-欧美日韩亚洲二区在线-欧美日韩亚洲高清精品

金喜正规买球

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

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

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

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

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

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

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

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

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

點擊下載最新版Aspose.PDF

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

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

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

步驟1:創(chuàng)建一個ASP.NET Core Web應(yīng)用程序

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

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

創(chuàng)建基本應(yīng)用程序后,我們將需要執(zhí)行一些其他操作。

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

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

我們的控制器應(yīng)執(zhí)行以下操作:

  • 返回具有某些擴展名的文件列表(在本示例中,將僅顯示.pdf,.jpg和.oxps文件);
  • 允許按文件名下載文件;
  • 允許通過文件名刪除服務(wù)器上的文件;
    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來加載文件,因此將與加載文件相關(guān)的代碼移至單獨的控制器是有意義的。

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

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

  • HTTP GET請求的方法,該方法應(yīng)檢查服務(wù)器上是否存在塊;
  • HTTP POST請求的方法,該方法應(yīng)該是服務(wù)器上的上傳塊;
  • 其他輔助方法(用于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 } }

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

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:為合并的應(yīng)用程序?qū)崿F(xiàn)Web UI

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

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

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

  • 合并序列中的文件位置存儲在與其對應(yīng)的單元格的data-order屬性中。因此,要將文件合并為一個PDF,我們應(yīng)該獲取所有數(shù)據(jù)順序,對它們進行排序并發(fā)送文件名序列;
  • 要選擇/取消選擇要合并的文件,請單擊文件名。選定的文件標有徽章;
    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提供了幾種合并文檔的方法。您可以在上一篇文章中學習其中的一些內(nèi)容,但是現(xiàn)在我們將重點介紹一下,并討論影響PDF中任何文檔的可能性。

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

步驟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();
        }
        
    }
}

如您所見,我們的控制器調(diào)用HTTP-Post方法來合并文檔。現(xiàn)在我們實現(xiàn)此方法。我們合并的想法是將所有頁面從一個文檔添加到另一個文檔。這很簡單,因為我們知道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:實現(xiàn)用于將圖像轉(zhuǎn)換為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環(huán)境中的正常運行。該應(yīng)用程序的目的是展示使用.NET Core的Aspose.PDF合并任何文檔并將其保存為PDF格式的可能性,并且可能需要對其進行改進。例如,此程序不考慮保存具有相同名稱的文件。該問題的可能解決方案是使用具有生成名稱的文件夾上載每個文檔或使用數(shù)據(jù)庫存儲文件。


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

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


為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產(chǎn)品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
亚洲风情亚aⅴ在线发布 | 亚洲一区二区三区精品动漫 | 免费60分 | 国产日韩欧美一区 | 亚洲专区欧美三级 | 亚洲精品午夜不卡在线播放 | 亚洲一区二区三区精品影院 | 夜夜爽免费看 | 日韩一区二区三区射精 | 精69xxx免费酒店 | 91精品啪在线观看国产色 | 国产91精 | 国产乱理伦片在线观看夜 | 91成人影院在线观看 | 成人国产精品日本在线观看 | 精品一区二区三区中文字幕 | 国产熟女一区二区三区浪潮 | 911中文字幕免费高清观看 | 姝姝窝人体ww | 日韩在线中文字幕欧美 | 午夜福利精品一区 | 91精品国产闺 | 性激片在线播放欧美 | 国产精品露脸国语对白 | 狠狠狠狼鲁欧美综合网免费 | 日本精品国产一区二区在线 | 国产夜趣福利免费 | 国产精品黑色丝袜在线观看 | 国产午夜福利片 | 精品国产一区二区三区四 | 俄罗斯美女真人性做爰 | 四库国产精品成人 | 激情影院內射美女 | 亚洲激情在线播放 | 中文字幕精品一区二区三区在线 | 国产午夜福利在线观看红一片 | 丁香伊人| 国产区精品 | 丝袜图片 | 国产精华液和欧美的精华液的区 | 欧美一区日韩专区 | 色狗电影网 | 成人3d精品动漫在线播放 | 亚洲成aⅴ人的天堂在线观看女人 | 视频一区视频二区日韩专区 | 国产在线精品一区二区在线观看 | 日韩精品在线视频 | 老司机免费精品线观看86 | 欧美日韩精品专区在线 | 99国产精品婷婷 | 日本一区二区在线不卡 | 午夜成人亚洲理伦片在线观 | 在线观看91精品国产性色 | 老司机午夜精 | 最近免费中文字幕大全 | 日产无人区一线二 | 亚洲人成人一区二区三区 | 亚洲人成人一区二区三区 | 国产高清一 | 国产偷拍盗摄一区二区 | 亚洲狠狠ady亚洲精品大秀 | www黄在线观看 | 欧美日韩精品系列一区二区三区 | 亚洲国产一区二区在线观看 | 日本不卡高清在线 | 每日更新国产精品视频 | 国产精品秘吴 | 日韩免费在线观看性生活视频 | 国产末成年女噜噜 | 国产一区二区三区免费大片天美 | 中文文字 | 精品三级视频在线观看 | 收集最新中文国产中文字幕 | 欧美日韩国产精品自在线亚洲精品 | 国产精品tv在线观看 | 成人欧美一区二区三区黑人免费 | 免费人成视频在线播放视频 | 91精品电影 | 亚洲欧美日韩另类国产第一 | 九七电影网 | 日韩欧美一区二区大胸视频 | 成人做爰a | 美女人成大片免费视频看看 | 国产98视频在线 | 韩国床戏激情戏裸戏 | 国产日产欧美一区二区 | 日本三级精 | 欧美88888在线观看国产 | 国产乱码精品一区二区三区四 | 欧美日韩国产一区 | 国产丝袜视频在 | 真实的国产乱xxxx在线 | 欧美人与动| 欧美日韩在线亚洲 | 亚洲人成欧 | 欧美三级不卡在线播放 | 99热国产在线手 | 午夜福利1000集在线观看 | 国产视频欧美综合 | 亚洲天堂视频在线免费观看 | 最近中文字幕无吗高清免费视频 | 国产欧美一区二区精品婷婷 | 国产乱码一二 | 亚洲中文字幕久 | 亚洲精品 | 欧美日韩中文字幕免费看 | 香蕉一区二区在线观看 | 日本精品高清一区二区 | 不卡精品 | 国产日韩在线观看一区福利 | 性色aⅴ按摩精品在线 | 乱子伦精品视频 | 日韩亚洲欧美理论片 | 97人人超人人超国产免费 | 蜜桃视频一区二区在线观看 | 女同精品一区二区 | 色吊丝中文字幕一区二区三区 | 欧美精品一二三区 | 乱码一线二线三线新区破解欧 | 国产色系视频在线观看免费 | 一二三四中文字幕 | 女人18毛多水多 | 理论电影免费观看 | 中国农村真卖bbwbbw | 成年午夜免费 | 亚洲国产品综合 | 人人揉人人捏人人添 | 国产欧美日韩综合精品无毒 | 亚洲国产不卡一区二区三区 | 免费人成激情视频在线观看冫 | 午夜国产福到在线 | 国产精品欧美激情一区二区亚洲 | 国产亚洲一区二区手机在线观看 | 午夜福利在线观看亚洲一区二区 | 国产最新美 | 久中文字幕中文字幕亚洲无线 | 二区三区欧美精品在线观看 | 国产专区第一页 | 中文字幕一区日韩精品 | 亚洲欧美洲成 | 香蕉国产一区二区 | 乌鸦传媒 | 精品国产手机自 | 国产精品美女网站在线观看 | 黑人巨大跨种族video | 国产超薄肉丝袜在线播放 | 午夜视频精品视在线播放 | 91精品全国免费观看青青 | 亚洲日韩中文在线精品第一 | 国产精品国产精品国产专区不卡 | 国产亚洲欧美第一页在线观看 | 内地级a艳片高清免费播放 五月社区免费 | 91极品看片 | 一二三四影视在线看片免费 | 丝袜亚洲精品中文字幕二区 | 欧美大棒插白人 | 老熟女重囗味 | 国精产品一品二品国精品69xx | 免费成年人看的视频品爱网 | 欧美日韩一区二区精美视频 | 国产精品男人的天堂 | 亚洲aⅴ精品国产首次亮相 国产炮机主播在线观看 | 亚洲成年人网 | 日韩主播大秀在 | 91香蕉成人 | 亚洲男人第一αv网站 | 午夜激情影 | 欧美五月婷婷开 | 欧美日韩国产综合一区精 | 免费大片黄国产在线观看 | 神马影院88 | 日本精品成 | 精品成人一区二区三区免费视频 | 精品国产高清自在线 | 91精品国产品国语在线不卡 | 亚洲欧美日韩在线综合网 | 乱码视频午夜在线观看 | 亚洲精品字幕中文在线播放 | 国产高清久 | 日韩中文字幕在线免费观看 | 热映电影 | 国产精品视频一区二区三区四区 | 亚洲中字第 | 青青国产在观免费影视 | 国产免费私拍一区二区三区 | 伊伊人成亚洲综合人网7777 | 国产女主播精 | 偷国产偷精品高清尤物 | 精品免费一 | 精品国产迪丽热巴在线 | 国产伦在线视频大全 | 欧美日韩在线观看免费 | 法国性xxxx精品hd | 中文字幕一冢本 | 最近中文字幕完整版2025一页 | 国语自产拍在线观看对白 | 国产一级淫片视频免费看 | 欧美日韩中文字幕在线看 | 亚洲网站免费观看 | 成人国产精品免费视频不卡 | 精品国产一级在线观看 | 欧美成a人片在线观看久 | 夜夜夜一区二 | 综合三级在线观 | 欧美日韩成人午夜电影 | 亚洲欧美日韩综合第一页 | 日韩一区二区手机免费观看 | 亚洲人成 | 在线视频一区二 | 91国产最 | 东方aⅴ免费观看 | 亚洲国产精品自在拍在线播放蜜臀 | 日本vs欧| 色吊丝*性观看网站大全 | 视频软件短片 | 国产免费观看视频 | 亚洲精品911在线永久观看 | 欧美日韩国产一区国产二区 | 国产舌乚八 | 成人免费在线视频观看 | 国产中文一区二区 | 亚洲欧美色国产综合 | 国产对白普通话视 | 国产精品免费一区二区三区四区 | 国产va免费精品 | 国产亚洲视频在线观看 | 亚洲国产欧美脱 | 日韩成全视频观看免费观看高清 | 国产精品13页 | 亚洲男人第一αv网站 | 亚洲欧美综合网站 | 国产香蕉尹人视频 | 国产在线精品一区在线观看; | 亚洲综合激情 | 老司机精品一区在线视 | 国产91丝袜在线精品 | 国产精品电影在线观看 | 最近高清中文在线字幕在线观看 | 国产国产精品人在线观看 | 高大丰满肥 | 国产干b| 欧美日韩成人一区二区三区 | 亚洲三级在线观看 | 欧美一区二区三区视频在线 | 欧美成a人片在线观看久 | 日韩乱码人 | 成人午夜视频一区二区国语 | 奶水国产在线播放 | 亚洲午夜成激人情在线国内 | 手机免费看一级 | 久99久热只有精品国产15 | 亚洲国产区男人本色 | 欧美日韩另类视频在线观看 | 女人18毛| 精品福利在线视频 | 99爱这里只有精品 | 了解最新38在线信息 | 五月婷婷丁香色 | 99久高清| 尤物视频在线网站 | 国产免费不卡v片在线观看 日本一区视频在线播放 | 2025国产| 亚洲欧美日本一区二区三区 | 青青青国产精品一区二区 | 欧美、另类亚洲 | 亚洲精品宾馆在线精品酒店 | 精品成人一区二区三区电影 | 羞羞影院午夜男女爽爽视频 | 精品影片在线观看的网站 | 国自产拍偷拍福利精品免费 | 在线日韩国产 | 床震吃胸膜奶免费视频 | 亚洲综合娱乐在线视频 | 69一区二三区好的精华液 | 国产精品毛多多水多 | 日韩伦理福利免费 | 国产l精品国产亚洲区在线观看 | 入口91| 中国国产一级 | 国产黄大片在线观看 | 亚洲欧美精品suv | 国产欧美精品久 | 亚洲à∨精品一区二区三区导航 | 国产精品午夜自在在线精品 | 精品国产国产综合精品 | 国产午夜亚洲精品午夜鲁丝片 | 不卡中文字幕系 | 亚洲日韩成人精品不卡在线 | 亚欧精品一区二区三区四区 | 99精品偷自拍 | 国语自产偷拍精品视频偷 | 欧美日韩在线一区二区观看 | 国产又粗又爽视频 | 韩国高清乱理伦片中文字幕 | 秋霞电影院 | 美女视频性感网站 | 欧美大成色www永久网站婷 | 国产在线观看色窝网 | 欧美一级高清视频在线播放 | 福利吧导航| 加勒比一本大道香蕉大在线 | 成人欧美一区二区三区在线蜜 | 亚洲欧美日韩在线精品一区二区 | 欧美交换配乱 | 中文字幕日韩wm二在 | 国产一区二区三区四区在 | 国产啪精品视频网站 | 一区二区色综合 | 性生大片免| 电影频道 | 日本亚洲黑人在线播放 | 国产a网站 | 亚洲综合视频在线观看 | 女同国产剧情在线观看 | 国产福利在线网址成人 | 成人日动漫卡一区二区三区动漫 | 欧美亚日韩精品影视 | 激情综合在线亚洲五月天 | 不卡日韩中文字幕在线观看 | 五月婷婷中文字 | 国产原创剧情经理在线播放 | 国产精品va在线播放 | 91精品啪在线观看国产色 | 国产精品大片大片看大 | 国产精品国产精品国产专区不卡 | 日本护士xxxxx在线播放 | 日韩综合精品一区二区 | 男女日皮视频app | 羞羞视频下载ap | 亚洲成a人片在线v观看 | 亚洲小说一 | 中文字幕卡通动漫精品首页 | 欧美三根一起进三p | 亚洲国产精品一区二区www | 亚洲精品国产乱码在线看天美 | 夜爽夜夜网 | 黑巨茎大战俄罗斯美 | 国产精品私密保养 | 偷人精品一区二区 | 国产精品美女网站在线看 | 日本国产性爱观看视频 | 中文字幕片 | 国产亚洲欧洲综合777 | 在线日韩不 | 最新电影电视剧免费在线观看 | 欧美日韩精品一区二区在线观看 | 最近免费中文字幕 | 日本黄页免费大片在线观看 | 免费国产在线精品一区二区 | 亚洲精品福利在线观看 | 国产做a | 国产乱码精品一区三上 | 亚洲欧美综合精品成人导航 | 伊人影音| 91精品国产丝袜在线拍 | 综合国产日韩亚洲 | 国产午夜影视大全免费观看 | 三级经典国产精品 | 国产综合在线观看自拍 | 欧美日韩中文有 | 欧美极品另类ⅴideosde | 国产精品外围在线观看 | 在线观看三缀片免费视频电 | 国产一区二区三区四区免费观看 | 欧美日韩免费专区在线 | 国产经典三级在线播放 | 欧美丰满老妇熟乱xxxxx视频 | 电影在线观看不卡 | 国产日韩另类视频一区爱 | 欧美激情国产 | 欧美激情国产精品视频一区二区 | 欧美精品午夜 | 蜜臀精品一区二区三区在线观看 | 国产欧美日韩综合精品一区二区三 | 影院手机电影在线 | 亚洲区中文 | 国产中文成人精品小说 | 亚洲第一页在线视频 | 八戒成年私人影院 | 欧美视频在线视频精品 | 91香蕉| 日韩天天精品综合 | 欧美日韩另类视频在线观看 | 午夜成人影院在线观看不卡 | 国产精品吹潮在线观看中文 | 87福利电影网 | 免费aⅴ大片在线观看 | 国产一区二区三区视频在线观看 | 亚洲欧美精品中文字幕 | 亚洲欧美日本国产—区二区三区 | 亚洲va一区动漫 | 欧美日韩国产精品视频 | 国产精品美女久 | 97色秘乱码一区二区三 | 欧美xxxx欧美精品 | 中文字幕免 | 天堂网www中文天堂在线 | 国产欧美一区二区精品性色 | 亚洲成?v人片在线观看翻墙网站 | 又粗又大又黄又硬高清视频 | 国产在线精品福利大全 | 日本亚洲黑人在线播放 | 亚洲成a人一区二区三区 | 欧美精品一区三区在线观看 | ysl蜜桃色888网站 | 欧美激情全球免费视频 | 欧美日韩精品一区二区在线观看 | 欧美国产激情18 | 日韩精品在线观看欧美 | 日韩精品在线观看欧美 | 精品一区网友自拍偷拍第一页 | 国产超级va在线播放 | 国产一区二区 | 欧美va日本va亚洲ⅴa | 日韩精品中文字幕一区 | 亚洲天天做日日做天天谢日日欢 | 国产精品亚洲一区二区三区在线 | 国产欧美日韩精品第二区 | 亚洲第一成人影院 | 国产精品13页 | 日产一线 | 亚洲国产aⅴ精 | 伦理片国产精品 | 五月激情丁香婷婷综合网 | 老牛影视网 | 亚洲中文字幕一区精品自拍 | 欧洲视频中文字幕在 | 国产天堂网在线视频 | 国产激情在线观看 | 中文字幕欧美日 | 国产欧美日韩一区二区三区蜜桃 | 亚洲国产97视频在线 | 伦理电影网在线观看 | 成人aⅴ综合视频国产 | 国产精品日 | 亚洲国产精品综合色在线 | 国产一级a毛一级a视频 | 自拍日韩亚洲 | 二线三线小说 | 手机在线观看日韩电影大片 | 国产精品日韩在线 | 亚洲国产精品国语在线 | 日韩高清在线观看不卡一区二区 | 爽了在线视频 | 日本va在线视频国产 | 一区两区三区四区乱码国产精品 | 欧洲精品卡1区2卡三卡四卡 | 午夜视频在线免费观看 | 欧美综合自拍亚洲综合 | 国产精品太长太粗太 | 国产精品长腿丝袜第一页 | 在线免费观看国产 | 欧美亚洲综合成人专区 | 亚洲欧美国产精品一区二区 | 超国产人碰人摸人爱视频 | 亚洲人成在线观看影院 | 精品国产制服丝袜高跟 | 国产中文字幕玖玖 | 亚洲欧洲日本精品永久在线观看 | 国产一区二区三 | 国产精品免费视频一区二区三 | 欧美日韩一区二区在线观看视频 | 国产精品色一区二区三区 | 欧美日韩国产区在线观看 | 教子做爰xxxx | 日本高清不卡一道免费观看 | 色国产精品一区在线观看 | 中文字幕不卡免费高清视频 | 微博网红户外露出在线观看 | 欧美成本人动漫在线观看 | 欧美高清一级 | 亚洲色大成 | 97国产婷婷综合 | 欧美午夜不卡在线观看最新 | 最新热门电影电视剧免费在线观看 | 免费一区 | 国产精品免费观看网站 | 国产。亚洲。在线播放 | 国产日产欧美一 | 国产又黄又粗又色又刺激视频 | 免费在线观看 | 老师裸露胸免 | 91精品国产品国语在线不卡 | 国产美日韩精品一区二区在线观看 | 精品国产一区二区三区 | 国偷自产91 | 中本亚洲欧美国产日韩 | 亚洲色偷偷综合亚洲v | 宝贝乖把腿分大一点h欧阳凝小说 | 国产91尤物中文在线 | 一区国产在线视频 | 午夜福利电影影院 | 一区二区三区在线播放 | 国内精品一区二区三区在线观看 | 国产一区二区三区欧美在线 | 91福利小 | 正在播放国产自在线拍 | 87福利电影网 | 欧美激情一区二区三区高清视频 | 欧美最猛黑人xxxx黑人猛交 | 国产特黄精品一区二区在线 | 亚洲v高清一区二区三区尤物 | 一区二三国产好的精华液 | 亚洲精品一区二区三区四区五区 | 欧美日韩国产精品一区二区 | 视频在线播放 | 亚洲精品理论电影在线观看 | 一区二区三区在线视频不卡 | 亚洲热视频 | 99亚洲综合精品 | 入禽太深免费 | 日韩欧美视频一区二区三区 | 两性午夜刺激性视频2345 | 91国在线啪精品一区 | 中文字幕免费在线观看 | 亚洲天堂一区二区三区 | 国产亚州视频在线视频 | 97国产在线看片免费人成视频 | 欧美一区二区三区四区国产另类 | 奇米色88欧美一区二区 | 国产精品玩偶在线 | 日本黄页免费大片在线观看 | 日本成a人片在线观看网址 国产精品蜜桃丝袜 | 欧美综合精品一区二区三 | 永久免费老妇女 | 中文字幕资源网在线观看免费 | 日日日涩涩 | 亚洲91精品一区 | 色五月最新网 | 亚洲中文字幕一二三四区 | 2025最新电影电视剧 | 欧美一区二区三区视频在线观看 | 免费看涩涩视频网站入口 | 国产亚洲日韩欧美在线成 | 级欧美一级一级国产 | 日本三级手机在线播放线观看 | 亚洲精品一区二区三区人妖 | 在线观看网站人成亚洲小说 | 欧美精品亚洲精品日韩专区 | 国语自产偷成人精品视频 | 精品深夜 | 日产一线| 午夜福利电影在线 | 成人欧美日韩一区二区三区 | 51国产愉自视频区视频 | 欧美国产日韩a在线观看 | 伊人成年网站综合网 | 两口子交换真实刺激 | 日韩一区国产二区欧美三 | 国产专区一区在线观看 | 在线亚洲一区二区 | 国产精品熟女视频一区二区 | 国内精品卡一 | 日本不卡一区二区三区 | 亚洲欧美乱日韩乱国产 | 亚洲欧美 | 時政要聞| 色老板久| 男动漫gay片cartoon | 日韩无砖专| 欧美在线观看二区 | 国产亚洲高清一区二区 | 好吊色青青青国产欧美日韩 | 国产v亚洲v天堂宗合 | 野花论坛社区 | 亚洲国产欧美精 | 日本欧美真人三级在线a | 区二区视频免费看 | 中文字幕亚洲一区二区三区 | 日本a级精品一区 | 欧美bb | 激情影院内 | 免费国产一区二区三区 | 国产拍精品亚洲国产高清 | 国产在线视频欧美一区二区三区 | 欧美三级极品视频在线观看 | 中文字幕在线一 | 国产手机在线观看视频 | 亚洲卡一 | 日韩在线一区二区 | 国产成年女人特黄特色大片免 | 亚洲国产一区二区在线观看 | 精品国产男人的天 | 日本中文字幕在线播放 | 国产区一二三四区2025 | 国产强伦姧在线观看 | 国产精品任我爽爆在线播放 | 伊人色综合网 | 夜夜狂射影院欧美极品 | 在线观看91精品国产性色 | 国产亚洲精品bt天堂精选 | 免费高清永久在线不卡 | yellow高清免费观看日本 | 欧美三级不 | 欧美一区二区在线观看 | 在线成人国产公开视 | 99热国产在线播放只有精品 | 欧美综合在线激情专区 | 日本一道在线播放高清 | 亚洲动漫精品在线 | 亚洲人成图片小说网站 | 高大丰满肥 | 日日夜夜骑 | 亚洲日韩电影网天堂影院 | 免费三级在线观看中文字幕 | 两个人高清在线观 | 视频一区二区亚洲欧美 | 国产亚洲精在线看 | 日本精品a在 | 日产精品一区二区三区免费 | 日韩专区在线播放 | 成人日动漫卡一区二区三区动漫 | 免费午夜美女在线视频播放 | 特级国产午夜理论不卡 | 国产成视频在线观看 | 国产亚洲免费在线观看 | 日本最新高清不卡一区二区 | 最新在线精品国自产拍网站 | 国产女人抽搐喷浆视频 | 国产剧情对白刺激在线 | 亚洲中文 | 欧洲乱码伦视频免费国产 | 精品国产免费一区二区三区香 | 国产护士va在线观看 | 亚洲视频在线免费观看 | 极品吹潮视频 | 国产精品a无线 | 精品午夜国产福 | 中文字幕在线观看一区二区 | 羞羞色院91蜜桃在线观看 | 97国产在线看片免费人成视频 | 国产第一区 | 亚洲一区二区在线播放 | 中文字幕在线精品视频万部 | 日韩欧美一区二区不卡看片 | 电视剧大全免费在线观看 | 欧美日韩视频在线 | 国产一区二区三区四区免费观看 | 精品国自产拍网站 | 在线免费看影视网站 | 99精品国产福利免费一区二区 | 日韩成人免费精品视频 | 日本一点不卡高清 | 99精品欧美一区二 | 欧美亚洲高清国产一区二区三区 | 精品国产又大又长又爽 | 国产极品美女在线观看网站 | 免费一级欧美片在线观看欧美 | 日本一区中 | 在线永久观看视频网站免费 | 中文字幕一区二区三区精品 | 我被两个老外抱着高爽翻了 | 国内精品卡一 | 三年片大全在线观看 | 亚洲欧美人成在线视频 | 午夜免费福利不 | 午夜性色一区二区三区不卡视频 | 日本不卡一区二区三区视频 | 宝贝乖把腿分大一点h欧阳凝小说 | 偷怕自怕视频在线观看 | 日日噜噜夜夜狠狠va | 国产狂喷潮在线观看 | 欧美日韩一道免费中文字幕新视频 | 91夜夜夜精品一区二区 | 亚洲日本精品va中文字幕 | 亚洲精品欧美中文字幕 | 亚洲天堂视频在线免费观看 | 国内精品国语自产拍在线观看91 | 五月综合缴 | 东北熟女bbwbbw喷水 | 噼里啪啦的视频免费观看 | 亚洲一区二 | 中日韩精品视频在线观看 | 精品国产一区二区三区不卡 | 中文乱码 | 91青娱乐免费国产视频 | 国产精品自产拍在线观看一 | 国产噜噜噜精品免费 | 日韩视频中文字幕视频一区 | 国产98色在线 | 日本欧美大码 | 国语对白刺激精品视频 | 第四色伊人 | 国产丝袜在线精品丝袜不卡 | 国产在线中文字幕 | 亚洲人成色777777精品 | 国产免费a视频网站在线观看 | 99国产清国产精品国产 | 日韩视频在线观看一区 | 男人本色国产在线综合 | 在线观看国产人视频免费中国 | 亚洲熟女综合色一区二区三区 | 一区二区高清不卡 | 亚洲手机 | 国产美女在线精品免费观看 | 女人一区二区视频免费 | 国产精品亚洲专区 | 曰本性l交片视频免费 | 国产香港日本三级在线 | 秒拍视频福利永久国产 | 国产l精品国产亚洲区在线观看 | 亚洲成在人线影视天堂网 | 亚洲欧美中文字幕乱码在线 | 亚洲人成电影福利在线播放 | 午夜性爽视频男人的天堂 | 欧美日韩在线精品一区二区三区 | 手机香蕉国产在线 | 欧美日韩亚洲国产一 | 五月天激情 | 精品亚洲一区二区三区在线观看 | www日韩中文字幕在线看 | 最新热门日韩电影 | 91国产最| 热门好看的电影大全 | 免费人成网站视频在线观看国内 | 2025国产精品偷窥盗摄 | 国产精品va无 | 日本大片免a费观看视频 | 三级黄日本| 99视频精品全部国产盗摄视频 | 亚洲精品资源网在线观看 | 成人午夜免费观看 | 精品成人福利在线播放 | 精品欧美视频在线播放不卡 | 免费人成年短视频免费网站 | 国产成本人片免费v | 23部人禽伦 | 97精品国产高清自在线看超 | 欧美日韩国产精品自在线亚洲精品 | 欧美乱妇高清视频免欢看关 | 欧美性色欧美a在线在线播放 | 国产欧美 | 思思99re5国产在 | 日韩一区二区视频在线观看 | 日韩一区二区三区不卡免 | 国产精品香蕉在线的人尹人 | 国产人妖爆视频在线观看 | 国产精品福利在线播放 | 日韩视频中文字幕 | 欧美精品爆操白虎 | 国产高清在线观看视频 | 亚洲欧美香蕉在线日韩精选 | 亚洲精品欧美综合二区 | 日产中文字幕在线精品一区 | 国产美女自卫慰水免费视频 | 欧美亚洲一区二区三区三 | 欧美激情一区二区三区 | 91手机国产在线网站 | 亚洲欧美日韩国产精品专区网 | 欧美日韩在线亚洲一区二区三区 | 欧美亚洲综合成人专区 | 顶级欧美妇高清xxxxx | 国产在线激情视频 | 欧美性猛交xxxx乱大交蜜桃 | 亚洲国产日韩a在线亚洲 | 日本欧美一区二区三区在线 | 色老头一区二区三区 | 国产精品宾馆精品酒店 | 精精国产xxxx视频在线 | 区中文字幕 | 99精品无人区乱码在线观看 | 亚洲午夜视频在线观看 | 国产欧美曰韩一区二区三区 | 亚洲欧美日韩高清一区 | 亚洲色一色噜一噜噜噜人与 | 亚洲午夜国产精 | 综合欧美一区二区三区 | 最新国产精品精品视频 | 国产乱码精品一区二区三区四川人 | 日韩网站在线观看 | 内地级a艳片高清免费播放 五月社区免费 | 手机看片日韩国产一区二区 | 国产免费无遮 | 国产精品边做奶水狂喷有码 | 午夜影院在线看 | 亚洲欧美国产精品制服 | 亚洲精品一区二区 | 国产乱码精品一区二区三区百度 | 国产一区二区三区精品专区 | 亚洲精品国产制服丝袜美腿 | 欧美特黄一级 | 亚洲精品美女偷拍一区二 | 欧美人与性动交α欧美精品 | 精品国产一区二区三区四不卡在线 | 国产日产欧产精品精品 | 两个人免费视频观看高清视频 | 日本伦理片在线看 | 国产伦精品一区二 | 最近中文字幕2025免费 | 欧亚日韩 | 亚洲日韩国产一区二区三区在线 | 欧美xxxx黑人又粗又长精品 | 亚洲国产一区二区在线免费 | 国产精品186在线观看在线播放 | 国产伦精品一区二区三区 | 欧美国产激情在线播放 | 国产后入清纯学生妹 | 九热视频| 欧美日韩一区二区综合在线 |