日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

.NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇)

發布時間:2023/12/8 C# 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該文主要介紹如何借助iTextSharp在C# 2.0中制作PDF文件,本文的架構大致按照iTextSharp的操作文檔進行翻譯,如果需要查看原文,請點擊一下鏈接:http://itextsharp.sourceforge.net/tutorial/

一、?iTextSharp的介紹和下載

(1)用戶可以瀏覽官網進行查看:http://itextsharp.sourceforge.net/index.html

iText# (iTextSharp) is a port of the iText open source java library written entirely in C# for the .NET platform. iText# is a library that allows you to generate PDF files on the fly. It is implemented as an assembly.

(2)以下鏈接用于下載:http://sourceforge.net/project/platformdownload.php?group_id=72954

下載后為一個解壓縮文件,用戶直接解壓后得到一個dll動態鏈接庫,在創建的項目中直接引入即可使用(本文的所有代碼均在VS 2005環境下測試通過

二、創建一個PDF文檔(原文:http://itextsharp.sourceforge.net/tutorial/ch01.html

2.1 示例代碼分析

創建一個PDF文檔大致包括五個步驟,代碼如下:

using System; using System.Collections.Generic; using System.Text; using iTextSharp.text; using iTextSharp.text.pdf; using System.IO;namespace MakePDF {class Program{static void Main(string[] args){Console.WriteLine("Chapter 1 example 1: Hello World");// step 1: 創建Document對象Document document = new Document();try{//step 2:創建一個writer用于監聽Document以及通過PDF-stream指向一個文件PdfWriter.GetInstance(document, new FileStream("Chap0101.pdf", FileMode.Create)); // step 3: 打開documentdocument.Open();// step 4: 添加一段話到document中document.Add(new Paragraph("Hello World PDF"));}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: 關閉documentdocument.Close();Console.Read();}} }

該段代碼的效果是可以在當前工作目錄下,生成一個名字叫做Chap0101.pdf的PDF文檔

2.2 第一步:創建Document對象

(1) Document對象

iTextSharp.text.Document有三個構造函數,分別為:

public Document(); public Document(Rectangle pageSize); public Document(Rectangle pageSize,int marginLeft,int marginRight,int marginTop,int marginBottom);

第一個構造函數調用第二個構造函數,參數為PageSize.A4

第二個構造函數調用第三個構造函數,其中每個邊距默認值為36

(2) Page Size

你可以創建自己的用于特定顏色的Rectangle對象,并將其作為pageSize。我們對前面的代碼進行修改,即創建一個長的、窄的、背景顏色為淡黃色的PDF文檔。代碼如下:

using System; using System.Collections.Generic; using System.Text; using iTextSharp.text; using iTextSharp.text.pdf; using System.IO;namespace MakePDF {class Program{static void Main(string[] args){Console.WriteLine("Chapter 1 example 1: Hello World");// step 1: creation of a document-objectRectangle pageSize = new Rectangle(144, 720);pageSize.BackgroundColor = new Color(0xFF, 0xFF, 0xDE);Document document = new Document(pageSize);//iTextSharp.text.Document document = new Document();try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.GetInstance(document, new FileStream("Chap0101.pdf", FileMode.Create)); // step 3: we open the documentdocument.Open();// step 4: we Add a paragraph to the documentdocument.Add(new Paragraph("Hello World PDF"));}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.Read();}} }

大多pageSizes都是采用了PORTRAIT格式,如果你想在LANDSCAPE應用它們,你必須使用rotate(),代碼如下:

Document document = new Document(PageSize.A4.rotate());

(3) Margins

在創建document的過程中,你也可以定義左、右、上、下邊距,代碼如下所示:

Document document = new Document(PageSize.A5, 36, 72, 108, 180);

注意:如果你修改pageSize,會在下一個頁面創建時產生影響;如果你修改margins,則會在當前頁面立即產生影響。

2.3 創建Write對象

一旦成功創建了document,我們必須創建一個或者多個實例用于監聽document,所有的writers繼承于iTextSharp.text.DocWriter類。即你可以iTextSharp.text.pdf.PdfWriter 使用來生成PDF文檔,而如果需要生成Tex文檔你必須使用iTextSharp.text.TeX.TeXWriter。

你可以使用以下的方式創建實例:

PdfWriter writer = PdfWriter.getInstance(document, new FileStream("Chap01xx.pdf"));

在使用過程中,你幾乎不會使用到writer對象(除了你想創建高級的PDF文件或者你想使用一些特定的函數,比如ViewerPreferences或者Encryption),所以獲取這類實例就足夠了。

該函數的第一個參數即第一步所創建的document對象;

第二個參數為不同類型的Stream對象,目前我們都只使用System.IO.FileStream,后來我們會使用到System.IO.MemoryStream.?

2.4 元數據以及打開document

在你添加實際數據(即內容)是,你可能想加入某些關系到document的元數據,其方法如下:

public boolean addTitle(String title) public boolean addSubject(String subject) public boolean addKeywords(String keywords) public boolean addAuthor(String author) public boolean addCreator(String creator) public boolean addProducer() public boolean addCreationDate() public boolean addHeader(String name, String content)

你可以選擇自己的Title,Subject,Keywords,Author以及Creator,但是添加制作者的函數必須一直使用,以及添加創建時間的方法添加的當前系統的時間(事實上,這兩個方法是被自動調用的),你可以用客戶的姓名作為Header,但是這對于PdfWrite沒有任何影響。

2.5 添加內容

1、在前面的三個步驟中,你遇到了諸如:Phrase,Paragraph…的對象,在以后的章節會詳細的給予介紹。有些時候,你可能希望writer可以忽略document中的行為,相關的代碼可以查看

2、如果你想創建兩個writer:writerA和writerB(這個代碼在第二步會丟出異常)

PdfWriter writerA = PdfWriter.getInstance(document, new FileStream("Chap0111a.pdf", FileMode.Create)); PdfWriter writerB = PdfWriter.getInstance(document, new FileStream("Chap0111b.pdf", FileMode.Create));

實際上,我們需要對其進行簡單的修改,修改后的代碼如下:

writerA.Pause(); document.add(new Paragraph("This paragraph will only be added to Chap0111b.pdf, not to Chap0111a.pdf")); writerA.resume();

2.6 關閉document

關閉document相當重要,因為它會影響和關閉writer寫的輸出流,close方法為finalize方法,但是你不能依靠它,你必須手工對其進行關閉。

三、Chunks, Phrases 和Paragraphs(原文http://itextsharp.sourceforge.net/tutorial/ch02.html)

3.1 Chunk

Chunk是能夠添加到document文本中最小的重要部分。Chunk能夠為其他的元素諸如Phrase以及Paragrph等構建塊,一個Chunk就是一個附有指定字體的字符串,在添加chunk的文本的對象中,所有其他的版面設計參數都應該定義。

下面的代碼表示我們創建內容為"Hello world"格式為(red, italic COURIER font of size 20)的Chunk:

Chunk chunk = new Chunk("Hello world", FontFactory.getFont(FontFactory.COURIER, 20, Font.ITALIC, new Color(255, 0, 0)));

?

?

?

3.2 Phrases

Phrases是一系列擁有特定的作為額外參數的leading(=兩行之間的空間)的Chunk

Phrases擁有一個主字體,但是其他的chunks可以擁有不同于這個主字體的其余字體,你可以從多種構造函數中創建Phrases對象。代碼如下:

using System; using System.IO;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0202 {public static void Main(){Console.WriteLine("Chapter 2 example 2: Phrases");// step 1: creation of a document-objectDocument document = new Document();try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.GetInstance(document, new FileStream("Chap0202.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4: we Add a paragraph to the documentPhrase phrase0 = new Phrase();Phrase phrase1 = new Phrase("(1) this is a phrase/n");// In this example the leading is passed as a parameterPhrase phrase2 = new Phrase(24, "(2) this is a phrase with leading 24. You can only see the difference if the line is long enough. Do you see it? There is more space between this line and the previous one./n");// When a Font is passed (explicitely or embedded in a chunk),// the default leading = 1.5 * size of the fontPhrase phrase3 = new Phrase("(3) this is a phrase with a red, normal font Courier, size 20. As you can see the leading is automatically changed./n", FontFactory.GetFont(FontFactory.COURIER, 20, Font.NORMAL, new Color(255, 0, 0)));Phrase phrase4 = new Phrase(new Chunk("(4) this is a phrase/n"));Phrase phrase5 = new Phrase(18, new Chunk("(5) this is a phrase in Helvetica, bold, red and size 16 with a given leading of 18 points./n", FontFactory.GetFont(FontFactory.HELVETICA, 16, Font.BOLD, new Color(255, 0, 0))));// A Phrase can contains several chunks with different fontsPhrase phrase6 = new Phrase("(6)");Chunk chunk = new Chunk(" This is a font: ");phrase6.Add(chunk);phrase6.Add(new Chunk("Helvetica", FontFactory.GetFont(FontFactory.HELVETICA, 12)));phrase6.Add(chunk);phrase6.Add(new Chunk("Times New Roman", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12)));phrase6.Add(chunk);phrase6.Add(new Chunk("Courier", FontFactory.GetFont(FontFactory.COURIER, 12)));phrase6.Add(chunk);phrase6.Add(new Chunk("Symbol", FontFactory.GetFont(FontFactory.SYMBOL, 12)));phrase6.Add(chunk);phrase6.Add(new Chunk("ZapfDingBats", FontFactory.GetFont(FontFactory.ZAPFDINGBATS, 12)));Phrase phrase7 = new Phrase("(7) if you don't Add a newline yourself, all phrases are glued to eachother!");document.Add(phrase1);document.Add(phrase2);document.Add(phrase3);document.Add(phrase4);document.Add(phrase5);document.Add(phrase6);document.Add(phrase7);}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.WriteLine("End");Console.Read();} }

?

3.3 Phragraph

?

Phragraph是一系列的chunk或者phrase.跟phrase類似,Phragraph也有特定的leading,用戶也可以定義特定的縮排。每個加到document的Phragraph都會自動生成新的一行。Phragraph的構造函數包括如下幾種:

Paragraph p1 = new Paragraph(new Chunk("This is my first paragraph.", FontFactory.getFont(FontFactory.HELVETICA, 12))); Paragraph p2 = new Paragraph(new Phrase("This is my second paragraph.", FontFactory.getFont(FontFactory.HELVETICA, 12))); Paragraph p3 = new Paragraph("This is my third paragraph.", FontFactory.getFont(FontFactory.HELVETICA, 12));

所有的paragraph對象還可以利用add()添加paragraph對象。代碼如下:

p1.add("you can add strings, "); p1.add(new Chunk("you can add chunks ")); p1.add(new Phrase("or you can add phrases."));

注意:每一個paragraph只能且需有一個leading,如果你想添加其他字體的phrase或者chunk,原先的leading依舊有效,你可以利用方法setLeading修改leading,但是這樣會造成所有paragraph的內容都會擁有新的leading.測試代碼如下:

using System; using System.IO;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0205 {public static void Main(){Console.WriteLine("Chapter 2 example 5: Paragraphs");// step 1: creation of a document-objectDocument document = new Document();try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.GetInstance(document, new FileStream("Chap0205.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4: we Add a paragraph to the documentParagraph p1 = new Paragraph(new Chunk("This is my first paragraph. ",FontFactory.GetFont(FontFactory.HELVETICA, 10)));p1.Add("The leading of this paragraph is calculated automagically. ");p1.Add("The default leading is 1.5 times the fontsize. ");p1.Add(new Chunk("You can Add chunks "));p1.Add(new Phrase("or you can Add phrases. "));p1.Add(new Phrase("Unless you change the leading with the method setLeading, the leading doesn't change if you Add text with another leading. This can lead to some problems.", FontFactory.GetFont(FontFactory.HELVETICA, 18)));document.Add(p1);Paragraph p2 = new Paragraph(new Phrase("This is my second paragraph. ",FontFactory.GetFont(FontFactory.HELVETICA, 12)));p2.Add("As you can see, it started on a new line.");document.Add(p2);Paragraph p3 = new Paragraph("This is my third paragraph.",FontFactory.GetFont(FontFactory.HELVETICA, 12));document.Add(p3);}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.WriteLine("End");Console.Read();} }

以下的代碼我們應用方法setKeepTogether(true)來保證paragraph在一個page上,這個并不經常發生。

using System; using System.IO;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0206 {public static void Main(){Console.WriteLine("Chapter 2 example 6: keeping a paragraph together");// step 1: creation of a document-objectDocument document = new Document(PageSize.A6);try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter writer = PdfWriter.GetInstance(document, new FileStream("Chap0206.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4:Paragraph p;p = new Paragraph("GALLIA est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit. Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe commeant atque ea quae ad effeminandos animos pertinent important, proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter bellum gerunt. Qua de causa Helvetii quoque reliquos Gallos virtute praecedunt, quod fere cotidianis proeliis cum Germanis contendunt, cum aut suis finibus eos prohibent aut ipsi in eorum finibus bellum gerunt.", FontFactory.GetFont(FontFactory.HELVETICA, 12));p.KeepTogether = true;document.Add(p);p = new Paragraph("[Eorum una, pars, quam Gallos obtinere dictum est, initium capit a flumine Rhodano, continetur Garumna flumine, Oceano, finibus Belgarum, attingit etiam ab Sequanis et Helvetiis flumen Rhenum, vergit ad septentriones. Belgae ab extremis Galliae finibus oriuntur, pertinent ad inferiorem partem fluminis Rheni, spectant in septentrionem et orientem solem. Aquitania a Garumna flumine ad Pyrenaeos montes et eam partem Oceani quae est ad Hispaniam pertinet; spectat inter occasum solis et septentriones.]", FontFactory.GetFont(FontFactory.HELVETICA, 12));p.KeepTogether = true;document.Add(p);p = new Paragraph("Apud Helvetios longe nobilissimus fuit et ditissimus Orgetorix. Is M. Messala, [et P.] M. Pisone consulibus regni cupiditate inductus coniurationem nobilitatis fecit et civitati persuasit ut de finibus suis cum omnibus copiis exirent: perfacile esse, cum virtute omnibus praestarent, totius Galliae imperio potiri. Id hoc facilius iis persuasit, quod undique loci natura Helvetii continentur: una ex parte flumine Rheno latissimo atque altissimo, qui agrum Helvetium a Germanis dividit; altera ex parte monte Iura altissimo, qui est inter Sequanos et Helvetios; tertia lacu Lemanno et flumine Rhodano, qui provinciam nostram ab Helvetiis dividit. His rebus fiebat ut et minus late vagarentur et minus facile finitimis bellum inferre possent; qua ex parte homines bellandi cupidi magno dolore adficiebantur. Pro multitudine autem hominum et pro gloria belli atque fortitudinis angustos se fines habere arbitrabantur, qui in longitudinem milia passuum CCXL, in latitudinem CLXXX patebant.", FontFactory.GetFont(FontFactory.HELVETICA, 12));p.KeepTogether = true;document.Add(p);p = new Paragraph("His rebus Adducti et auctoritate Orgetorigis permoti constituerunt ea quae ad proficiscendum pertinerent comparare, iumentorum et carrorum quam maximum numerum coemere, sementes quam maximas facere, ut in itinere copia frumenti suppeteret, cum proximis civitatibus pacem et amicitiam confirmare. Ad eas res conficiendas biennium sibi satis esse duxerunt; in tertium annum profectionem lege confirmant. Ad eas res conficiendas Orgetorix deligitur. Is sibi legationem ad civitates suscipit. In eo itinere persuadet Castico, Catamantaloedis filio, Sequano, cuius pater regnum in Sequanis multos annos obtinuerat et a senatu populi Romani amicus appellatus erat, ut regnum in civitate sua occuparet, quod pater ante habuerit; itemque Dumnorigi Haeduo, fratri Diviciaci, qui eo tempore principatum in civitate obtinebat ac maxime plebi acceptus erat, ut idem conaretur persuadet eique filiam suam in matrimonium dat. Perfacile factu esse illis probat conata perficere, propterea quod ipse suae civitatis imperium obtenturus esset: non esse dubium quin totius Galliae plurimum Helvetii possent; se suis copiis suoque exercitu illis regna conciliaturum confirmat. Hac oratione Adducti inter se fidem et ius iurandum dant et regno occupato per tres potentissimos ac firmissimos populos totius Galliae sese potiri posse sperant.", FontFactory.GetFont(FontFactory.HELVETICA, 12));p.KeepTogether = true;document.Add(p);p = new Paragraph("Ea res est Helvetiis per indicium enuntiata. Moribus suis Orgetoricem ex vinculis causam dicere coegerunt; damnatum poenam sequi oportebat, ut igni cremaretur. Die constituta causae dictionis Orgetorix ad iudicium omnem suam familiam, ad hominum milia decem, undique coegit, et omnes clientes obaeratosque suos, quorum magnum numerum habebat, eodem conduxit; per eos ne causam diceret se eripuit. Cum civitas ob eam rem incitata armis ius suum exequi conaretur multitudinemque hominum ex agris magistratus cogerent, Orgetorix mortuus est; neque abest suspicio, ut Helvetii arbitrantur, quin ipse sibi mortem consciverit.", FontFactory.GetFont(FontFactory.HELVETICA, 12));p.KeepTogether = true;document.Add(p);}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.Read(); } }

四、Anchor(錨)、List(列表)和Annotation(注釋)

(原文:http://itextsharp.sourceforge.net/tutorial/ch03.html)

?

4.1 Anchor

?

我們都知道HTML中的超文本鏈接,只要你點擊指定的文字,你就可以跳轉到網絡中的其他頁面,這種功能在PDF中同樣存在,在后面的章節會詳細的介紹PDF中的鏈接Chapter 11,。但是這是iText的另外一種高級編程,我們這里只是介紹簡單的iText.

如果你想添加外部的link到document中(比如用URL鏈接到網頁中的另外一個document),你可以簡單的使用Anchor對象,該對象繼承于Phrase對象,它們具有相同的使用方法,但是它還有兩個額外的方法:setName和setReference,具體的使用代碼如下:

Anchor anchor = new Anchor("website", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE, new Color(0, 0, 255))); anchor.Reference = "http://itextsharp.sourceforge.net"; anchor.Name = "website";

如果你想添加內部的鏈接,你需要為鏈接選擇獨特的名字,這就像在HTML中為錨所使用的名字,當你為這個目標設定索引時,你需要在前面添加一個#符號,具體代碼如下:

Anchor anchor1 = new Anchor("This is an internal link"); anchor1.Name = "link1"; Anchor anchor2 = new Anchor("Click here to jump to the internal link"); anchor.Reference = "#link1";

?

4.2 List

利用List和ListItem類,你就可以為PDF文件添加列表了,如果你想擁有有序(ordered)列表或者無序列表(unordered)你都可以使用這兩個類。

?

(1) ordered列表

List list = new List(true, 20); list.Add(new ListItem("First line")); list.Add(new ListItem("The second line is longer to see what happens once the end of the line is reached. Will it start on a new line?")); list.Add(new ListItem("Third line"));

?

結果為:

?

(2) 無序列表

List overview = new List(false, 10); overview.Add(new ListItem("This is an item")); overview.Add("This is another item");

結果為:

你可以用setListSymbol方法改變列表標識符,代碼如下所示:

// set a String as listsymbol list1.ListSymbol = "*"; // set a Chunk (that contains the bullet character) as listsymbol list2.ListSymbol = new Chunk("/u2022", FontFactory.getFont(FontFactory.HELVETICA, 20)); // set an Images wrapped in a Chunk as listsymbol list3.ListSymbol = new Chunk(Image.getInstance("myBullet.gif"), 0, 0);

還有一些方法用于改變列表的縮排:setIndentationLeft?和?setIndentationRight.

而列表符的縮排可以在構造函數中給予設定,參考代碼如下:

using System; using System.IO;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0302 {public static void Main() {Console.WriteLine("Chapter 3 example 2: Lists");// step 1: creation of a document-objectDocument document = new Document();try {// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.getInstance(document, new FileStream("Chap0302.pdf", FileMode.Create));// step 3: we Open the documentdocument.Open();// step 4:List list = new List(true, 20);list.Add(new ListItem("First line"));list.Add(new ListItem("The second line is longer to see what happens once the end of the line is reached. Will it start on a new line?"));list.Add(new ListItem("Third line"));document.Add(list);document.Add(new Paragraph("some books I really like:"));ListItem listItem;list = new List(true, 15);listItem = new ListItem("When Harlie was one", FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 12));listItem.Add(new Chunk(" by David Gerrold", FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 11, Font.ITALIC)));list.Add(listItem);listItem = new ListItem("The World according to Garp", FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 12));listItem.Add(new Chunk(" by John Irving", FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 11, Font.ITALIC)));list.Add(listItem);listItem = new ListItem("Decamerone", FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 12));listItem.Add(new Chunk(" by Giovanni Boccaccio", FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 11, Font.ITALIC)));list.Add(listItem);document.Add(list);Paragraph paragraph = new Paragraph("some movies I really like:");list = new List(false, 10);list.Add("Wild At Heart");list.Add("Casablanca");list.Add("When Harry met Sally");list.Add("True Romance");list.Add("Le mari de la coiffeuse");paragraph.Add(list);document.Add(paragraph);document.Add(new Paragraph("Some authors I really like:"));list = new List(false, 20);list.ListSymbol = new Chunk("/u2022", FontFactory.getFont(FontFactory.HELVETICA, 20, Font.BOLD));listItem = new ListItem("Isaac Asimov");list.Add(listItem);List sublist;sublist = new List(true, 10);sublist.ListSymbol = new Chunk("", FontFactory.getFont(FontFactory.HELVETICA, 8));sublist.Add("The Foundation Trilogy");sublist.Add("The Complete Robot");sublist.Add("Caves of Steel");sublist.Add("The Naked Sun");list.Add(sublist);listItem = new ListItem("John Irving");list.Add(listItem);sublist = new List(true, 10);sublist.ListSymbol = new Chunk("", FontFactory.getFont(FontFactory.HELVETICA, 8));sublist.Add("The World according to Garp");sublist.Add("Hotel New Hampshire");sublist.Add("A prayer for Owen Meany");sublist.Add("Widow for a year");list.Add(sublist);listItem = new ListItem("Kurt Vonnegut");list.Add(listItem);sublist = new List(true, 10);sublist.ListSymbol = new Chunk("", FontFactory.getFont(FontFactory.HELVETICA, 8));sublist.Add("Slaughterhouse 5");sublist.Add("Welcome to the Monkey House");sublist.Add("The great pianola");sublist.Add("Galapagos");list.Add(sublist);document.Add(list);}catch(DocumentException de) {Console.Error.WriteLine(de.Message);}catch(IOException ioe) {Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();} }

?

4.3 Annotation

在iText中支持不同類型的注釋:

(1) Text:你可以向document添加一些小塊的文本,但是這些文本并不屬于內容的一部分,Annotation有一個標題和一些內容,具體代碼如下:

Annotation a = new Annotation("authors","Maybe it's because I wanted to be an author myself that I wrote iText."); ??

(2) External links(外部鏈接):你可以指定一個可被點擊的矩形或者字符串(稱為URL)或者URL對象,具體代碼如下:

Annotation annot = new Annotation(100f, 700f, 200f, 800f, new URL("http://www.lowagie.com")); Annotation annot = new Annotation(100f, 700f, 200f, 800f, "http://www.lowagie.com");

(3) External PDF file(外部PDF文件):你可以設定一個可點擊的矩形和字符串(文件名稱)和目的文件或者頁碼:

Annotation annot = new Annotation(100f, 700f, 200f, 800f, "other.pdf", "mark"); Annotation annot = new Annotation(100f, 700f, 200f, 800f, "other.pdf", 2);

(4) Named action(指定的行為):你必須制定一個可點擊的矩形和一個指定的行為:

Annotation annot = new Annotation(100f, 700f, 200f, 800f, PdfAction.FIRSTPAGE);

(5) Application(應用):你必須制定一個可點擊的矩形和一個應用程序

Annotation annot = new Annotation(300f, 700f, 400f, 800f, "C://winnt/notepad.exe", null, null, null);

5、HeaderFooters,Chapters,Sections和Graphic對象(原文:http://itextsharp.sourceforge.net/tutorial/ch04.html)

5.1 HeaderFooter

HeaderFooter對象是一個能夠為document的每個頁面添加footer和header的對象,這些頁眉和頁腳都包含著標準的短語和當前的頁碼(如果有需要)。如果你需要更加復雜的頁眉和頁腳(有表格或者有page X of Y),您需要閱讀12章節Chapter 12

下面的核心代碼表示我們第一個添加一個包含頁碼但是么有任何邊界的頁眉。

HeaderFooter footer = new HeaderFooter(new Phrase("This is page: "), true); footer.Border = Rectangle.NO_BORDER; document.Footer = footer;

具體代碼如下:

using System; using System.IO;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0401 {public static void Main(){Console.WriteLine("Chapter 4 example 1: Headers en Footers");// step 1: creation of a document-objectDocument document = new Document();try{// step 2: we create a writer that listens to the documentPdfWriter.GetInstance(document, new FileStream("Chap0401.pdf", FileMode.Create));// we Add a Footer that will show up on PAGE 1HeaderFooter footer = new HeaderFooter(new Phrase("This is page: "), true);footer.Border = Rectangle.NO_BORDER;document.Footer = footer;// step 3: we open the documentdocument.Open();// we Add a Header that will show up on PAGE 2HeaderFooter header = new HeaderFooter(new Phrase("This is a header"), false);document.Header = header;// step 4: we Add content to the document// PAGE 1document.Add(new Paragraph("Hello World"));// we trigger a page breakdocument.NewPage();// PAGE 2// we Add some more contentdocument.Add(new Paragraph("Hello Earth"));// we remove the header starting from PAGE 3document.ResetHeader();// we trigger a page breakdocument.NewPage();// PAGE 3// we Add some more contentdocument.Add(new Paragraph("Hello Sun"));document.Add(new Paragraph("Remark: the header has vanished!"));// we reset the page numberingdocument.ResetPageCount();// we trigger a page breakdocument.NewPage();// PAGE 4// we Add some more contentdocument.Add(new Paragraph("Hello Moon"));document.Add(new Paragraph("Remark: the pagenumber has been reset!"));}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.Read();} }

?

我們也可以用一下的構造函數:

HeaderFooter footer = new HeaderFooter(new Phrase("This is page "), new Phrase("."));

如果你設置HeadFooter對象沒有改變邊界,頁眉或者頁腳會在文本的上下有一條線。

HeaderFooter header = new HeaderFooter(new Phrase("This is a header without a page number"), false); document.Header = header;

5.2 Chapters和Section

十一章(Chapter 11 本文的12節)描述了如何創建大綱樹,如果你只是需要附有一些章節或者子段的簡單的樹,你可以利用Chapter和Section類來自動創建,核心代碼如下:

Paragraph cTitle = new Paragraph("This is chapter 1", chapterFont); Chapter chapter = new Chapter(cTitle, 1); Paragraph sTitle = new Paragraph("This is section 1 in chapter 1", sectionFont); Section section = chapter.addSection(sTitle, 1);

下面的代碼,我們添加一系列的章節和子章節,運行程序后,你可以查看到PDF文件擁有完整的大綱樹,這個大綱樹被默認打開,如果你想使得有一部大綱關閉,你可以把BookmarkOpen屬性設置為false.

using System; using System.IO;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0402 {public static void Main(){Console.WriteLine("Chapter 4 example 2: Chapters and Sections");// step 1: creation of a document-objectDocument document = new Document(PageSize.A4, 50, 50, 50, 50);try{// step 2: we create a writer that listens to the documentPdfWriter writer = PdfWriter.GetInstance(document, new FileStream("Chap0402.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4: we Add content to the document// we define some fontsFont chapterFont = FontFactory.GetFont(FontFactory.HELVETICA, 24, Font.NORMAL, new Color(255, 0, 0));Font sectionFont = FontFactory.GetFont(FontFactory.HELVETICA, 20, Font.NORMAL, new Color(0, 0, 255));Font subsectionFont = FontFactory.GetFont(FontFactory.HELVETICA, 18, Font.BOLD, new Color(0, 64, 64));// we create some paragraphsParagraph blahblah = new Paragraph("blah blah blah blah blah blah blaah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah");Paragraph blahblahblah = new Paragraph("blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blaah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah");// this loop will create 7 chaptersfor (int i = 1; i < 8; i++){Paragraph cTitle = new Paragraph("This is chapter " + i, chapterFont);Chapter chapter = new Chapter(cTitle, i);if (i == 4){blahblahblah.Alignment = Element.ALIGN_JUSTIFIED;blahblah.Alignment = Element.ALIGN_JUSTIFIED;chapter.Add(blahblah);}if (i == 5){blahblahblah.Alignment = Element.ALIGN_CENTER;blahblah.Alignment = Element.ALIGN_RIGHT;chapter.Add(blahblah);}// Add a table in the 6th chapterif (i == 6){blahblah.Alignment = Element.ALIGN_JUSTIFIED;}// in every chapter 3 sections will be Addedfor (int j = 1; j < 4; j++){Paragraph sTitle = new Paragraph("This is section " + j + " in chapter " + i, sectionFont);Section section = chapter.AddSection(sTitle, 1);// in all chapters except the 1st one, some extra text is Added to section 3if (j == 3 && i > 1){section.Add(blahblah);}// in every section 3 subsections are Addedfor (int k = 1; k < 4; k++){Paragraph subTitle = new Paragraph("This is subsection " + k + " of section " + j, subsectionFont);Section subsection = section.AddSection(subTitle, 3);if (k == 1 && j == 3){subsection.Add(blahblahblah);}subsection.Add(blahblah);}if (j == 2 && i > 2){section.Add(blahblahblah);}}document.Add(chapter);}}catch (Exception de){Console.Error.WriteLine(de.StackTrace);}// step 5: we close the documentdocument.Close();Console.Read();} }

5.3 Graphic

如果你想添加諸如線段、圓、幾何圖形等,你可以查看本文的第11章或者查看原文(Chapter 10),但如果你只是需要有限的功能,你可以直接使用Graphic對象。核心代碼如下:

Graphic grx = new Graphic(); // add a rectangle grx.rectangle(100, 700, 100, 100); // add the diagonal grx.moveTo(100, 700); grx.lineTo(200, 800); // stroke the lines grx.stroke(); document.Add(grx);

詳細代碼如下(在目前測試過程中,Ghaphic類不能使用,目前還不知道什么原因)

using System; using System.IO;using iTextSharp.text; using iTextSharp.text.pdf; using iTextSharp.text.factories;public class Chap0404 {public static void Main(){Console.WriteLine("Chapter 4 example 4: Simple Graphic");// step 1: creation of a document-objectDocument document = new Document();try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.GetInstance(document, new FileStream("Chap0404.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4: we add a Graphic to the documentGraphic grx = new Graphic(); // add a rectanglegrx.rectangle(100, 700, 100, 100);// add the diagonalgrx.moveTo(100, 700);grx.lineTo(200, 800);// stroke the linesgrx.stroke();document.Add(grx);}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.Read();} }

六、表格Table(原文:http://itextsharp.sourceforge.net/tutorial/ch05.html)

提示:如果你僅僅只生成PDF(并非XML,HTML,RTF)文件,你最好可以用PdfPTable類取代Table類

6.1 一些簡單的表格

Table(表格)就是一個包含Cells(單元格)的Rectangle(矩陣).并按照一些特定的矩陣進行排序。表格中的矩陣并一定要M*N,它還可以只包含比unit大的單元格或者hole,其核心代碼如下:

public Table(int columns, int rows) throws BadElementException;

下面的代碼我們創建一個非常簡單的表格:

using System; using System.IO;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0501 {public static void Main(){Console.WriteLine("Chapter 5 example 1: my first table");// step 1: creation of a document-objectDocument document = new Document();try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.GetInstance(document, new FileStream("Chap0501.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4: we create a table and add it to the documentTable aTable = new Table(2, 2); // 2 rows, 2 columnsaTable.AddCell("0.0");aTable.AddCell("0.1");aTable.AddCell("1.0");aTable.AddCell("1.1");aTable.AddCell("1.2");document.Add(aTable);}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.Read();}}

以上代碼創建了一個含有2行2列的表格,單元格自動添加,開始于第一行的第一列,然后第二列,當一個行滿了以后,下一個單元格就在下一行的第一列添加。如下圖所示:

以下代碼為在表格指定的位置進行添加單元格,在測試本代碼,您必須添加引用System.Drawing.dll庫文件來訪問Point對象,我們在該代碼創建一個4X4的表格,然后在隨機的位置添加單元格。

核心代碼如下:

Table aTable = new Table(4,4); aTable.AutoFillEmptyCells = true; aTable.addCell("2.2", new Point(2,2)); aTable.addCell("3.3", new Point(3,3)); aTable.addCell("2.1", new Point(2,1)); aTable.addCell("1.3", new Point(1,3));

詳細代碼如下:

using System; using System.IO; using System.Drawing;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0502 {public static void Main(){Console.WriteLine("Chapter 5 example 2: adding cells at a specific position");// step 1: creation of a document-objectDocument document = new Document();try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.GetInstance(document, new FileStream("Chap0502.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4: we create a table and add it to the documentTable aTable;aTable = new Table(4, 4); // 4 rows, 4 columnsaTable.AutoFillEmptyCells = true;aTable.AddCell("2.2", new Point(2, 2));aTable.AddCell("3.3", new Point(3, 3));aTable.AddCell("2.1", new Point(2, 1));aTable.AddCell("1.3", new Point(1, 3));document.Add(aTable);document.NewPage();aTable = new Table(4, 4); // 4 rows, 4 columnsaTable.AddCell("2.2", new Point(2, 2));aTable.AddCell("3.3", new Point(3, 3));aTable.AddCell("2.1", new Point(2, 1));aTable.AddCell("1.3", new Point(1, 3));document.Add(aTable);}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.Read();}}

從以上代碼可以看出,我們必須設置屬性AutoFillEmptyCells屬性為true,如果你忘記設置該屬性(就像本代碼生成的第二個表格),這樣就不會有額外的單元格添加當然不包括任何單元格的行也會被忽略。在本例中,第一行沒有顯示,就是因為它是空的。

通常情況下,我們會用數據庫查詢結果來填滿表格,在許多例子中,我們并不知道我們究竟需要多少行,這里有個構造函數可以解決這個問題,如下:

public Table(int columns);

如果有需要,iText會自動添加行,在下面的例子,我們初始化了一個4X4的表格,當我們在6行和7行添加單元格的時候,iText自動將行數升至為7.具體代碼如下所示:

using System; using System.IO; using System.Drawing;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0503 {public static void Main(){Console.WriteLine("Chapter 5 example 3: rows added automatically");// step 1: creation of a document-objectDocument document = new Document();try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.GetInstance(document, new FileStream("Chap0503.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4: we create a table and add it to the documentTable aTable = new Table(4, 4); // 4 rows, 4 columnsaTable.AutoFillEmptyCells = true;aTable.AddCell("2.2", new Point(2, 2));aTable.AddCell("3.3", new Point(3, 3));aTable.AddCell("2.1", new Point(2, 1));aTable.AddCell("1.3", new Point(1, 3));aTable.AddCell("5.2", new Point(5, 2));aTable.AddCell("6.1", new Point(6, 1));aTable.AddCell("5.0", new Point(5, 0));document.Add(aTable);}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.Read();} }

同樣,添加列數也是可能的,但是有一定的難度,它不會進行自動的添加,你需要使用addColumns方法以及為列的寬度進行設置,在下面的代碼可以看出。

using System; using System.IO; using System.Drawing;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0504 {public static void Main(){Console.WriteLine("Chapter 5 example 4: adding columns");// step 1: creation of a document-objectDocument document = new Document();try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.GetInstance(document, new FileStream("Chap0504.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4: we create a table and add it to the documentTable aTable = new Table(2, 2); // 2 rows, 2 columnsaTable.AutoFillEmptyCells = true;aTable.AddCell("0.0");aTable.AddCell("0.1");aTable.AddCell("1.0");aTable.AddCell("1.1");aTable.AddColumns(2);float[] f = { 1f, 1f, 1f, 1f };aTable.Widths = f;aTable.AddCell("2.2", new Point(2, 2));aTable.AddCell("3.3", new Point(3, 3));aTable.AddCell("2.1", new Point(2, 1));aTable.AddCell("1.3", new Point(1, 3));aTable.AddCell("5.2", new Point(5, 2));aTable.AddCell("6.1", new Point(6, 1));aTable.AddCell("5.0", new Point(5, 0));document.Add(aTable);}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.Read();} }

6.2 ?一些表格參數

以上創建的一些表格看起來效果都不怎么好,我們可以通過設置一些表格參數來改變表格的外觀。Table類和Cell類都是繼承于Rectangle類,所以我們可以利用一些rectangle的典型的方法,如下面代碼:

using System; using System.IO;using iTextSharp.text; using iTextSharp.text.pdf;public class Chap0505 {public static void Main(){Console.WriteLine("Chapter 5 example 5: colspan, rowspan, padding, spacing, colors");// step 1: creation of a document-objectDocument document = new Document();try{// step 2:// we create a writer that listens to the document// and directs a PDF-stream to a filePdfWriter.GetInstance(document, new FileStream("Chap0505.pdf", FileMode.Create));// step 3: we open the documentdocument.Open();// step 4: we create a table and add it to the documentTable table = new Table(3);table.BorderWidth = 1;table.BorderColor = new Color(0, 0, 255);table.Padding = 5;table.Spacing = 5;Cell cell = new Cell("header");cell.Header = true;cell.Colspan = 3;table.AddCell(cell);cell = new Cell("example cell with colspan 1 and rowspan 2");cell.Rowspan = 2;cell.BorderColor = new Color(255, 0, 0);table.AddCell(cell);table.AddCell("1.1");table.AddCell("2.1");table.AddCell("1.2");table.AddCell("2.2");table.AddCell("cell test1");cell = new Cell("big cell");cell.Rowspan = 2;cell.Colspan = 2;cell.BackgroundColor = new Color(0xC0, 0xC0, 0xC0);table.AddCell(cell);table.AddCell("cell test2");document.Add(table);}catch (DocumentException de){Console.Error.WriteLine(de.Message);}catch (IOException ioe){Console.Error.WriteLine(ioe.Message);}// step 5: we close the documentdocument.Close();Console.Read();} }

總結

以上是生活随笔為你收集整理的.NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产一区二区在线免费视频 | 天天摸日日摸人人看 | 国产视频亚洲视频 | 人人爽人人爽人人 | 国产亚洲视频在线免费观看 | 91视频88av | 久久久久日本精品一区二区三区 | 欧美性生活久久 | 超碰97.com | 婷婷综合在线 | 成人网在线免费视频 | 日韩免费视频 | 韩日精品在线 | 热re99久久精品国产66热 | 亚洲精品乱码久久久久久9色 | 天天激情综合 | 干天天 | 91黄色视屏| a亚洲视频 | 久草视频手机在线 | 免费在线国产精品 | 久久久久久久久久亚洲精品 | 国产高清视频在线播放一区 | www.久久爱.cn| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产69久久 | 欧美性生活久久 | 久久久久久久久毛片精品 | 国产精品ssss在线亚洲 | 色在线免费视频 | 国产精品久久久久久久久婷婷 | 中文字幕乱偷在线 | 中文字幕免费在线看 | 成人黄色在线视频 | 91精品免费在线视频 | 免费视频你懂得 | 丁香花在线视频观看免费 | 国产精品久久久久久一区二区三区 | 亚洲精品电影在线 | 国产视频在线观看一区 | www操操 | www.少妇| 91精品蜜桃| 中文字幕a∨在线乱码免费看 | 99看视频在线观看 | 婷婷激情综合 | 午夜视频99 | 日日夜夜人人精品 | 久久九九影院 | 欧美国产在线看 | 97热在线观看 | 国产精品一区二区免费视频 | 中文字幕在线观看亚洲 | 成人在线免费观看视视频 | 中文字幕在线观看完整版电影 | av黄色成人 | 久久99久久99精品免观看软件 | 免费在线黄网 | 成人在线免费看视频 | www.av在线.com| 国产黄大片在线观看 | 日日干日日 | 奇米影视777四色米奇影院 | 午夜精品福利影院 | 久久少妇免费视频 | 国语自产偷拍精品视频偷 | 麻豆视频一区二区 | 日韩 在线观看 | 国产美女久久久 | 激情文学综合丁香 | 婷婷丁香在线观看 | 亚洲激情婷婷 | 久久天天操| 精品国产一区二区三区久久久久久 | 91精品国产九九九久久久亚洲 | 少妇高潮流白浆在线观看 | 色夜视频 | 久久视频在线免费观看 | 一区二区视频电影在线观看 | 国产女做a爱免费视频 | 亚洲网久久| 久久香蕉国产 | 成人免费看片98欧美 | 射射色| www国产亚洲 | 免费av在| 色大片免费看 | 最新中文字幕 | 久久九九久久 | 我要看黄色一级片 | 亚洲精品毛片一级91精品 | 国产精品久久久久久久久久尿 | 国产精品久久久久久久久费观看 | 亚洲精品色 | 玖玖爱在线观看 | 色综合a | 黄色app网站在线观看 | 久久精品久久久久 | 久久免费视频在线观看6 | 狠狠狠的干 | 国产成人精品一区二区在线观看 | 美女又爽又黄 | 天天爽网站 | 成人小视频在线免费观看 | 三级黄色片在线观看 | 国产婷婷视频在线 | 中文字幕日韩国产 | 欧美一级专区免费大片 | 99精品在线观看 | 很黄很污的视频网站 | 超碰在线99 | 久草视频在线看 | 亚州人成在线播放 | 中文字幕你懂的 | 国产免费中文字幕 | 亚洲国产片色 | 91高清免费| 午夜精品一区二区国产 | 日韩电影在线观看一区二区 | 三级av中文字幕 | 国产激情电影综合在线看 | 日韩黄色中文字幕 | 在线观看一区 | 欧美在线视频一区二区三区 | 免费看麻豆| 黄av免费在线观看 | 亚洲片在线| 久久少妇av | 人人射人人射 | 久久久久麻豆v国产 | 免费在线色 | 人人射人人爱 | 成人免费亚洲 | 五月婷婷激情网 | av久久在线| 国产精品理论片在线播放 | 久久99热精品这里久久精品 | 在线观看免费高清视频大全追剧 | 美女免费视频一区二区 | 成人h在线播放 | 波多野结衣动态图 | 99re亚洲国产精品 | 国产精品免费一区二区三区在线观看 | 国产 视频 高清 免费 | 国产91精品高清一区二区三区 | 91视频在线| 黄色成人av在线 | 久久精品直播 | 久久经典国产视频 | 激情网在线观看 | 五月天婷亚洲天综合网鲁鲁鲁 | 98超碰人人| 深爱婷婷激情 | 久久综合中文字幕 | 亚洲精品国产成人 | 91精品国产91久久久久 | 国产成人一区二区在线观看 | 中文字幕在线观看视频一区二区三区 | 精品国产乱码久久久久久天美 | 精品主播网红福利资源观看 | 波多野结衣一区二区三区中文字幕 | www日韩欧美 | 国产69精品久久久久久 | 免费网站看v片在线a | 国产经典三级 | 中文字幕免费播放 | av丝袜在线 | 久久这里有 | 视频一区二区三区视频 | 综合婷婷丁香 | 狠狠色噜噜狠狠狠狠2022 | 国产xxxx做受性欧美88 | 亚洲午夜久久久久久久久久久 | 97av影院 | 国产99免费视频 | 国产美女免费观看 | 超碰在线观看av | 日韩专区一区二区 | 中文一二区 | 国产精品 欧美 日韩 | 少妇啪啪av入口 | 国产日韩精品一区二区三区在线 | 夜夜视频| 麻豆国产精品一区二区三区 | 欧美日韩一级在线 | 日韩欧美中文 | 欧美精品免费视频 | 天天操天天操天天操天天操天天操 | 国产精品普通话 | 日韩剧| 亚洲精品在线观看网站 | 亚洲 成人 欧美 | 日韩福利在线观看 | 伊人中文字幕在线 | 国产91免费观看 | 成人av动漫在线 | 亚洲精品视频第一页 | 国产二区精品 | 日韩a级免费视频 | 欧美在线视频二区 | 麻豆手机在线 | 成人免费观看a | 91最新地址永久入口 | 欧美精品二区 | 色综合夜色一区 | 99精品久久只有精品 | 中文字幕欧美日韩va免费视频 | 毛片视频电影 | 欧美日韩高清一区二区 | 一级免费黄视频 | 波多野结衣在线观看一区二区三区 | 亚洲另类人人澡 | 97国产精品一区二区 | 亚洲精品午夜久久久 | 丁香色综合 | 四虎天堂 | 亚洲成人999 | 亚洲专区视频在线观看 | 成年人黄色免费看 | 婷婷六月中文字幕 | 97视频久久久 | 日韩av片免费在线观看 | 久久久久久久久亚洲精品 | 中文字幕在线观看第二页 | 亚洲第一区在线观看 | 四虎影院在线观看av | 国产无遮挡又黄又爽在线观看 | 99久久精品国产观看 | 香蕉97视频观看在线观看 | 久久精品视频2 | 国产日韩精品视频 | 日韩高清激情 | 成人免费在线视频 | 天天色天天色天天色 | 成人免费大片黄在线播放 | 欧美日韩国产色综合一二三四 | 亚洲三级网 | 超碰伊人网 | 亚洲精品动漫久久久久 | 亚洲精品福利视频 | 免费av在线网站 | 天天插伊人 | 97精品国产97久久久久久粉红 | 日韩激情视频在线 | 西西4444www大胆无视频 | 欧美网站黄色 | 五月综合激情 | 在线视频a | 久久精品美女视频网站 | 中文字幕在线视频一区二区三区 | 99热最新地址 | 在线国产精品视频 | 久久久黄视频 | 91黄站| 久久久国产精品亚洲一区 | 国产在线视频导航 | 九九久久精品 | 一本一道久久a久久精品蜜桃 | 91免费版在线观看 | 四虎永久网站 | 国产精品国产精品 | 日韩美视频| 99综合久久 | 少妇做爰k8经典 | 黄色成品视频 | 免费特级黄色片 | 成人黄色小说视频 | 伊人五月天婷婷 | 亚洲在线视频播放 | 视频在线观看日韩 | 欧美午夜精品久久久久久孕妇 | 国产精品久久久久久久久久久久冷 | 久久另类视频 | 日韩av中文在线观看 | 一级片黄色片网站 | 一区二区三区在线免费播放 | 一区二区三区在线免费观看视频 | 久久综合狠狠综合久久激情 | 激情婷婷综合网 | 日日躁夜夜躁xxxxaaaa | 超碰国产在线观看 | 亚洲综合欧美日韩狠狠色 | 91精品国产三级a在线观看 | 亚洲国产精品视频在线观看 | 日韩电影在线观看一区二区三区 | 国产视频一区在线播放 | 久久艹综合 | 日韩精品三区四区 | 国产精品99久久久久久人免费 | 一区精品久久 | 久久九九免费视频 | 激情丁香在线 | 天天碰天天操 | 免费成人av | 亚洲欧洲精品一区二区 | 天天干天天干天天色 | 国产一区在线视频观看 | 成人精品一区二区三区中文字幕 | 808电影免费观看三年 | 蜜臀一区二区三区精品免费视频 | 国产精品毛片久久 | 日韩com | 麻豆小视频在线观看 | 国产 一区二区三区 在线 | 亚洲精品视频二区 | 美女视频永久黄网站免费观看国产 | 五月婷婷一区二区三区 | 五月天堂色| 福利片视频区 | 91精品国产电影 | 久久艹精品 | 日韩久久久 | 欧美精品一区二区蜜臀亚洲 | 久久久精品成人 | 久久成人人人人精品欧 | 黄色大全免费观看 | 波多野结衣视频一区二区三区 | 国产视频1区2区3区 久久夜视频 | 九九热1| 欧美做受高潮电影o | 91九色在线观看视频 | 黄色av电影在线观看 | 久久精品国产免费观看 | 三级av在线免费观看 | 亚洲视频 中文字幕 | 欧美福利视频一区 | 亚洲禁18久人片 | 有码视频在线观看 | 成人免费在线观看av | 日本精油按摩3 | 欧美天天综合 | 超碰精品在线观看 | 777视频在线观看 | 成人h电影在线观看 | 激情欧美xxxx | 国产男女无遮挡猛进猛出在线观看 | 久久99热久久99精品 | 午夜精品福利一区二区 | 亚洲欧美激情精品一区二区 | 欧美国产91 | 西西44人体做爰大胆视频 | 婷婷中文字幕综合 | 久久久综合色 | 久久99精品一区二区三区三区 | 91女神的呻吟细腰翘臀美女 | 一级久久精品 | 九九综合九九综合 | 99久热在线精品视频观看 | 99久久精品国产毛片 | 麻豆传媒在线免费看 | 成年人视频在线免费 | 西西www444| 美女黄视频免费看 | 黄网站app在线观看免费视频 | 久久久久久网址 | 国产精品成人aaaaa网站 | 永久免费的啪啪网站免费观看浪潮 | 99热手机在线观看 | 免费人成网ww44kk44 | 天堂在线视频免费观看 | 美女网站黄在线观看 | 免费成人黄色av | 久久久久久久久久久久久影院 | 4438全国亚洲精品在线观看视频 | 天干啦夜天干天干在线线 | 不卡中文字幕在线 | 成人黄色在线播放 | 岛国av在线| 亚洲三级在线播放 | 97精品一区 | 伊人久久国产 | 激情五月在线 | 亚洲欧美日韩精品久久久 | 中文在线字幕观看电影 | 亚洲综合色视频在线观看 | 亚洲精品一区二区三区四区高清 | 中文字幕中文字幕在线中文字幕三区 | 黄色大片免费网站 | 五月天久久久久久 | 久久久片| 成人免费在线看片 | 欧美日韩在线观看一区二区三区 | 久草视频免费播放 | 99免费在线视频观看 | 日韩最新理论电影 | 久久精品黄 | 黄色官网在线观看 | av综合站 | 少妇超碰在线 | 热久久国产| 美女黄频在线观看 | 日韩精品一区二区三区丰满 | 中日韩欧美精彩视频 | 99久久99久久精品国产片果冰 | 四虎精品成人免费网站 | 欧美午夜性 | 在线导航av | 久久久久久久久久久成人 | 香蕉在线观看 | av黄色免费网站 | 天天干天天操天天做 | 伊人天天狠天天添日日拍 | 日韩v在线 | 久草在线视频看看 | 国产精品黄色影片导航在线观看 | 99麻豆久久久国产精品免费 | 成人综合婷婷国产精品久久免费 | 日韩精品一卡 | 国产高清视频免费观看 | 91看片成人 | 日韩乱码中文字幕 | 国产黄色在线观看 | 美女免费视频黄 | 国产福利在线免费观看 | 欧美日韩精品在线观看视频 | 久久激情婷婷 | 69人人| 国产精品一二三 | 婷婷在线精品视频 | 在线免费观看视频a | 日韩经典一区二区三区 | 免费观看成人av | 在线观看成人小视频 | 亚洲国产美女久久久久 | wwxxx日本| 欧美,日韩 | 国产 在线观看 | 婷婷狠狠操 | 综合色中文 | 久久99操| 好看av在线 | 亚洲精品 在线视频 | 国产成人精品一区二区在线观看 | 九九久久电影 | 久久精品久久综合 | 亚洲美女精品区人人人人 | 在线a亚洲视频播放在线观看 | av成人资源| 99热国产在线中文 | 国产福利精品视频 | 久久国产精品99久久人人澡 | 成 人 黄 色 视频 免费观看 | 国产99一区 | 91视频免费观看 | 日韩免费av片 | 久草青青在线观看 | 国偷自产中文字幕亚洲手机在线 | 国产高清精| 久久99影院 | 激情六月婷婷久久 | 欧美日韩一区二区在线 | www.夜夜| 96超碰在线| 久草视频在线资源 | 久久免费视频8 | 天天干com | 日韩电影在线一区二区 | 黄色性av| 美女一级毛片视频 | 美女免费视频网站 | 国产精品去看片 | 国产精品美女久久久久久久网站 | 91av片| 91在线影视 | 天天爱天天操天天爽 | 国语麻豆 | av免费观看高清 | 欧美激情视频免费看 | 成人av电影在线 | 国产999视频 | 视频二区在线视频 | 亚洲精品国产综合99久久夜夜嗨 | 久久综合亚洲鲁鲁五月久久 | 国产三级国产精品国产专区50 | www.精选视频.com| 成年人在线电影 | 久久艹国产视频 | www.少妇| 青青河边草免费直播 | 99久久这里有精品 | 天天综合天天做天天综合 | 亚洲综合激情五月 | 人人讲| 在线日韩中文字幕 | 91久草视频| 亚洲国产影院 | 中文字幕av在线 | 婷婷亚洲激情 | 在线观看日本高清mv视频 | 伊人成人精品 | 五月天亚洲精品 | 久久不射电影院 | 亚洲欧美视频一区二区三区 | 四虎在线观看精品视频 | 日本二区三区在线 | 99热网站| 色欧美综合 | 日韩视频在线播放 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 天天操天天透 | 成人性生活大片 | 国产精品第二页 | 日韩网站在线播放 | 国产精品99页| 国产成人61精品免费看片 | 人人插人人费 | 成人小电影在线看 | 中文字幕在 | 中文字幕成人网 | 超碰在线91 | 国产情侣一区 | 中文字幕中文字幕 | 2024av在线播放 | 国产精品一区二区在线观看免费 | 91激情视频在线播放 | 在线播放视频一区 | 亚洲最大成人免费网站 | 色综合久久久久综合 | 欧美国产一区二区 | 丁香电影小说免费视频观看 | 亚洲视频1区2区 | 婷婷色影院 | 亚洲精品一区二区三区高潮 | 日韩av网站在线播放 | 黄色小说视频在线 | 黄色精品久久 | 天天干夜夜操视频 | 欧美日韩中文字幕在线视频 | 91视频久久久久 | 免费人成在线观看网站 | av高清一区二区三区 | 成人一级免费视频 | 日韩激情视频 | 美女免费网站 | 欧美日本不卡高清 | 看片黄网站 | 亚洲全部视频 | 在线超碰av | 视频在线国产 | 狠狠操操操 | 国产成人精品一区二区在线观看 | av高清一区二区三区 | 国产成人精品综合久久久久99 | 欧美福利在线播放 | 2019精品手机国产品在线 | 在线观看免费黄视频 | 亚洲资源网 | 国产女v资源在线观看 | 免费色视频网站 | 五月婷婷开心 | 国产精品久久久久久久久久免费 | 久久久久五月天 | 久久韩国免费视频 | 久久福利影视 | 91久久久久久久一区二区 | 99国产成+人+综合+亚洲 欧美 | 欧美一级裸体视频 | www.97色.com| 亚洲97在线 | 国产精品淫片 | 国产剧情在线一区 | 国产精品高潮呻吟久久久久 | 久久久久高清毛片一级 | 在线亚洲成人 | 欧美一区免费观看 | 免费看十八岁美女 | 午夜视频一区二区三区 | 国产黄色观看 | 亚洲一级片在线观看 | 丁香婷婷网 | 啪嗒啪嗒免费观看完整版 | 天天天天爱天天躁 | 97精品久久人人爽人人爽 | av一区二区三区在线播放 | 天天干.com | 日韩精品一区二区免费视频 | 国产精品亚洲视频 | 久久视频网址 | 日日夜夜中文字幕 | 美女激情影院 | 免费看麻豆 | 日韩欧美黄色网址 | a级成人毛片 | 91av社区 | 中文字幕 在线 一 二 | 最近能播放的中文字幕 | 久久久私人影院 | 91av视频在线播放 | 在线 高清 中文字幕 | 久久久久久久久久久黄色 | 综合久久久久久久久 | 日韩高清精品免费观看 | 国产二区免费视频 | 丁香婷婷自拍 | 亚洲精品福利视频 | 大荫蒂欧美视频另类xxxx | 亚洲精品一区二区三区四区高清 | 日韩一区二区三区免费视频 | 最新中文字幕在线播放 | 亚洲伊人天堂 | 99re国产视频 | 久久久久一区二区三区四区 | 国产一区 在线播放 | 国产精品久久久久久久久久 | 操操日| 91综合久久一区二区 | 91成年视频| 日韩影视在线观看 | 亚洲日本va中文字幕 | 精品字幕在线 | 狠狠干网址 | 亚洲国产精品一区二区久久,亚洲午夜 | 粉嫩一区二区三区粉嫩91 | aaa亚洲精品一二三区 | 久久成人高清视频 | 久草在线看片 | 人人干人人超 | 国产资源 | 97精品欧美91久久久久久 | 成人免费在线播放视频 | 一级免费观看 | 天天天天干| 一区二区三区在线免费 | 99久久综合精品五月天 | 激情图片久久 | 精品在线观看一区二区 | 亚洲永久av | 久久国产精彩视频 | 91av视频免费在线观看 | 99re久久资源最新地址 | 免费精品国产 | 精品国产免费一区二区三区五区 | 深爱激情亚洲 | 久久女同性恋中文字幕 | 一级片免费视频 | 中文免费观看 | av不卡免费看 | 国产精品嫩草影院123 | 午夜视频在线观看一区二区三区 | 国产精品女人久久久 | 亚洲 欧洲av | 9999在线观看 | 天堂v中文 | 成人福利在线 | 免费日韩一区二区 | 中文字幕在线免费观看视频 | 在线视频精品播放 | 婷婷色av| 天天艹 | 色偷偷av男人天堂 | 精品久久免费看 | 国产免费又黄又爽 | 欧美 日韩 性 | 麻豆视频在线观看免费 | 国产精品久久久久9999吃药 | 一级性视频 | 干干日日 | 国产美女精品人人做人人爽 | 国产成人一区二区三区 | 日精品 | 中文字幕一区二区在线播放 | 日韩av一区二区在线播放 | 18国产精品白浆在线观看免费 | 九九综合在线 | 在线精品亚洲一区二区 | 麻豆国产在线视频 | 成人午夜久久 | 色婷婷亚洲综合 | 国产精品永久久久久久久久久 | 国产精品综合av一区二区国产馆 | 久久精品一区二区 | 中文字幕在线播放一区二区 | 欧美a级成人淫片免费看 | 激情久久久久久久久久久久久久久久 | 日韩在线二区 | 亚洲精品久久久久久久不卡四虎 | 亚洲精品在线免费观看视频 | 国产区精品视频 | 99爱视频在线观看 | 中文字幕在线观看一区二区 | 国产免费又粗又猛又爽 | 日韩色综合网 | 911免费视频 | 亚洲乱码在线 | a黄色大片| 91片黄在线观看动漫 | 国产中文字幕一区二区三区 | 亚洲视频第一页 | 99欧美精品 | 中文字幕频道 | av福利在线 | 欧美日韩视频一区二区三区 | 狠狠色狠狠综合久久 | 91丨九色丨国产在线 | 亚州中文av | 日韩av男人的天堂 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | www一起操 | 中文字幕在线视频网站 | 色在线免费 | 国产一级视屏 | av在线免费观看黄 | 性色av香蕉一区二区 | 99精品视频网 | 99亚洲精品视频 | 国产精品99爱 | 久久婷婷一区二区三区 | 在线高清一区 | 在线观看免费黄视频 | 国产精品岛国久久久久久久久红粉 | 麻豆视频国产精品 | 公开超碰在线 | 久久久久成人精品 | 精品av在线播放 | 免费99精品国产自在在线 | 激情狠狠干 | av视屏在线播放 | 国产精品一区二区吃奶在线观看 | 99久久影院| 人人草在线视频 | 色99之美女主播在线视频 | 欧美日韩中文字幕视频 | 日产乱码一二三区别免费 | 91精品国产福利在线观看 | 欧美黑吊大战白妞欧美 | 久久久久久久久久久久99 | 国产精品久久精品 | 91av在线精品 | 天天综合网在线 | 月下香电影 | 黄色毛片观看 | 免费国产视频 | 极品久久久久 | 天天干天天操天天干 | 黄色片亚洲 | 激情五月婷婷综合网 | www.超碰97.com | 91精品对白一区国产伦 | 国产精品 日韩精品 | 久久国产一区 | 久久综合干 | 视频二区在线 | 亚洲国产成人精品在线观看 | 手机色站| 在线日韩一区 | 国产一级二级在线 | 免费观看www小视频的软件 | 日韩乱码在线 | 9在线观看免费 | 久久久精品免费观看 | 国产成人一区二区精品非洲 | 日韩三级中文字幕 | 在线日韩| 久久久激情网 | 亚洲午夜激情网 | 欧美性护士 | 国产精品去看片 | 日韩一区二区三区免费电影 | 国产精品免费成人 | 成年人在线免费看视频 | 欧美一级片免费观看 | 亚洲午夜久久久影院 | 五月亚洲 | 亚洲另类xxxx | 成x99人av在线www | 日韩视频在线一区 | 综合久久精品 | 国产黄色免费看 | 日韩av资源在线观看 | 免费av网站观看 | 国内久久久 | 激情片av | 99产精品成人啪免费网站 | 天天摸天天弄 | 亚洲91在线| 久久乱码卡一卡2卡三卡四 五月婷婷久 | 日本中文在线观看 | 成人黄色小说网 | 国产精品自产拍在线观看网站 | 国产精品不卡在线播放 | japanese黑人亚洲人4k | 西西444www| 国产成人亚洲在线电影 | 中日韩三级视频 | 九九视频在线观看视频6 | 在线观看免费黄色 | 国产五月 | 涩涩网站免费 | 久久久福利视频 | 国产破处在线播放 | 亚洲激情p | 在线观看91精品视频 | 国产91在线播放 | 狠狠操狠狠插 | 欧美日韩在线第一页 | 久久精品这里都是精品 | 久久人人爽人人片 | 久久黄色免费视频 | 丁香婷婷久久久综合精品国产 | 国产精品第一页在线 | 久久精品国产亚洲精品 | 亚洲成人精品av | 国产香蕉视频 | 日韩av二区 | 日韩精品免费一区二区 | 成人毛片一区 | 天天操天天曰 | 久久精品99国产精品酒店日本 | 国产成人福利片 | 插综合网| 亚洲精品999 | 国产在线播放一区 | 成年人网站免费观看 | 成片免费观看视频大全 | 激情小说网站亚洲综合网 | 美女网站在线看 | 成人欧美亚洲 | 综合网中文字幕 | 91视频com| 麻豆高清免费国产一区 | 国产精品资源网 | 狠狠的日日 | 色av男人的天堂免费在线 | 精品99免费 | 国产精品视频在线看 | 欧美激情综合色综合啪啪五月 | 国产精品淫片 | 国产在线精品一区 | 日韩高清免费在线观看 | 日韩三级视频在线观看 | 婷婷亚洲综合 | 操操操日日日 | 91福利社区在线观看 | 丁香一区二区 | 又黄又爽又湿又无遮挡的在线视频 | 国产精品亚洲片在线播放 | 超碰在线观看av.com | 日韩网页 | 69精品久久 | 亚洲精品99久久久久久 | 精品视频免费 | 久草精品在线观看 | 91九色porny在线| 91av欧美| 久久视频免费看 | 久久精品欧美视频 | 国产福利一区二区三区视频 | 国产精品久久久久毛片大屁完整版 | 久草网在线观看 | 国产精品高清一区二区三区 | 久久艹影院 | www.色综合.com | 久久艹在线 | 国产999视频在线观看 | 久草视频99 | 亚洲激情中文 | 午夜的福利 | 国产偷国产偷亚洲清高 | 99一级片| 国产午夜精品一区二区三区四区 | 精品久久视频 | 91高清不卡 | 亚洲 欧美 国产 va在线影院 | 久久国产精品视频免费看 | 久久久国产一区二区 | 国产一区二区精品 | 中文久草| 欧美性生活免费 | 制服丝袜成人在线 | 超碰97国产在线 | 五月天国产精品 | 天天狠狠干 | 综合久久网 | 五月天激情视频 | 久久婷婷精品 | 久久久九色精品国产一区二区三区 | 91在线精品观看 | 免费a v在线| a√国产免费a | 久久亚洲区 | 99精品免费久久久久久久久 | 国产精品毛片一区二区在线看 | 国产成人99久久亚洲综合精品 | 中文字幕视频免费观看 | 狠狠色狠狠色综合日日92 | 久久免费精品一区二区三区 | 激情 婷婷 | 成人av免费| 久久久久国产精品一区二区 | 九九交易行官网 | 99爱在线观看 | 国产精品不卡在线 | 久久久精品免费观看 | 91视频久久久久久 | 最新亚洲视频 | 最近免费中文视频 | 成人黄色在线电影 | 婷婷六月综合网 | 婷五月激情 | 色婷婷国产精品一区在线观看 | 国产精品123 | 四虎国产视频 | 亚洲精品国偷拍自产在线观看 | av中文天堂在线 | 久久成人综合视频 | 韩国av一区二区 | 久久视频一区二区 | 国产一区二区三区免费在线 | 日日夜夜精品免费观看 | 精品乱码一区二区三四区 | 黄av免费 | 91成人精品一区在线播放69 | 久久少妇 | 精品人人爽 | 免费亚洲电影 | 综合网久久 | 少妇超碰在线 | 欧美成人高清 | 夜色资源站国产www在线视频 | www.夜夜爱 | 成人毛片一区 | 国产xxxx性hd极品 | 天天插狠狠插 | 成人在线黄色 | 亚洲国产精品成人女人久久 | 国产精品毛片一区二区 | 精品国产一区二区三区男人吃奶 | av网站手机在线观看 | 日日干狠狠操 | 国产在线观看99 | 亚洲少妇久久 | 国产免费又爽又刺激在线观看 | 国产婷婷一区二区 | 91av视频免费在线观看 | 中文在线免费一区三区 | 亚洲 精品在线视频 | 久久亚洲影院 | 手机看片国产日韩 | 国产在线视频资源 | 国产成人精品一区二区三区福利 | 97超碰资源总站 | 精品久久久国产 | 人人草天天草 | 一区二区三区四区在线免费观看 | 国产精品一区二区av影院萌芽 | 18久久久 | 中文字幕在线一区二区三区 | 国产精品免费人成网站 | 日韩丝袜在线观看 | 国产成人精品一区二区三区在线观看 | 国产精品婷婷午夜在线观看 | 99久久99久久免费精品蜜臀 | 久草在线手机观看 | 国产精品久久久久久久久久ktv | 福利视频一区二区 | 黄色性av| 在线a视频| www.777奇米 | 狠狠的日 | 亚洲高清国产视频 | 五月婷婷在线观看 | 91精品国产一区二区在线观看 | www.少妇| 日韩在线短视频 | 91最新视频在线观看 | 成人av网站在线播放 | 国产一级久久 | 又黄又刺激又爽的视频 | 天天摸天天操天天爽 | 婷婷新五月| 在线观看网站你懂的 | 国产剧情久久 | 成年人在线播放视频 | 国产一区二区免费 | 国产无区一区二区三麻豆 | 91精品国产92久久久久 | 久久久资源网 | 久久最新视频 | 九九热中文字幕 | 中文字幕永久免费 | 精品在线你懂的 | 亚洲视频一区二区三区在线观看 | 日日干天天爽 | 天堂中文在线播放 | 在线午夜av| 欧美一级性生活视频 | 亚洲少妇久久 | 中文字幕视频 | 三级视频日韩 | 亚洲国产mv| 国产福利免费看 | 97超碰在| 丁香色婷 | 精品字幕在线 | 人人澡人人添人人爽一区二区 | 一级免费看视频 | 久久大片网站 | 国产精品第一视频 |