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

金喜正规买球

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优精品在线观看 | 成人涩涩涩视频在线观看 | 亚洲欧美日本综合 | 欧洲亚洲欧美国产日本高清 | 精品三级乱伦免费 | 精品国产一区二区三区不卡在 | 国产精品lululu在线观 | 国产综合一 | 亚洲精品国产乱码在线看天美 | 成人日韩精品一区二区 | 日韩影视网 | 国产精品第一区第27 | 动画片大全大人动漫在线观看 | 高清欧美日韩 | 亚洲天天更新 | 国产自产在线观看 | 亚洲国产日韩不卡线欧美 | 欧美.日韩.日本中亚网站 | 日本xxxxx在线观看 | 国产美女| 国产精品免费视频能看 | 亚洲日韩国产一 | 国产午夜福利免费看片 | 国产电影一区二区三区 | 一级a爱片免费观看高清完整 | 国产香蕉人在线播放视频网站 | 最新国产在线视频 | 精品国产福利在观看91啪 | 日本好屌色不卡视频在线观看 | 亚洲+欧洲+日产 | 精品不卡一区二区 | 银杏视频推广下载入口 | 日本a级网站在线观看 | 国产在线视频不卡一区二区 | 亚洲国产剧情中文视频在线 | 国产精品一区二区三区免 | 国产在线观看中文字幕 | 欧美制服丝袜国产日韩一区 | 国产亚洲欧美另类一区二区三区 | 国内自拍亚洲 | 国内精品伊人 | 国产午夜亚洲精品理论片不卡 | 天堂中文在线最新版地址 | 欧美日韩综合另类 | 国内精品99亚洲免费高清 | 色与欲影视天天看综合网 | 第一页在线观 | 欧美性狂猛aa| 欧美草逼网站 | 天天天天香蕉线视频国产 | 日韩aⅴ黄日韩a影片 | 日韩国产欧美在线观 | 日韩男女性生活视频在线观看 | 亚洲精品字幕在线观看 | 国产灌醉极品在线观看 | 精品国产免费人成网站 | 国产一区二区视频在线观看 | 美女黄频 | 日日爽天天 | 日本不卡高清免费v日本 | 国产性夜夜春夜夜 | 日韩一区二区免费视频 | 日韩v欧美v中文在线 | 91精品视频免费在线观看 | 狠狠热精品免费视频 | 在线观看中文字幕 | 亚洲永久精品 | 午夜电影 | 国产天堂网在线视频 | 国产又黄又大又粗又硬又猛樱花 | 中文字幕亚洲精品第1页 | www在线资源 | 又大又粗又硬又黄的免费视频 | 手机看片国产欧美日韩 | www.99re6这里有精品 | 欧美日韩免费不卡在线观看 | αv天堂在线观看免费αⅴ 尤物视频 | 热门海量电影资源在线观看 | 日韩精品一区二区三区视频网 | 亚洲最大综合精品 | 老子影院午夜伦不卡亚洲 | 欧美一级精品视频一区 | 免费va人成视频网站全 | 欧美一级在线 | 一级欧美一级日韩片 | 日本道vs高清一区二区三区 | 亚洲精品自 | 国产欧美日韩综合精品一区二区 | 日韩精品一区二区最新 | 国产人伦激情在线观看 | 一区二区三区亚洲综合 | 最新热播电影完整版 | 2025国产每日福利更新 | 国产欧美精品一区二 | 国产亚洲理论在线观看 | 欧美精品videosex极品 | 成人专区一区二区三区四区 | 91精品欧| 国产在线精品一区二区三区不卡 | 在线精品国产 | 日韩国产一区二区三区地区 | 中文字幕乱倫视频 | 国产午夜福利片在线观看 | 99国产婷婷综合在 | 自拍偷区 | 亚洲人成a在线网站 | 三级精品在线观看自拍 | 一级特黄大片欧美99 | 午夜影视污 | 亚洲制服丝袜一区二区三区 | 日本高清视频在线观看不卡 | 国产精品tv在线观看 | 91国自啪 | 日韩国产一区二区三区在线 | 伊伊人成亚洲综合人网香 | 欧美午夜性刺激在线观看免费 | 国产亚洲精aa在线观看香蕉 | 免费特级婬片高清视频 | 日本一区二区三区在线观看入口 | 欧美日韩在线视频专区免费 | 国产精品亚洲专区一区 | 国产精品亚洲综合天堂夜夜 | 欧美在线一区视频 | 国产综合精品一区二区青青 | а√天堂资源在线官网 | 日本黄页免费大片在线观看 | 日韩欧洲区精品一区二区 | 国产日本卡二 | 99视频在线观看精品29 | 亚洲人成aⅴ在线播放 | 成年人免费在线看的惊悚动作片 | 不卡的神马电影网 | 91视频盛宴 | 亚洲欧美v视色一区二区 | 亚洲精品偷 | 成人免费a | 亚洲制服丝袜在线 | 国产系列ts在 | 国精产品一区一区三区有 | 亚洲中文| 国产精品网站 | 草草精品在线视频 | 亚洲国产日韩欧美综合a | 亚洲欧美日韩综合aⅴ | a级全黄试看30分钟国产 | 91精品乱码一区二区三区 | 日韩精品视频 | 91精品在线播放 | 高清在线午夜一区二区亚洲 | 欧美日韩第一区第138页 | 五月丁香 | 欧美日韩中文字幕免费看 | 99精品国产在热 | 国产情侣在线视频播放 | 九热视频 | 亚洲人成电| 97精品视频 | 日本精品电影一区二区三区 | 国产午夜亚洲精品理论片八戒 | 又色又爽又 | 国产大道香蕉大在线 | 欧美日韩国产另类不卡在线 | 国产精品一区二区电影 | 国产日产欧产美韩 | 亚洲人精品亚洲人成在线 | 中日欧洲精品视频在线 | 视频三区 | 精品国产亚洲一区二区三区在线观 | 国产综合精品 | 69精品人伦一区二区三区 | 国产又色又爽又黄又刺激的视 | 日本爽p大片免费观看 | 中文在线а天堂中文在线新版 | 野花日本大全免费观看中文7 | 丝袜制服诱惑第一页一区 | 免费大片黄国产在线观看 | 亚洲综合色区在线播放 | 亚洲国产经典国产精品观看免费 | 精品成人一区二区 | 日韩欧美国产精品亚洲二区 | 日韩欧美中文字幕在线视频 | 国产亚洲综合区成 | 免费看一级特黄a大片 | 亚洲中文字幕30页 | 4k超清国| 亚洲国产精品福利片在线观看 | 国产福利在线观看永久免费 | 国产午夜亚洲精品 | 国产欧美精品区一区二区三区 | 亚洲精品乱码一区二区 | 国产欧美一二三区男女交配 | 一本一本大道香蕉久在线精品 | 精品区2区3区国产 | 日韩精品一区二区国产精品一 | 91精品国产免 | 日韩欧美亚洲一区二区综合 | 国产高清美女主播在线观看 | 欧美亚洲精 | 国产午夜亚洲精品不卡免下载 | 国产精品亚洲二区在线观看 | 国产人在线成免费 | 欧美精品亚洲精品日韩 | 日韩欧美在线视频一区二区 | 日韩欧美一区二区三区免费观看 | 日韩精品亚洲精品第一页 | 更新日韩 | 国内精品手机在线观看视频 | 色欧美亚洲欧 | 亚洲欧美综合精品成人导航 | 亚洲老熟 | 亚洲一区二区三区影院 | 在线视频一区二区 | 国产第二页页在线播放 | 最新中文字幕 | 午夜成人亚洲理伦片在线观看 | 国产精品午夜小视频观看 | 极品美女在线观看免费直播 | 日本精品无人区1区2区3区 | 国产欧美一区二区精品每日更新 | 亚洲一区免费观看 | 狼人亚洲国内精品自在线 | 十分钟在线观看免费直播 | 手机免费看一级 | 香蕉一区二区在线观看 | 欧美视频一区免费精品 | 日韩高清免费视频观看 | 国产精品白拍三级 | 日本国产高清免费 | 亚洲精品欧美中文字幕 | 激情综合五月天 | 偷拍区清纯另类丝袜美腿 | 最新国产在线视频 | а√中文在线资源 | 亚洲国产欧美精品一区二区三区 | 沦为性玩物 | 小雪被老 | 伊人激情一区二区三区 | 国产亚洲欧美第一页在线观看 | 午夜国产一区 | 国产在线精品国偷产拍 | 皮皮在线精品亚洲 | 中文子幕在线观看 | 欧美日韩在线免费观看 | 亚洲中文字幕一区二区三区 | 國產精品爽爽va免費觀看 | 国产亚洲精品不卡 | 一区二区三区中文字幕 | 日韩午夜福利免 | 国产欧美日韩精品在线观看 | 老子影院午夜伦不卡亚洲 | 高清在线观看视频 | 亚洲精品国产乱码在线看天美 | 国产午夜在线观看免费 | 欧美午夜视频一区 | 最近高清中文在线字幕在线观看 | 视频在线播放 | 色色色setu| 欧美视频亚洲视频日韩动漫 | 日本不卡高清免费v日本 | 亚洲午夜私人影院 | 国产在线一区二区三区不卡 | 伊人插菊网| 国产日韩欧 | 国产精品一区二区视色 | 日日夜人人澡人人澡人人看免 | 国产偷∨国产偷∨精品视频 | 三级乱伦国产欧美 | 自拍亚洲一区欧美另类尤物 | 国产欧美日韩精品第二区 | 午夜伦伦| 91精品国产丝袜在线拍 | 羞羞影院午夜男女爽爽视频免费 | 自产视频在线观看 | 神马影院不卡不卡在线观看 | 三年片中国在线观看免费大全 | 天堂网一区二区 | 成人污污污www网站免费丝瓜 | 亚洲国产综合在线 | 国产美日韩精品一区二区在线观看 | 国产极品精品免费视频能看 | 秋霞电影亚洲一区二区三区 | 欧美一卡2卡3卡4卡新区 | 国产欧美亚洲精品第一页 | 日韩视频在线观看 | 国产亚洲日韩在线播放不卡 | 日韩精品极品视频在线观看免费 | 日本亚欧在线观看 | 午夜私人成年影院在线观看 | 91精品国产白产91精品 | 欧美日韩另类视频在线观看 | 在线免费观看成年人视频 | 欧美日韩国产色综合一二三四 | 国产黑色丝袜在线观看下 | 最新高清私人vip视频资源 | 91探花国产综合在线精品 | 人人玩人人添人人澡免费 | 挤奶在线| 日韩欧美激情视频 | 欧美日韩一区二区在线观看视频 | 欧美综合在线激情专区 | 亚洲成a| 设看到很多欧美日韩一区二区综 | 日本b站一卡二不卡三卡四卡 | 亚洲综合国产一区二区三区 | 6080欧美一区二区三区四区 | 电视剧免费在线 | 国产高清视频免费在线观看 | 欧美精产国品一二三类产品特点 | 中文免费国产综合 | 亚洲精品一区二区国产精华液 | 午夜在线观看免费观看大全 | 日产成人高清视频 | 国产日韩欧美综合在线 | 午夜伦情电午夜伦情电影 | 免费特级欧美片 | 国产欧美日韩另类精彩视频 | 欧美疯狂 | 果冻传媒mv国产推荐视频 | 香蕉视观看在线a | 国产婷婷| 亚洲精品乱码在线观看 | 欧美精品一区二区三区四 | 亚洲卡通欧美制服中文 | 在线欧美日韩国产 | 91啪国自产最新91啪国自产 | 男女爽爽午 | 亚洲精品在线不卡 | 国产综合色产在线视 | 国产自产一二三区 | 久精品国产区 | 国产精品天天天天影视 | 欧美日韩国产一区二区三区在 | 国产精品精品国 | 亚洲欧美另类激情综合区蜜芽 | 成人国产精品日韩 | 日本免费一区二区在线 | 久热这里只有精品99在线观看 | 中文字幕在线观看一区二区 | 人与狗性 | 樱桃视频影 | 国产中文99视频在线观看 | 国产xxxx视频在线观看 | 经典国产乱子伦精品视频 | 亚欧精品一区二区三区四区 | 在线观看免费精品国产第一区 | 欧美日韩精品一区 | 99精品国产九九国产精品 | 久章草在线 | 欧美日韩国产在线人成 | 国产一级特黄aa大片免费 | 亚洲春色在线观看 | 国产3344视频在 | 女日韩优在线 | 国产免费三级a在线观看 | 国产精品一品二区三区的使用体验 | 综合精品 | 亚洲国产欧美日韩另类 | 国产免费看视频 | 欧美日韩一区二区三区在线视频 | 欧美精品亚洲精品日韩传电影 | 日本有码中文字幕第一页在线播放 | 免费日韩电影网 | 国产性午夜视频在线观 | 国产黃色精品三級一区二区 | 国产成年人精品一区二区 | 国产免费 | 欧美日韩亚| 亚洲中文娱乐网在线观看 | 午夜亚洲一区 | 午夜日韩丝袜美女视频网站 | www.污污污 | 在线播放真实国产乱子伦 | 高清影视大全 | 欧美日本综合一区二区三区 | 三年片在 | 一边喂奶一边被爱 | 日韩一区二区四区高清免费 | 水莓100免 | 中文字幕精品 | 最新好看的电影 | 国产精选在线观 | 国产又黄又大又粗的视频 | 欧美日韩精品一区二区免费看 | 日韩在线一区二区视频中文字幕 | 日韩美女视频一区 | aⅴ日本亚洲欧洲免费 | 视频一区二区亚洲欧美 | 丝袜视频国产一区 | 亚洲精品伦理一区二区三区青春 | 国产在线观看视频 | 国产女人喷潮视频在线观看免费 | 亚洲v不卡 | 国内精品91最新在线观看 | 国产精品免费视频色拍拍 | 经典三级欧美 | 91人前露出精品国产 | 日韩经典欧美一区二区三区 | 中文字幕精品亚洲一区 | 亚洲精品国产v片 | 黄瓜视频在线播放看片 | 在线观看免费高清 | 欧美日韩视频在线第一区 | 日本三级韩国三级香港三级a级 | 国产在线观看免费视频在线 | 国产精品一区二区电影 | 精品福利一区二区三区免费视 | 欧美日韩在线免费观看 | 日本一区不卡在线观看 | 午夜福利不卡片在线播放免费 | 亚洲第一区国产一区二区精品 | 亚洲高清一区二区三区四区 | 日本高清视频一区 | 91短视频污下载app | 亚洲自拍欧美日韩丝袜 | 欧美在线区 | 国产视频中文字幕手机版 | 污污污免费 | 男插女下| 国产精品免费网站 | 乱仑图片 | 国产私拍福利精品视频推出 | 91精品在线观看中文 | 亚洲中午字幕 | 日韩美女三级视频 | 日韩免费的视频在线观看香蕉 | 日韩中文字幕在 | 国产人妖爆视频在线观看 | 精品国产污 | 亚洲精品自拍视频在线免费 | 另类图区亚 | 国产xxxx视频在线观看 | 国产午夜免费一区二区三区 | 欧美高清性色生活片 | 勃起又长又黑又粗毛又多 | 三年片免费观看影视大全视频 | 天堂视频| 欧美激情一区二区三区高清视频 | 午夜在线观看亚 | 亚洲精品国产精品国自产网站 | 午夜伦理电影网电影午夜伦理 | 亚洲精品伦理一区二区三区青春 | 亚洲人成伊人成综 | 99国产精品永久免费视频 | 亚洲国产精品尤物yw在线 | 欧美日韩国产色 | 污软件不收费软 | 亚洲欧美日韩中文二区 | 最新国产ts人妖系列视频 | 国产女生福利 | 亚洲欧美日韩制服 | 午夜日韩丝袜美女视频网站 | 国产亚洲精品综合一区 | 午夜亚洲 | 亚洲韩国日本欧美一区二区三区 | 一本大道香蕉久97在线播放 | 中文字幕日韩wm二在线看 | 最近免费中文字幕 | 妺妺窝人体色www看人体 | 国产乱理伦片在线午夜观看 | 泰国一级特黄在线观看大片 | 国产色系视频在线观看免费 | 一区二区三区蜜桃 | 国产在线拍揄自揄免费一区 | 国产精品视频免费播放 | 夜爽8888视频在线观看 | 国产精彩视频一区二区在线观看 | 亚洲香蕉中文日韩v日本 | 亚洲精品aⅴ中文字幕 | 二品国精品69xx | 久99精| 亚洲欧美综合人成在线 | 老少配老妇老熟女中文 | 亚洲欧美网站 | 男人扒开女人腿桶到爽免费 | 97干视频 | 99欧美午夜一区二区福利 | 日韩成人| 亚洲v国产v日韩v欧美v | 国产偷∨国产偷∨精品视频 | 国产喷水在线观看 | 欧美一区二区三区免费播放 | 国产综合中文字幕在线 | 国产在线精品国自产拍影 | 国产一区二区三区精品观看啪 | 中文字幕日产熟女乱码 | 视频三区| 国产精品播放一区二区三区 | 亚洲欧美综合精品成人导航 | 青青青国产爽爽视频免费观看 | 亚洲日本一区二区在线观看 | 日本xxxx色 | 亚洲精品亚洲欧美综合区 | 中文字幕亚洲欧美日韩在线不卡 | 日韩熟女高清精品专区 | www.亚洲欧美 | 99热这里只有精品国产首页 | 国产男生午夜福利免费网站 | 成人看免费一级毛 | 最新版本直播app | 欧美另类69 | 99超级在线视频 | 国产美女高清片免费观看 | 二区三区欧美精品在线观看 | 免费二级c片在线观看a | ⅴ人在线观看 | 中文字幕制服丝袜一区二区三区 | 国产在线精品手机播放 | 欧美大片va欧美在线播放 | 国产综合精品在线 | 国产剧情对白刺激在线 | 国产日韩欧美综合在线 | 视频在线播放在线观看 | 亚洲制服| 免费看美女部位隐私网站 | 91精品国产闺蜜国产在线闺 | 亚洲一区欧美二区 | 国产一区二区日韩欧美在线 | 区二区三区在线观看 | 亚洲欧美日韩高清在线电影 | 国产ch| x8x8视频在线观看 | 二区高清不卡 | 欧美日韩精品中文字幕 | 日本国产欧美日韩三区四区 | 全黄裸片一29分钟免费真人版 | 国产亚洲精品精品国产亚洲综合l | 凶猛办公室高清未删减 | 最近中文2025在线观看免费 | 欧美伦理一区 | 日本高清视频www夜色资源网 | 国产a国产片国产 | 自拍亚洲欧美 | 国产福利免费的网址 | 99国产精品国产精品九九 | 极品魔鬼身 | 怡红院熟女 | 天堂mv亚洲mv在 | 97国产婷婷综合 | 午夜视频在线免费观看 | 国产熟女一| 99热久re这里只有精品小草 | 欧美变态口味重另类在线视频 | 日本乱理伦片在线观 | 夜夜国产亚洲视频香蕉 | 性开放的欧美大片黑白配 | 日韩一区二区三区视频在线观看 | 婷婷综合缴情亚洲狠狠 | 97在线视频人 | 欧美日韩视频在线观看网址 | 国产在线观看精品一区二区三区 | 国产午夜男女爽爽爽爽爽视频 | 国产亚洲男人的天堂在线观看 | 亚洲日韩在线观看 | 免费啪视频观试看视频 | 国产精品老女人精品视频 | 正在播放国产自在线拍 | j8又粗又大又长又爽又硬电影 | 国产99视频精品草莓 | 午夜视频久 | 国产又粗又猛又黄又爽视频 | 国产日韩在线欧美视频 | 今日吃瓜 | 99视频精品全部国产盗摄视频 | 亚洲精品国产精品乱码不卡√ | 中文在线资源官网在线 | 中文字幕免费观看一区 | 一区国产二区亚洲三区另类 | 天美麻花星空免费观看乡村版 | 亚洲日本中文字幕天堂网 | 一区二区区别是什么 | 午夜影院 | 亚洲欧美春色激情另类 | 日本一区二区三区四区公司 | 免费国产h视频在 | 亚洲偷自拍拍综合网 | 乱伦三级高清精 | 亚洲中文字幕无线 | 国产精品国产一区二区三区 | 91制片厂一样的应用 | 成人精品一区二区户外勾搭野 | 日本在线 | 婷婷综合激情五月中文字幕 | 伦电影理论片 | 国产精品成aⅴ人片在线观看 | 精品国产免费人成在线观看 | 亚洲欧美日韩在线一区 | 日韩电影大片手机在线观看 | 日本三级香港 | 亚洲日韩在线观看 | 91探花国产综合在线精品 | 国产精品秋霞 | 啦啦啦免费高清视频 | 精品国产伦一区二区三区在线 | 亚洲制服丝袜一区二区三区 | 未满十八勿入网站 | 精品国产爱片 | 国产馆精品推荐在线观看 | 香蕉伊蕉伊中文视频在线 | 欧美日韩国产一线天午夜秀场 | 欧美亚洲中日韩中文字幕在线 | 免费人成视频在线观看播放网站 | 2025最新在线观影网站 | 欧美性猛交xxxx免费看 | 欧美精品成人a在线观看 | 日韩精品一区二区三区中文 | 亚洲v欧美v日韩v国产v在线 | 91国语精品自产拍在线观看一 | 在线观看日产一区二区三区 | 欧美性一级中文字幕18页 | 精品国产9 | 中文字幕一冢本 | 99精品福利国产精品一区 | 国产精彩亚洲中文 | 91成版人在线观看入口 | 国产人妖ts视频在线观看 | 最新电影电视剧免费在线观看 | 日韩丝袜亚洲国产欧美一区 | 最近高清中文在线字幕在线观看 | 亚洲日本一区二区在线观看 | 三级国产 | 欧美综合精品一区二区二 | 五十路息与子在线观看 | 国产日韩在线亚洲字幕中文 | 海量高清影片免费观看 | 3d成人动漫在线观看 | 宅男噜噜噜一区二 | 欧美性色黄大片www喷水 | 91精品啪国产在线观看 | 大黑人交xxxx| 免费看黑人 | 国产又黄又粗又硬又爽视频 | 韩国午夜理 | 最近中文字幕mv免费高清视频 | 欧洲不卡二卡三卡四卡免费 | 视频在线华人精品草 | 国产欧美一区二区三区精品 | 最新高清电影在线免费观看 | 国产一级a爱片免费看 | 免费人成在线播放网站 | 青青在线视频 | 欧美日本道| 国产网站免费精品网站 | 91国语精品自产拍在线观看一 | 成人性开放网 | 亚洲无线码一区国产欧美国日产 | 午夜福利国产一级欧美片 | 精品+在线+国产手机 | 亚洲国产 | 丝袜视频国产一区 | 欧美白皙视 | 奇米777四 | 亚洲日韩欧美一区二区在线 | 青青草国| 日韩精品大片在线观看 | 亚洲日本欧美中文幕 | 噼里啪啦的视频免费观看 | 国偷盗摄自产福利一区在线 | 手机看片高清国产日韩片 | 欧洲亚洲一区二区三区 | 自在现偷 | 级a毛一级a看免费视频 | 日本一本二本三区免费免费高清 | 丁香花在线视频观看免费 | 龚玥菲被躁12| 国产欧美日韩另类精彩视频 | 亚洲日韩在线中文字幕第一页 | 亚洲图片偷拍视频区 | 精品国产一区二区三区不卡在 | 国产福利一区二区三区在线视频 | 视频一区二区三区免费观看 | 一级视频在线播放 | 91尤物国产 | 欧美日韩精品中文字幕 | 凄辱护士日本电影免费看 | 日韩欧美国产动漫在线 | 韩剧日剧在线看 | 亚洲国产在线精品国偷产拍 | 国产乱码1卡二卡3卡四卡5 | 婷婷蜜桃国产精品一区 | 香蕉伊蕉伊中文在线视频 | 噼里啪啦国语在线观看高清资源 | 日韩新片王网 | 亚洲aⅴ精品国产首次亮相 国产炮机主播在线观看 | 大地影视mv高清视频在线观看 | 亚洲免费体验区 | 亚洲欧美suv精品 | 欧美人与性囗牲恔配 | 欧美高清在线不卡免费观看 | 青青成人福| 国产男女免费完整视频 | 日皮视频免费 | 免费动漫在线观看 | 欧美一区日韩一区中文字幕页 | 老师裸露胸免 | 永久在线观看免费视频 | 亚洲第一视频在线播放 | 欧美三级极品视频在线观看 | 一二三四影视在线看片免费 | 精品国产尤物 | 国内精品自在自线视频香蕉 | 亚洲欧美精品suv | 夜鲁鲁鲁夜夜综合视频欧美 | 粗又视频图片 | 国产日韩区欧美a | 午夜理论片在线观看免费 | 国产高清在线精品一区小说 | 欧美一区二区三区四区国产另类 | 91啦中文成人| 国产二代与美女酒店在线播放 | 中文字幕日本αv一区二区 乱伦国产精品日本 | 国产大秀视频一 | 精品女同一区二区三区免费站 | 国产熟女熟女 | 精品国产自在现线免费观看 | 国产又粗又猛又爽又黄的视频吉 | 日本亚洲欧美综合视频 | 国产精品精品国产 | 99精品视频免费在线观看 | 亚洲色人妇性爱视频 | 亚瑟视频在线观看 | 韩国日本免费高清观看 | 91看片淫黄大片欧美看国产片 | 日本偷窥 | 亚洲春色在线视频 | 大胸视频在线观看国产 | 亚洲日韩在线精品茄子在线 | 精品性影院一区二区三区 | 最近中文字幕在线中文高清版 | 国产精品日产三级在线观看 | 综合一区| 精品免费囯产一区二区三区四 | 日本大乳奶电影在线观看 | 亚洲国产欧美日韩精品网 | 国产精品免费大片 | 精品免费国产一区二区三区四区五 | 日本高清视频网址 | 亚洲理论电影在线观 | 手机看片日韩国产一区二区 | 欧美综合视频在线 | 好屌色在线 | 性欧美video高清 | 欧美视频在线视频精品 | 欧美巨大黑人暴力xxxxx黑人 | 亚洲mv大片欧洲mv大片入口 | 国产乱理伦片在线观看网站 | 亚洲欧美国产日韩精 | 露脸美女另类 | 午夜国产精品电影在线观看一区 | 二区三区欧美精品在线观看 | 国产成视频在线观看 | 国产99综合精品一区二区 | 国产激情在线视频 | 最新国产精品拍自在线播放 | 中文字幕日韩欧美精品 | 免费在线观看最新高清电影 | ⅴ在线观看| 一区二区三区精品视频免费播放 | 一区二区三区四区在线视频 | 国产宅男宅女在线观看 | 欧美特黄aaaaa | 久青草无 | 亚洲日本欧美日韩中文字幕 | 午夜一区一品日本 | 在线播放成人高 | 欧美性色生活免费观看 | 97精品国产高清自在线看超 | 人妖和人妖互交性xxxx视频 | 色综合中文字幕色综合激情 | 久精品国产欧美亚洲色a大片 | 国产精品欧美激情一区二区亚洲 | 亚洲色偷偷综合亚洲 | 高清在线播放不卡 | 内裤包裹| 亚洲欧美综合乱伦一区 | 免费人成网站免费看视频 | 在线观看欧美a级精品视频 电影中文 | 午夜免费啪视频观看视频 | 国产做爰一区二区 | 91福利在线观看视频 | 国产免费一区二区三区在线观看 | bt在线天堂中文最新版 | 午夜性影院在线观看视频播放 | 成人高清 | 中文字幕亚洲激情 | 日韩精品一区二区三区免费在线 | 欧美丰满大黑帍在线播放 | 国产目拍亚洲精品二区 | 国产精品乱码一区二区视频 | 亚洲国产精品va在线观看无 | 日韩a∨精品日韩在线观看 国产女精 | 永久亚洲成a人片777777 | 91极品国产| 成人自拍视频免费 | 最新国产精品自在自线发布 | 日本免费人成视频在线观看 | 在线观看国产日韩亚洲中文字幕 | 国产真实伦|