日韩人妻在线中文字幕,99a16精品久久人人,蜜臀精品久久久久久久,大尺度av在线播放,久久精品天堂一区二区亚洲,亚洲一卡二卡三不卡,青娱乐级极品盛宴av,欧美精品人妻a v,老鸭窝免费网址在线观看

新聞建站cms系統(tǒng)、政府cms系統(tǒng)定制開發(fā)

廣州網(wǎng)站建設(shè)公司-閱速公司

asp.net新聞發(fā)布系統(tǒng)、報紙數(shù)字報系統(tǒng)方案
/
http://www.scschh.com/
廣州網(wǎng)站建設(shè)公司

網(wǎng)站技術(shù)

C#pdf解析(asp.net)

發(fā)布時間:2019/10/22 16:21:19  作者:Admin  閱讀:559  

廣告:

1. Introduction 介紹

This project allows you to read and parse PDF filse and display their internal structure. The PDF file specification document is available from Adobe. This project is based on “PDF Reference, Sixth Edition, Adobe Portable Document Format Version 1.7 November 2006”. It is an intimidating 1310 pages document. This article provides a concise overview of the specifications. The associated project defines C# classes for reading and parsing a PDF file. To test these classes the attached test program PdfFileAnalyzer allows you to read a PDF file analyzes it and display and save the result. The program breaks the PDF file into individual page descriptions, fonts, images and other objects.

Version 2.0 supports encrypted files. The software is divided into a PDF reader library and a test/demo program.

該項目使您可以閱讀和解析PDF文件,并顯示其內(nèi)部結(jié)構(gòu)。 PDF文件規(guī)范文檔可從Adobe獲得。 該項目基于``PDF參考,第六版,Adobe可移植文檔格式版本1.7 2006年11月''。 它是一個令人生畏的1310頁文件。 本文提供了規(guī)范的簡要概述。 關(guān)聯(lián)的項目定義了用于讀取和解析PDF文件的C#類。 要測試這些類,請使用隨附的測試程序PdfFileAnalyzer讀取PDF文件進行分析并顯示并保存結(jié)果。 該程序?qū)DF文件分為單獨的頁面描述,字體,圖像和其他對象。

2.0版支持加密文件。 該軟件分為PDF閱讀器庫和測試/演示程序。

2. Overview 總覽

The PDF file is structured to allow Adobe Acrobat to display and print each page on a variety of screens and printers. If you open the file with a binary editor you will see that most of the file is unreadable. The small sections that are readable look like:

PDF文件的結(jié)構(gòu)允許Adobe Acrobat在各種屏幕和打印機上顯示和打印每個頁面。 如果使用二進制編輯器打開文件,則將看到大部分文件都不可讀。 可讀的小部分如下所示:

1 0 obj
<</Lang(en-CA)/MarkInfo<</Marked true>>/Pages 2 0 R
/StructTreeRoot 10 0 R/Type/Catalog>>
endobj
2 0 obj
<</Count 1/Kids[4 0 R]/Type/Pages>>
endobj 
4 0 obj
<</Contents 5 0 R/Group <</CS/DeviceRGB /S/Transparency /Type/Group>>
/MediaBox[0 0 612 792] /Parent 2 0 R
/Resources <</Font <</F1 6 0 R /F2 8 0 R>>
/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>
/StructParents 0/Tabs/S/Type/Page>>
endobj
5 0 obj
<</Filter/FlateDecode/Length 2319>>
stream
. . .
endstream
endobj

The file is made of objects nested between “n 0 obj” and “endobj” keywords. The PDF term is indirect objects. The numbers before “obj” are the object number and the generation number. The generation number is always zero. Items enclosed within double angle brackets <<>> are dictionaries. Items enclosed between square brackets [] are arrays. Items starting with slash / are parameters names (i.e. /Pages). In the example above the first item “1 0 obj” is the document catalog or the root object. The catalog has in its dictionary an item “/Pages 2 0 R”. This is a reference to an object that defines tree of pages. In this case, object number 2 has a reference to one page “/Kids[4 0 R]”. This is a one page document. Object number 4 is the only page definition. The page size is 612 by 792 points. In other words 8.5” by 11” (1” is 72 points). The page uses two fonts F1 and F2. They are defined in objects 6 and 8. The page contents are being described in object number 5. Object number 5 has a stream that describes the painting of the page. In the example we have “. . .” as place holder for this description. If you tried to look at the PDF file with binary editor the stream will look as a long block of unreadable random numbers. The reason for it is that you are looking at compressed data. The stream is compressed with ZLib deflate method. This is specified in the dictionary by “/Filter /FlateDecode”. The compressed stream is 2319 bytes long. If you decompress the stream the first few items will look something like this:

該文件由嵌套在“ n 0 obj”和“ endobj”關(guān)鍵字之間的對象組成。 PDF術(shù)語是間接對象。 “ obj”之前的數(shù)字是對象編號和世代編號。世代數(shù)始終為零。包含在雙尖括號<< >>中的項目是詞典。方括號[]之間的項目是數(shù)組。以斜杠/開頭的項目是參數(shù)名稱(i.e. /Pages)。在上面的示例中,第一項“ 1 0 obj”是文檔目錄或根對象。目錄在其詞典中有一個項目“ / Pages 2 0 R”。這是對定義頁面樹的對象的引用。在這種情況下,對象編號2引用一頁“ / Kids [4 0 R]”。這是一頁文件。對象編號4是唯一的頁面定義。頁面大小為612 x 792點。換句話說,是8.5英寸乘11英寸(1英寸是72點)。該頁面使用兩種字體F1和F2。它們在對象6和8中定義。頁面內(nèi)容在對象5中描述。對象5具有描述頁面繪畫的流。在示例中,我們有“。 。 。”作為此說明的占位符。如果您嘗試使用二進制編輯器查看PDF文件,則流將看起來像一堆無法讀取的隨機數(shù)。原因是您正在查看壓縮數(shù)據(jù)。使用ZLib deflate方法壓縮流。這在字典中由“ / Filter / FlateDecode”指定。壓縮流的長度為2319個字節(jié)。如果解壓縮流,則前幾項將如下所示:

q
37.08 56.424 537.84 679.18 re
W* n
/P <</MCID 0>> BDC 0.753 g
36.6 465.43 537.96 24.84 re
f*
EMC  /P <</MCID 1/Lang (x-none)>> BDC BT
/F1 18 Tf
1 0 0 1 39.6 718.8 Tm
0 g
0 G
[(GRA)29(NOTECH LI)-3(MIT)-4(ED)] TJ
ET

This is a small sample of page description language. In this example “re” stands for rectangle. The four numbers before it are position and size “X Y Width Height”.

這是頁面描述語言的一小部分。 在此示例中,“ re”代表矩形。 前面的四個數(shù)字是位置和大小“ X Y寬度高度”。

This simplified example demonstrates the general idea behind PDF files. You start with a root object that point to hierarchy of pages. Each page defines resources such as fonts, images and contents streams. Contents streams are made of operators and arguments required to paint the pages. The PdfFileAnalyzer will produce an object summary file. This file contains all the objects without the streams. Each stream will be decoded and saved as a separate file. Page descriptions are saved as text files. Image streams are saved as .jpg or .bmp files. Font streams are saved as .ttf files. Other streams that are binary are saved as .bin files. Text streams are saved as .txt files. Page descriptions go through another parsing process that translates the cryptic one or two letters codes into a pseudo C# source. As an example the page description above is translated to:

這個簡化的示例演示了PDF文件背后的一般思想。 您從一個指向頁面層次結(jié)構(gòu)的根對象開始。 每個頁面定義諸如字體,圖像和內(nèi)容流之類的資源。 內(nèi)容流由繪制頁面所需的運算符和參數(shù)組成。 PdfFileAnalyzer將產(chǎn)生一個對象摘要文件。 該文件包含所有沒有流的對象。 每個流將被解碼并保存為單獨的文件。 頁面描述另存為文本文件。 圖像流另存為.jpg或.bmp文件。 字體流另存為.ttf文件。 其他二進制流將另存為.bin文件。 文本流另存為.txt文件。 頁面描述經(jīng)過另一個解析過程,該過程將一個或兩個神秘的字母代碼轉(zhuǎn)換為偽C#源。 例如,以上頁面描述被翻譯為:

q
37.08 56.424 537.84 679.18 re
W* n
/P <</MCID 0>> BDC 0.753 g
36.6 465.43 537.96 24.84 re
f*
EMC  /P <</MCID 1/Lang (x-none)>> BDC BT
/F1 18 Tf
1 0 0 1 39.6 718.8 Tm
0 g
0 G
[(GRA)29(NOTECH LI)-3(MIT)-4(ED)] TJ
ET

The remaining part of this article will go into PDF file structure and the parsing process in more details. The following sections will cover: object definitions, file structure, file parsing, File reading, and using the PdfFileAnalyzer program.

本文的其余部分將詳細介紹PDF文件結(jié)構(gòu)和解析過程。 以下各節(jié)將介紹:對象定義,文件結(jié)構(gòu),文件解析,文件讀取以及使用PdfFileAnalyzer程序。

3. Object Definitions 對象定義

PDF file is made of objects. Each PDF object has a corresponding class in the PdfFileAnalyzer project. All of these object classes are derived classes from PdfBase class. The source code for objects class definition is BasicObjects.cs. The exact PDF objects definition is available in chapter 3 of the Adobe's PDF specifications.

PDF文件由對象組成。 每個PDF對象在PdfFileAnalyzer項目中都有一個對應(yīng)的類。 所有這些對象類都是PdfBase類的派生類。 對象類定義的源代碼是BasicObjects.cs。 PDF對象的確切定義在Adobe PDF規(guī)范的第3章中提供。

3.1. Basic Objects 基本對象

  • Boolean object is implemented by PdfBoolean class. The PDF definition of Boolean is the same as C#.
  • Integer object is implemented by PdfInt class. The PDF definition is the same as Int32 in C#.
  • Real number object is implemented by PdfReal class. The PDF definition is the same as Single in C#.
  • String object is implemented by PdfStr class. The PDF definition is different than C#. String is made out of bytes not characters. It is enclosed in parenthesis (). The PdfFileAnalyzer saves the PDF string in a C# string including the parenthesis. PDF string is useful for ASCII encoding.
  • Hexadecimal string object is implemented by PdfHex class. It is a string of characters defined by two hex digits per byte and enclosed within angle brackets <>. The PdfFileAnalyzer saves the PDF hex string in C# string including the angle brackets. For PDF readers the string and the hex string objects serve the same purpose. The string (AB) is the equivalent to <4142>. PDF hex string is useful for any encoding.
  • Name object is implemented by PdfName class. Name object are made of forward slash followed by a sequence of characters. For example /Width. Named objects are used as parameters names. The PdfFileAnalyzer saves the name object in C# string including the leading /.
  • Null object is implemented by PdfNull class. The PDF definition of null is basically the same as in C#.
  • 布爾對象由PdfBoolean類實現(xiàn)。布爾值的PDF定義與C#相同。

     

    整數(shù)對象由PdfInt類實現(xiàn)。 PDF定義與C#中的Int32相同。

     

    實數(shù)對象由PdfReal類實現(xiàn)。 PDF的定義與C#中的Single相同。

     

    字符串對象由PdfStr類實現(xiàn)。 PDF定義與C#不同。字符串由字節(jié)而不是字符組成。它括在括號()中。 PdfFileAnalyzer將PDF字符串保存在包含括號的C#字符串中。 PDF字符串對于ASCII編碼很有用。

     

    十六進制字符串對象由PdfHex類實現(xiàn)。它是由每個字節(jié)兩個十六進制數(shù)字定義的字符串,并括在尖括號<>中。 PdfFileAnalyzer將PDF十六進制字符串保存在C#字符串中,包括尖括號。對于PDF閱讀器,字符串對象和十六進制字符串對象具有相同的用途。字符串(AB)等效于<4142>。 PDF十六進制字符串可用于任何編碼。

     

    名稱對象由PdfName類實現(xiàn)。名稱對象由正斜杠后跟一系列字符組成。例如/ Width。命名對象用作參數(shù)名稱。 PdfFileAnalyzer將名稱對象保存在C#字符串中,包括前導(dǎo)/。

     

    Null對象由PdfNull類實現(xiàn)。 PDF中null的定義基本上與C#中的相同。

3.2. Compound Objects 復(fù)合對象

  • Array object is implemented by PdfArray class. PDF array is a collection of objects enclosed within square brackets []. The objects of one array can be a mix of any type except stream. The PdfFileAnalyzer saves the objects in a C# array of PdfBase class. Since all objects are derived classes of PdfBase there is no problem saving a mix of object types within this array. When array object is converted to a string (ToString() method), the program adds a leading and trailing square brackets. Array can be empty. Example of array with six objects: [120 9.56 true null (string) <414243>].
  • Dictionary object is implemented by PdfDict class. PDF dictionary is a collection of key and value pairs enclosed within double angle brackets <<>>. Dictionary key is a name object and value is any object except stream. The PdfFileAnalyzer saves one key value pair in PdfPair class. The key is a C# string and the value is PdfBase. The PdfDict class has an array of PdfPair classes. Dictionary is accessed by key. Therefore pair ordering is not important. PdfFileAnalyzer sorts the pairs by key value. Example of dictionary with three pairs: <</CropBox [0 0 612 792] /Rotate 0 /Type /Page>>.
  • Stream object is implemented by PdfStream. Streams are used to hold page description language, images and fonts. PDF Stream is made of two parts a dictionary and a stream of bytes. The dictionary defines the stream parameters. One of the stream dictionary entries is /Filter. The PDF document defines 10 types of filters. PdfFileAnalyzer supports 4 filters. These 4 filters are the only ones I found to be in general use. The compression filter FlateDecode is the most used filter by current PDF writers. FlateDecode supports ZLib deflate decompression. The LZWDecode compression filter was used a few years ago. In order to read older PDF files, this program supports this filter. ASCII85Decode filter converting printable ASCII to binary. DCTDecode for JPEG image compression. The PdfFileAnalyzer implement decompression for the first three. The DCTDecode stream is saved as is with file extension .jpg. It is an image file that can be viewed.
  • Object stream was introduced in PDF 1.5. It is a stream that contains multiple indirect objects (described below). Stream objects described above are compressed one stream at a time. Object stream compresses all the included streams in one compressed section.
  • Cross-reference stream was introduced in PDF 1.5. It is a stream that contains cross-reference table described later in the article.
  • Inline image object is implemented by PdfInlineImage. It is a stream within a stream. Inline image is part of page description language. It is made of three operators BI-begin image, ID-image data and EI-end image. The area between BI and ID is an image dictionary and the area between ID and EI is the image data.
  • 數(shù)組對象由PdfArray類實現(xiàn)。 PDF數(shù)組是括在方括號[]中的對象的集合。一個數(shù)組的對象可以是除流以外的任何類型的混合。 PdfFileAnalyzer將對象保存在PdfBase類的C#數(shù)組中。由于所有對象都是PdfBase的派生類,因此在此數(shù)組中保存混合對象類型沒有問題。當數(shù)組對象轉(zhuǎn)換為字符串(ToString()方法)時,程序?qū)⑻砑忧皩?dǎo)和尾隨方括號。數(shù)組可以為空。具有六個對象的數(shù)組的示例:[120 9.56 true null(字符串)<414243>]。
  • 字典對象由PdfDict類實現(xiàn)。 PDF詞典是括在雙尖括號<< >>中的鍵和值對的集合。字典鍵是名稱對象,值是除流以外的任何對象。 PdfFileAnalyzer在PdfPair類中保存一對鍵值對。關(guān)鍵是一個C#字符串,值是PdfBase。 PdfDict類具有PdfPair類的數(shù)組。字典通過鍵訪問。因此,配對排序并不重要。 PdfFileAnalyzer按鍵值對對進行排序。具有三對字典的示例:<< / CropBox [0 0 612 792] / Rotate 0 / Type / Page >>。
  • 流對象由PdfStream實現(xiàn)。流用于保存頁面描述語言,圖像和字體。 PDF Stream由字典和字節(jié)流兩部分組成。字典定義了流參數(shù)。流字典條目之一是/ Filter。 PDF文檔定義了10種類型的過濾器。 PdfFileAnalyzer支持4個過濾器。這4個過濾器是我發(fā)現(xiàn)普遍使用的唯一過濾器。壓縮過濾器FlateDecode是當前PDF編寫者最常用的過濾器。 FlateDecode支持ZLib放氣解壓縮。 LZWDecode壓縮過濾器是在幾年前使用的。為了讀取較舊的PDF文件,該程序支持此過濾器。 ASCII85解碼過濾器,將可打印的ASCII轉(zhuǎn)換為二進制。 JPEG圖像壓縮的DCTDecode。前三個的PdfFileAnalyzer實現(xiàn)解壓縮。 DCTDecode流按原樣保存,文件擴展名為.jpg。這是一個可以查看的圖像文件。
  • 對象流是在PDF 1.5中引入的。它是包含多個間接對象的流(如下所述)。上述流對象一次壓縮一個流。對象流在一個壓縮段中壓縮所有包含的流。
  • 交叉引用流是在PDF 1.5中引入的。它是一個流,其中包含本文后面介紹的交叉引用表。
  • 內(nèi)嵌圖像對象由PdfInlineImage實現(xiàn)。它是流中的流。嵌入式圖像是頁面描述語言的一部分。它由三個運營商BI開頭圖像,ID圖像數(shù)據(jù)和EI結(jié)束圖像組成。 BI和ID之間的區(qū)域是圖像字典,ID和EI之間的區(qū)域是圖像數(shù)據(jù)。

3.3. Indirect Objects 間接對象

  • Indirect object is implemented by PdfIndirectObject. It is the main building block of a PDF document. An indirect object is any object encased between “n 0 obj” and “endobj”. Other objects can refer to indirect object by specifying “n 0 R”. The “n” is the object number. The “0” is the generation number. This program does not support generation number other than 0. The PDF specification allows for other numbers. The idea behind multi-generation is to allow PDF modifications by keeping the original file and appending changes.
  • Object reference is a way of referring to indirect objects. For example /Pages 2 0 R is a dictionary entry in the catalog object. It is a pointer to /Pages object. The pages object is indirect object number 2.
  • 間接對象由PdfIndirectObject實現(xiàn)。 它是PDF文檔的主要構(gòu)建塊。 間接對象是包含在“ n 0 obj”和“ endobj”之間的任何對象。 通過指定“ n 0 R”,其他對象可以引用間接對象。 “ n”是對象編號。 “ 0”是世代號。 該程序不支持0以外的世代號。PDF規(guī)范允許其他數(shù)字。 多代背后的想法是通過保留原始文件并附加更改來允許PDF修改。
  • 對象引用是引用間接對象的一種方式。 例如,/ Pages 2 0 R是目錄對象中的詞典條目。 它是指向/ Pages對象的指針。 pages對象是間接對象2。

3.4. Operators and keywords 運算符和關(guān)鍵字

  • Operators and keywords are not considered PDF objects. However, the PdfFileAnalyzer program has a PdfOp and a PdfKeyword classes that are derived classes of PdfBase. During the parsing process the parser creates a PdfOp or a PdfKeyword for each valid sequence of characters. Appendix A Operator Summary of the Adobe's PDF file specification lists all the operators. The list is made of 73 operators. Here are some examples of operators: BT-begin text object, G-set gray level for stroking operations, m-move to, re-rectangle and Tc-set character spacing. Examples of keywords: stream, obj, endobj, xref.
  • 運算符和關(guān)鍵字不被視為PDF對象。 但是,PdfFileAnalyzer程序具有PdfOp和PdfKeyword類,它們是PdfBase的派生類。 在解析過程中,解析器為每個有效字符序列創(chuàng)建一個PdfOp或PdfKeyword。 附錄A Adobe PDF文件規(guī)范的運算符摘要列出了所有運算符。 該列表由73個操作員組成。 以下是一些運算符的示例:BT開頭的文本對象,用于筆劃操作的G-set灰度級,m-move to,re-rectangular和Tc-set字符間距。 關(guān)鍵字示例:stream,obj,endobj,xref。

4. File Structure 檔案結(jié)構(gòu)

PDF file is made of four parts: header, body, cross-reference and trailer signature.

  • Header: The header is the file signature. It must be %PDF-1.x where x is 0 to 7.
  • Body: The body area contains all the indirect objects.
  • Cross-reference: The cross-reference is a table of file position pointers to all indirect objects. There are two types of cross reference tables. The original style made of ASCII characters. The new style is a stream within an indirect object. The information is encoded as binary numbers. At the end of the cross-reference table there is a trailer dictionary. A file can have more than one cross-reference area.
  • Trailer signature: The trailer signature is made of: keyword “startxref”, byte offset to the last cross-reference table, and end signature %%EOF. Please note: trailer dictionary is part of cross-reference area.
  • PDF文件由四部分組成:標題,正文,交叉引用和預(yù)告片簽名。
  • 標頭:標頭是文件簽名。 它必須是%PDF-1.x,其中x是0到7。
  • 主體:主體區(qū)域包含所有間接對象。
  • 交叉引用:交叉引用是指向所有間接對象的文件位置指針的表。 交叉引用表有兩種類型。 原始樣式由ASCII字符組成。 新樣式是間接對象中的流。 該信息被編碼為二進制數(shù)。 交叉引用表的末尾有一個預(yù)告字典。 一個文件可以具有多個交叉引用區(qū)域。
  • 預(yù)告片簽名:預(yù)告片簽名由以下內(nèi)容組成:關(guān)鍵字“ startxref”,到最后一個交叉引用表的字節(jié)偏移量和結(jié)束簽名%% EOF。 請注意:預(yù)告片字典是交叉引用區(qū)域的一部分。

5. File Parsing 文件解析

The PDF file is a sequence of bytes. Some of the bytes have special meaning.

White space is defined as: null, tab, line feed, form feed, carriage return and space.

Delimiters are defined as: (, ), <, >, [, ], {, }, /, %, and white space characters.

File parsing is done with PdfParser class. To start the parsing process the program sets file position to the area to be parsed. ParseNextItem() is the method that extract the next object.

The parser skips white space and comments. If next byte is “(“ the object is a string. If next byte is “[“ the object is an array. If next two bytes are “<<“ the object is a dictionary. If next byte is “<“ the object is a hex string. If next byte is “/“ the object is a name. If the next byte is none of the above the parser accumulates the following bytes until a delimiter is found. The delimiter is not part of the current token. The token can be integer, real number, operator or keyword. In the case of integer, the program will search further for object reference “n 0 R” or indirect object “n 0 obj” where n is the integer. The returned value from ParseNextItem() is the appropriate object as per section 4. Object Definitions. The object class is returned as PdfBase class.

In the case of array or dictionary, the program will perform recursive calling of the ParseNextItem() to parse the internal objects of the array or dictionary.

PDF文件是一個字節(jié)序列。一些字節(jié)具有特殊含義。

空格定義為:null,制表符,換行符,換頁符,回車符和空格。

分隔符定義為:(,),<,>,[,],{,},/,%和空格字符。

文件解析是通過PdfParser類完成的。為了開始解析過程,程序?qū)⑽募恢迷O(shè)置為要解析的區(qū)域。 ParseNextItem()是提取下一個對象的方法。

解析器跳過空白和注釋。如果下一個字節(jié)是“(”,則該對象是一個字符串。如果下一個字節(jié)是“ [”,則該對象是一個數(shù)組。如果后兩個字節(jié)是“ <<”,則該對象是字典。如果下一個字節(jié)是“ <”,則該對象是一個十六進制字符串。如果下一個字節(jié)是“ /”,則對象是一個名稱。如果下一個字節(jié)不是上述內(nèi)容,則解析器將累積以下字節(jié),直到找到分隔符為止。該分隔符不是當前標記的一部分。令牌可以是整數(shù),實數(shù),運算符或關(guān)鍵字。對于整數(shù),程序?qū)⑦M一步搜索對象引用“ n 0 R”或間接對象“ n 0 obj”,其中n是整數(shù)從ParseNextItem返回的值()是第4節(jié)中合適的對象。對象定義。對象類作為PdfBase類返回。

如果是數(shù)組或字典,則程序?qū)arseNextItem()進行遞歸調(diào)用以解析數(shù)組或字典的內(nèi)部對象。

6. File Reading 文件讀取

PdfReader class is the main class of PDF file analysis. The entry method is OpenPdfFile(String FileName, string Password = null). The program opens the PDF file for binary reading (one byte at a time).

File analysis starts with checking the header signature %PDF-1.x where x is 0 to 7 and the trailer end signature %%EOF. One would think that all PDF writers would put the header at position zero of the file and the trailer at the very end of the file. Unfortunately it is not the case. The program has to search for these two signatures at the two ends of the file. If the header signature is not at position zero, all indirect objects file position pointers have to be adjusted.

Just before the trailer signature there is a pointer to the start of the last cross-reference table.

The parser sets file position for cross-reference table. If the next object is “xref” keyword we have the original style cross reference. Otherwise, it is the new stream bases cross reference. The file can have more than one cross reference table. The file can have both the new and old style of tables. Each table is a list of object numbers and file position pointers to the starting point of indirect reference objects. For each active object the program creates a PdfIndirectObject object and saves it in ObjectArray. The object is empty except for object number and position. For original cross-reference table the position is relative to the file. For the stream type cross-reference the position is relative to a parent indirect object stream.

During this process if indirect object has generation number other than zero, program execution will be aborted. PdfFileAnalyzer does not support multi-generation.

At the end of the cross-reference table we have a trailer dictionary. In order to include this dictionary in the analysis we create a dummy indirect object with negative object number and save the dictionary in it.

The program looks for four particular entries in the trailer dictionary. If /Encrypt is found, the file will be decrypted. Next the program looks for /Root the object number of the catalog object. If /XRefStm entry exist, we have both types of cross reference. Finally if /Prev exist we have another cross-reference table to process.

After the cross-reference processing is done we have an array of all indirect objects. The available information at this stage of the process is object number and position. Next, the program loops through the array and reads and parses each indirect object. This process sets the object value. If the object is a stream, only the dictionary part is being parsed. The reason is that the stream length might not be known at this time. In addition to the object, the system sets object type and subtype members for dictionary and stream objects if these two values are available.

Next the program loops through all objects and process stream objects. Stream objects have object type equal to “/ObjStm”. The program reads the stream associated with these objects and breaks the streams to multiple indirect objects.

Next the program searches all dictionary objects and stream dictionary objects for object reference objects. The program is looking for key value pairs such as: “/name n 0 R”. If a pair like that is found, the program checks the object type. If the object type was not set during object parsing phase, the type is set to the /name value.

The next step is to read all streams that were not read before. The system reads the stream from the file. Each stream is decoded and saved to an appropriate file. The PdfFileAnalyzer supports the following filters: /FlateDecode, /LZWDecode, /ASCII85Decode and /DCTDecode. Text file will have extension .txt, binary files .bin, image files .jpg or .bmp, font files .ttf and cross-reference file .xref. The /FlateDecode is ZLib Deflate compression method.

The next step is to build page contents. The program follows the page tree starting from the root. Page objects are not stream objects. In other words, page description commands are not available directly within the page object. Page objects directories have a /Contents key value pair. If this pair is missing, the page is blank. The value of the contents entry can be a single reference or an array of references. The program will create a dummy contents stream for the page from the one or multiple contents streams. The page contents dummy streams are saved in PageObj_xx.txt and in PageSource_xx.txt. The former file is the actual page description contents for the page. The later file is the same information converted to pseudo C# source code. Section 2. Overview has examples of these two files.

The page contents stream is made of arguments and operators. For example rectangle will be four real numbers followed by re. Inline image is the exception to this rule. It is described above in Section 3. Object Definitions.

Finally, the program produces the object summary file ObjectSummary.txt. The file shows all indirect objects information without the streams.

PDF文件是一個字節(jié)序列。一些字節(jié)具有特殊含義。

空格定義為:null,制表符,換行符,換頁符,回車符和空格。

分隔符定義為:(,),<,>,[,],{,},/,%和空格字符。

文件解析是通過PdfParser類完成的。為了開始解析過程,程序?qū)⑽募恢迷O(shè)置為要解析的區(qū)域。 ParseNextItem()是提取下一個對象的方法。

解析器跳過空白和注釋。如果下一個字節(jié)是“(”,則該對象是一個字符串。如果下一個字節(jié)是“ [”,則該對象是一個數(shù)組。如果后兩個字節(jié)是“ <<”,則該對象是字典。如果下一個字節(jié)是“ <”,則該對象是一個十六進制字符串。如果下一個字節(jié)是“ /”,則對象是一個名稱。如果下一個字節(jié)不是上述內(nèi)容,則解析器將累積以下字節(jié),直到找到分隔符為止。該分隔符不是當前標記的一部分。令牌可以是整數(shù),實數(shù),運算符或關(guān)鍵字。對于整數(shù),程序?qū)⑦M一步搜索對象引用“ n 0 R”或間接對象“ n 0 obj”,其中n是整數(shù)從ParseNextItem返回的值()是第4節(jié)中合適的對象。對象定義。對象類作為PdfBase類返回。

如果是數(shù)組或字典,則程序?qū)arseNextItem()進行遞歸調(diào)用以解析數(shù)組或字典的內(nèi)部對象。

PDF文件是一個字節(jié)序列。一些字節(jié)具有特殊含義。

空格定義為:null,制表符,換行符,換頁符,回車符和空格。

分隔符定義為:(,),<,>,[,],{,},/,%和空格字符。

文件解析是通過PdfParser類完成的。為了開始解析過程,程序?qū)⑽募恢迷O(shè)置為要解析的區(qū)域。ParseNextItem()是提取下一個對象的方法。

如果下一個字節(jié)是“(”,則該對象是一個字符串。如果下一個字節(jié)是“ [”,則該對象是一個數(shù)組。如果后兩個字節(jié)是“ <<”,則該對象是字典。如果下一個字節(jié)是“ <”,則該對象是一個十六進制字符串。如果下一個字節(jié)是“ /”,則對象是一個名稱。如果下一個字節(jié)不是上述內(nèi)容,則解析器將累積以下字節(jié),直到找到分隔符為止。該分隔符不是當前標記的一部分。令牌可以是整數(shù),實數(shù),運算符或關(guān)鍵字。對于整體,程序?qū)⑦M一步搜索對象引用“ n 0 R”或間接對象“ n 0 obj”,其中n是整體從ParseNextItem返回的值()是第4節(jié)中合適的對象。對象定義。對象類作為PdfBase類返回。

如果是副本或字典,則程序?qū)arseNextItem()進行遞歸初始化以解析數(shù)組或字典的內(nèi)部對象。

6.文件讀取

PdfReader類是PDF文件分析的主要類。輸入方法為OpenPdfFile(String FileName,string Password = null)。該程序?qū)⒋蜷_PDF文件以進行二進制讀。ㄒ淮巫x取一個字節(jié))。

文件分析首先檢查標頭簽名%PDF-1.x,其中x為0到7,以及尾標結(jié)束簽名%% EOF。有人會認為所有PDF編寫者都會將標頭放在文件的零位置,而將標頭放在文件的末尾。不幸的是事實并非如此。該程序必須在文件的兩端搜索這兩個簽名。如果標題簽名不在零位置,則必須調(diào)整所有間接目標文件位置指針。

在預(yù)告片簽名之前,有一個指向最后一個交叉引用表開始的指針。

解析器設(shè)置交叉引用表的文件位置。如果下一個對象是“ xref”關(guān)鍵字,我們將使用原始樣式交叉引用。否則,它是新的流基礎(chǔ)交叉引用。該文件可以具有多個交叉引用表。該文件可以具有新樣式表和舊樣式表。每個表都是對象編號和指向間接引用對象起點的文件位置指針的列表。程序為每個活動對象創(chuàng)建一個PdfIndirectObject對象并將其保存在ObjectArray中。除對象編號和位置外,該對象為空。對于原始交叉引用表,位置是相對于文件的。對于流類型交叉引用,位置相對于父級間接對象流。

在此過程中,如果間接對象的世代號不為零,則程序執(zhí)行將中止。 PdfFileAnalyzer不支持多代。

在交叉引用表的末尾,我們有一個預(yù)告片字典。為了在分析中包括該詞典,我們創(chuàng)建了一個帶有負對象號的虛擬間接對象,并將該詞典保存在其中。

該程序在預(yù)告片字典中查找四個特定的條目。如果找到/ Encrypt,則文件將被解密。接下來,程序查找/ Root目錄對象的對象號。如果/ XRefStm條目存在,則我們有兩種類型的交叉引用。最后,如果/ Prev存在,我們還有另一個交叉引用表要處理。

交叉引用處理完成后,我們將得到所有間接對象的數(shù)組。在該過程的此階段可用的信息是對象編號和位置。接下來,程序循環(huán)遍歷數(shù)組,并讀取和解析每個間接對象。此過程設(shè)置對象值。如果對象是流,則僅解析字典部分。原因是此時流長度可能未知。除對象外,如果這兩個值可用,則系統(tǒng)還會為字典和流對象設(shè)置對象類型和子類型成員。

接下來,程序循環(huán)遍歷所有對象并處理流對象。流對象的對象類型等于“ / ObjStm”。程序讀取與這些對象關(guān)聯(lián)的流,并將流拆分為多個間接對象。

下一個

7. TestPdfFileAnalyzer Program

The PdfFileAnalyzer application was developed to test the PDF file parsing classes. If you want to test the executable program outside the development environment, create a PdfFileAnalyzer directory and copy the TestPdfFileAnalyzer.exe program and the PdfFileAnalyser.dll class library into this directory and run the program. If you run the project from the Visual C# development environment, make sure you define a working directory in the Debug tab of the project properties. This program was developed using Microsoft Visual C# 2019.

Start the program. The available options are: Open PDF File, and Recent Files.

On first program execution you must run Setup and define project directory. This directory will hold all sub-directories that will be created for each PDF file being analyzed.

Open button will display a standard file selection dialog. Navigate to the PDF file you want to analyze.

The PdfFileAnalyzer screen will change to object summary screen:

開發(fā)PdfFileAnalyzer應(yīng)用程序以測試PDF文件解析類。 如果要在開發(fā)環(huán)境之外測試可執(zhí)行程序,請創(chuàng)建一個PdfFileAnalyzer目錄,然后將TestPdfFileAnalyzer.exe程序和PdfFileAnalyser.dll類庫復(fù)制到該目錄中并運行該程序。 如果從Visual C#開發(fā)環(huán)境中運行項目,請確保在項目屬性的“調(diào)試”選項卡中定義了一個工作目錄。 該程序是使用Microsoft Visual C#2019開發(fā)的。

啟動程序。 可用選項包括:打開PDF文件和最近的文件。

在第一次執(zhí)行程序時,您必須運行安裝程序并定義項目目錄。 該目錄將包含將為每個要分析的PDF文件創(chuàng)建的所有子目錄。

打開按鈕將顯示一個標準文件選擇對話框。 導(dǎo)航到要分析的PDF文件。

PdfFileAnalyzer屏幕將更改為對象摘要屏幕:

Each row represents an indirect PDF object. Each column is: 每行代表一個間接PDF對象。 每列是

  • Object No. The indirect object number. In the case of trailer dictionary, the object number is a dummy number, it is negative but on the screen it shows as TRn.
  • Object. The type of object as per Section 4. Object Definitions.
  • Type. If the object is a dictionary or a stream, the type is the value of /Type dictionary pair. If the object is not a dictionary or the dictionary does not contain /Type, the displayed value comes from an indirect reference to this object.
  • Subtype. If the object is a dictionary or a stream and if the dictionary contains /Subtype entry it is displayed in this column.
  • Parent Object No. If the indirect object is part of object stream (see Section 3.2. Compound Objects), this column is the object number of the object stream.
  • Parent Index. If the indirect object is part of object stream, this number is the index number within the parent object stream.
  • Object Position. For indirect object files that are not object stream type; this is the object position within the PDF file. Indirect objects that are part of object stream; this is the position within the parent. Position is given in decimal and hexadecimal for programmers who would like to view the PDF file in binary editor.
  • Stream Position and Stream Length. The position and length of the stream. The position is relative to the file or the parent in the same way as object position above.
  • 對象編號。間接對象編號。對于尾部詞典,對象號是一個虛擬數(shù),它是負數(shù),但在屏幕上顯示為TRn。
  • 賓語。對象的類型,請參見第4節(jié)。對象定義。
  • 類型。如果對象是字典或流,則類型是/ Type字典對的值。如果該對象不是字典,或者該字典不包含/ Type,則顯示的值來自對該對象的間接引用。
  • 子類型。如果對象是字典或流,并且如果字典包含/ Subtype條目,則該對象顯示在此列中。
  • 父對象號。如果間接對象是對象流的一部分(請參見第3.2節(jié)“復(fù)合對象”),則此列是對象流的對象號。
  • 父級索引。如果間接對象是對象流的一部分,則此數(shù)字是父對象流內(nèi)的索引號。
  • 對象位置。對于不是對象流類型的間接對象文件;這是PDF文件中的對象位置。作為對象流一部分的間接對象;這是父母中的職位。對于要在二進制編輯器中查看PDF文件的程序員,位置以十進制和十六進制給出。
  • 流位置和流長度。流的位置和長度。該位置相對于文件或父級,與上面的對象位置相同。

To view the ObjectSummary.txt file, press the Summary button. Below is an example of the start of this file. 要查看ObjectSummary.txt文件,請按摘要按鈕。 下面是此文件開始的示例。

PDF file name: interactiveform_DATA.pdf

Trailer Dictionary
------------------
<</DecodeParms<</Columns 5/Predictor 12>>/Filter/FlateDecode/ID[<f681c578264452c4ab65398fdc7c0daa><b4
25aedbd5c8c544a84d960c3f738458>]/Index[3 1 7 1 18 1 100 5 108 2 116 1 123 1 126 1 128 1 134 1 136 1 173
11]/Info 18 0 R/Length 71/Prev 116/Root 20 0 R/Size 184/Type/XRef/W[1 3 1]>>

Indirect Objects
----------------
Object number: 1
Object Value Type: Stream
File Position: 67126 Hex: 10636
Stream Position: 67201 Hex: 10681
Stream Length: 695 Hex: 2B7
Object Type: /ObjStm
<</Filter/FlateDecode/First 22/Length 695/N 4/Type/ObjStm>>

Object number: 2
Object Value Type: Stream
File Position: 67915 Hex: 1094B
Stream Position: 67990 Hex: 10996
Stream Length: 354 Hex: 162
Object Type: /ObjStm
<</Filter/FlateDecode/First 33/Length 354/N 5/Type/ObjStm>>

Object number: 3
Object Value Type: Stream
File Position: 91134 Hex: 163FE
Stream Position: 91193 Hex: 16439
Stream Length: 21616 Hex: 5470
Object Type: /Metadata
Object Subtype: /XML
<</Length 21616/Subtype/XML/Type/Metadata>>

To view the details of an indirect object either select a row and press the View button or double click on a row. The object analysis screen will be displayed.

For all non stream objects, the first three buttons are disabled. The only information available is the object itself. You can view it in text or hexadecimal formats.

For stream objects the first button name is the object type. The first two buttons object type and Stream allow you to toggle between viewing the object or the stream. The Hex and Text allow you to view in binary or text format. If the stream is image, the image will be displayed rather than text. If the stream is a cross-reference stream, the text format shows four columns: (1) object number, (2) type (0-unused, 1-normal object, 2-stream object), (3) position for type 1 and parent for type 2 and (4) parent index number. If the stream is binary (i.e. font), it can be viewed in hexadecimal only.

Page object is treated as a stream object. The text displayed is the concatenation of all contents objects. In addition, the Source button allows you to view the page description language in what appears as C# code.

Images (.jpg and .bmp) can be rotated and scaled.

要查看間接對象的詳細信息,請選擇一行并按“查看”按鈕,或雙擊一行。將顯示對象分析屏幕。

對于所有非流對象,前三個按鈕均被禁用。唯一可用的信息是對象本身。您可以以文本或十六進制格式查看它。

對于流對象,第一個按鈕名稱是對象類型。前兩個按鈕對象類型和流允許您在查看對象或流之間切換。十六進制和文本允許您以二進制或文本格式查看。如果流是圖像,則將顯示圖像而不是文本。如果流是交叉引用流,則文本格式顯示四列:(1)對象編號,(2)類型(0未使用,1普通對象,2流對象),(3)類型1的位置類型2和(4)父級索引號的父級。如果流是二進制(即字體),則只能以十六進制形式查看。

頁面對象被視為流對象。顯示的文本是所有內(nèi)容對象的串聯(lián)。此外,“源代碼”按鈕允許您以C#代碼形式查看頁面描述語言。

圖像(.jpg和.bmp)可以旋轉(zhuǎn)和縮放。

Page indirect object example. 頁面間接對象示例。

Object number: 22
Object Value Type: Dictionary
File Position: 13810 Hex: 35F2
Object Type: /Page
<</Annots 97 0 R/ArtBox[0 0 612 792]/BleedBox[0 0 612 792]/Contents 81 0 R/CropBox[0 0 612 792]/MediaBox
[0 0 612 792]/Parent 16 0 R/Resources<</ColorSpace<</CS0 137 0 R>>/ExtGState<</GS0 138 0 R>>/Font<</C0_0
143 0 R/T1_0 146 0 R/T1_1 149 0 R/T1_2 151 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0<</Metadata 91 0 R>>>>/Shading
<</Sh0 153 0 R>>>>/Rotate 0/TrimBox[0 0 612 792]/Type/Page>>

Content stream example. 內(nèi)容流示例。

Object number: 22
Object Value Type: Dictionary
File Position: 13810 Hex: 35F2
Object Type: /Page
<</Annots 97 0 R/ArtBox[0 0 612 792]/BleedBox[0 0 612 792]/Contents 81 0 R/CropBox[0 0 612 792]/MediaBox
[0 0 612 792]/Parent 16 0 R/Resources<</ColorSpace<</CS0 137 0 R>>/ExtGState<</GS0 138 0 R>>/Font<</C0_0
143 0 R/T1_0 146 0 R/T1_1 149 0 R/T1_2 151 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0<</Metadata 91 0 R>>>>/Shading
<</Sh0 153 0 R>>>>/Rotate 0/TrimBox[0 0 612 792]/Type/Page>>

8. History 歷史

  • 2012/08/25: Version 1.0, Original revision.
  • 2013/04/10 Version 1.1. Support for world regions that define comma as decimal separator.
  • 2014/03/10 Version 1.2 Fix problem related to PDF files with Cross Reference Stream
  • 2015/04/02 Version 1.3 Remove error messages related to unimplemented stream compression filters.
  • 2019/06/14 Version 2.0 The software is divided into two projects, a library and a test program. Encrypted files are supported.
  • 2019/06/19 Version 2.1 Minor changes to sofware.
  • 2012/08/25:版本1.0,原始修訂。
  • 2013/04/10版本1.1。 支持將逗號定義為小數(shù)點分隔符的世界區(qū)域。
  • 2014/03/10版本1.2解決了與具有交叉引用流的PDF文件有關(guān)的問題
  • 2015/04/02版本1.3刪除與未實現(xiàn)的流壓縮過濾器有關(guān)的錯誤消息。
  • 2019/06/14版本2.0該軟件分為兩個項目,一個庫和一個測試程序。 支持加密文件。
  • 2019/06/19版本2.1對軟件的較小更改。

License 許可

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

本文以及所有相關(guān)的源代碼和文件均已獲得代碼項目開放許可(CPOL)的許可

廣告:

相關(guān)文章
C#
pdf解析
cms新聞系統(tǒng)購買咨詢
掃描關(guān)注 廣州閱速軟件科技有限公司
掃描關(guān)注 廣州閱速科技
在线观看视频区二区三区| 97超碰人人澡人人| 亚洲精品风间由美在线视频 | 丝袜美腿制服中文字幕| 久久精品蜜臀av一区二区| 青青草小视频手机在线观看| 国产免费啪啪视频播放| 性感美女诱惑黄色av| 亚洲天堂av加勒比| 亚洲精品又黄又爽无遮挡| 成人一区二区三区三州| 伊人网免费在线播放| 亚洲图片视频自拍一区| 日日夜夜精品视频免费天天| 日韩毛片久久久久久免费视频| 国产欧美一区在线观看免费| 日韩激情视频在线观看一区 | 亚洲国产成人久久精品不卡| 亚洲精品乱码久久久久蜜桃| 国产中文字幕日韩有码| 尹人久久久久久久久| 特级特黄一级特黄l| 激情五月综合成人亚洲婷婷| 国产男同gay亚洲男男片| 日韩在线观看你懂的| √天堂亚洲av国产av在线| 青青青最新视频观看国产| 亚洲人妻av一区二区三区| 999精品视频在线观看| 免费国产香蕉视频在线观看| 日本岛国片免费网站| 在线一区二区福利视频| 欧美专区 在线视频| 色中色av一区二区| 2020最新国产高清毛片| 色婷婷综合久久久久国产精品| 9l视频白拍9色9l视频| 亚洲精品第一卡2卡3卡4卡5卡| 成人午夜激情福利视频| 亚洲人和黑人的屁股眼交| 欧洲无尺码一区二区三区| 多人福利视频一区二区| 97超pen个人视频公开视| 华灯初上第二集中文字幕| 青青草99久久精品国产综合| 亚洲人妻av一区二区三区| 亚洲一区中文字幕在线观看| 91精品国产自产观看在线| 久久人人玩人妻潮喷内射人人| 一区视频在线播放免费| 欧美一区二区三区有限公司| 在线观看视频区二区三区| 精品一区二区成人观看| 日本伦一区二区三区| 国产啪精品视频网站免费尤物| 最近中文字幕在线资源3| 国语刺激对白勾搭视频在线观看| 亚洲淫美女中国日本| 免费在线看黄色的网站| 日本一级a一片vv| 国产又大又硬又黄视频| av在线一av在线| 免费国产综合视频在线看| 情趣丝袜老熟女av| 欧美激情亚洲精品一区| 欧美黄色xzxxxxx| ye321夜色资源网在线| 森泽佳奈久久久久亚洲av首页| 一区二区三区黄页网视频| 亚洲成人动漫免费在线观看| 亚洲欧美日韩视频电影| 中文字幕资源高清在线| 亚洲特级特级黄片免费看| 男女操逼屌逼鸡巴插四虎| 无遮挡3d黄肉动漫午夜| 97超碰人人澡人人| 骚逼棋牌室操骚逼已经受不了了| 97超碰大香蕉免费| 综合精品久久久久久8888| 天天日天天插天天艹| 亚洲 精品 综合 精品| 人人操人人干人人摸人人看| 成人在线观看蜜桃视频| 国产精品av久久久久久影院| 骚逼浪荡粉逼插死我了视频| 成人午夜激情福利视频| 国产精品综合最新地址| 日韩欧美亚洲爱爱第一页| 日本女人干逼的视频| 内射极品美女少妇久久精品| 免费的国产肛交视频网站在线观看| 成人中文字幕在线视频网站| 国产精品办公室av在线| 不卡免费成人日韩精品| 妈妈的朋友在线播放中文字幕| 性色av喷吹av蜜桃av| 男生操女生逼的免费视频| 国产无套内谢普通话对白| 四川一级毛片免费观看| 午夜短视频在线免费| 国产香线蕉在线手机视频| 18禁92精品久久久爽爽| 一区二区三区久久久毛片| 91精品一线二线三线| 老司机福利在线免费观看视频s| 人人澡人人妻人人爽| 91在线视频国产观看| 久久久久久久18岁精品| 9l视频自拍九色9l视频熟女| 欧美一级在线精品免费播放| 全免费A级毛片免费看无码下载| 日韩毛片久久久久久免费视频| 亚洲最大视频网站在线观看| 熟女五十老熟妇xxx| 人人操人人干人人摸人人看| 精品一区二区成人观看| 亚洲中文字幕在线观看高清| 美女张开大腿给男人桶 | 麻豆91传媒精品国产| 日韩毛片久久久久久免费视频| 美女丝袜啪啪一区二区三区| 宅男噜噜噜66网站高清| 熟女人妻精品一区二区三| 深爱激情人妻中文字幕| 青青久在线视频播放| 亚洲一区中文字幕麻豆| 日韩视频在线播放蜜桃| 特黄av一级aaa日本取| 亚洲欧美国产又粗又猛又爽又黄| 国产成人免费电影一区二区三区| 熟女五十老熟妇xxx| 91porn九色蝌蚪成人国产| 日本麻豆mv高清在线观看视频| 亚洲天堂一区www| 一区二区三区熟女中文字幕| 亚洲 制服 国产 丝袜| 国产又粗又硬又爽又猛又黄视频| 天天色天天射天天插| 久久精品国产400部免费看| 人妻mひかり人妻熟女| 国产精品办公室av在线 | 亚洲成人动漫免费在线观看| 天天弄天天干天天日| 国产精品乱码一二四川人| 色八戒国产一区二区三区| 亚洲视频在线观看综合网| 微拍福利一区二区刺激| 999精品免费观看视频| 蜜臀精品一区二区资源| 91免费在线观看福利| 丝袜美腿第一页av天堂| 日本2019中文字幕| 白天操天天操夜夜夜夜操| 亚洲欧洲成人在线观看| 亚洲欧洲天堂av在线| 99热免费在线观看精品| 日本xxxxxxxxx三级| 91成人在线观看喷潮| 制服丝袜 欧美在线| 亚洲在线观看免费高清导航| 美腿玉足一区二区三区视频| 中文字幕 极品 精品| 免费在线看黄色的网站| 538在线视频一区二区| 96自拍视频在线观看| 国产欧美日韩精品系列| 欧美亚洲另类自拍偷拍欧美激情| 最近视频在线播放免费观看| 中文字幕一区婷婷在线| 亚洲青青青青青青青青草| 精品国产精品国产99网站| 91免费版在线观看| 狠狠躁夜夜躁人人爽超碰白浆| 鸡吧叉入小穴视频在线观看| 免费看a级淫秽真实动作衫视频| 午夜性感成人视频区一区二| 少妇高潮一区二区三区在线播放| 老司机67194精品视频| 69国产盗摄一区二区三区五区| 北条麻妃在线中文字幕| 狂野av人人澡人人添| 国产成人愉拍精品久久| 成人午夜激情福利视频| 在线电影影院高清观看| 亚洲av午夜福利网站| 91丝袜一区二区三区四区| 亚洲中文字幕1区2区3区| 日本婷婷色中文字幕| 国内精品自产拍在线观看91| 午夜小视频网址在线观看| 天天日天天艹天天爽| 看亚洲欧洲在线视频| 99国产精品白浆热久久无码| 适合30岁女人的发色| 户外露出精品视频国产| 91九色在线精品一区二区| 国产av午夜在线观看| 永久免费单机版进销存软件| 黑人乱吗一区二区三区| 中文字幕人妻精品av| 粉嫩亚洲一区二区粉嫩av| 亚洲国产日韩欧美综合在线| 91在线观看国产日韩欧美| 亚洲蜜臀色欲AV一区二区三区 | 中文字幕乱码一区二区三区在线 | 亚洲特级特级黄片免费看| 日韩视频在线播放蜜桃| 真空瑜伽美女福利视频| 先锋av一区二区三区| 黄色片免费观看在线| 亚洲国产精品久久久久婷婷98 | 精品人妻av在线免费观看| 亚洲自拍校园春色一区| 国产精品久久久久久久白皙女| 亚洲特级特级黄片免费看| 亚洲自拍偷拍精品视频| 国产大陆露脸对白av| 亚洲精品又黄又爽无遮挡| 亚洲精选www大片| 91国产在线小视频| 午夜夜伦鲁鲁片一级| 男生鸡鸡插女生鸡鸡APP | 天天日,天天弄,天天搞| 97人妻在线超碰精品| 玖玖在线观看免费完整版| 国产免费午夜福利蜜芽无码| 精品一区,二区,三区视频| 懂色av粉嫩av蜜臀av| 国产av久久久久又爽又高潮| 李丽莎国产专区视频| 国产又粗又长在线看| 国产av一区二区有码| 激情五月天av在线观看| 国产精品自拍欧美日韩| 18免费在线观看视频| 国产av久久久久又爽又高潮| 天天摸天天操天天射| 97 在线免费视频| 黑人巨大精品欧美一区二区桃花岛| 久久二区三区免费视频| 99久久e免费热视烦| 人妻中文字幕在线免费毛片| 99久久国产一区二区三区| 亚洲成人大片av在线| 久久人妻av一区二区三区| 玩弄人妻性色av少妇| 午夜在线观看视频网站| 伊人亚洲第一综合在线| 亚洲图色中文字幕在线| 日本免费不卡一区二区三区| 极品美女露脸高潮在线观看国产| 性受XXXX黑人XYX蜜桃| 91精品人妻一二三区| 一区二区三区在线观看视频观看| 成人中文字幕视频在线观看| 18禁92精品久久久爽爽| 亚洲av优女天堂熟女| 床上啪啪啪激情视频| 日本福利在线免费观看| 国产不卡一区二区在线视频| 亚洲 国产 日韩精品| 亚洲欧美日韩中文字幕视频网站| 制服丝袜日韩另类欧美| 精品国产免费污污污污在线观看2| 男女操逼屌逼鸡巴插四虎| 国产精品国产精品av| 偷拍亚洲明星bbbbb撒尿| 真人性囗交69视频免费观看| 午夜电影福利1000| 国产又粗又猛又爽的视频免费| 亚洲国产精品中文字幕自拍| 蜜桃熟女一区二区三区| 一本到av不卡在线网址大全| 97一区二区免费视频| 国产九色91porny| 最新中文字幕在线观看| 久久综合视频五月天| 国产精选伦理自拍图片| 极品尤物一区二区三区漫画| 亚洲色大成网站www私| 骚逼让大鸡吧操视频| 在线观看免费99视频| 亚洲在线观看视频一区| 欧美 国产 综合 欧美| 丝袜碰肉一区二区三区| 国产精选伦理自拍图片 | 久久禁止观看一区二区| 国产网红福利视频在线观看| 国产原创演绎剧情有字幕的| 久久久久 一区二区三区| 午夜电影福利1000| 在线免费成人激情av| 日韩美腿丝袜二区三区| 国产一区视频一区欧美| 日本丰满少妇体内射精视频| 欧美一卡二卡三不卡在线| 免费观看成人草比电影| av天堂永久资源网av天堂中文| 久99久热re美利坚| 亚洲人妻av一区二区三区| 蜜桃臀后入在线视频| 午夜免费在线视频播放| 黄色大片手机在线观看| 日日夜夜av在线观看| 91精品国产乱码久久久久久蜜臀| 日本白嫩的18sex少妇hd| 人妻射精1区2区3区| 女生和男生黄色视频链接| 日韩另类av中文字幕人妻| 伦理网址资源在线观看| 日本福利看片成年网| 韩国美女一区二区三区| 人人躁日日躁狠狠躁av麻豆男| 亚洲av专区在线观看| 成年网站在线免费播放| 蜜桃熟女一区二区三区| 色欧美一区二区在线观看| 欧美无人区码卡二卡3卡4| 日日摸夜夜操的视频| 国产一区二区不卡高清更新 | 97一区二区免费视频| 欧美成人综合在线观看视频| 欧美男女三级插视频| 看看黄色录像中国片操逼| 美女让男人捅到爽免费网站| 成人中文字幕在线视频网站| 亚洲国产日韩中文字幕| 美女 福利 在线视频| 亚洲熟女国产一区二区三区| 伊人网免费在线播放| 国产精品久久久久白丝呻吟| 国产精品高潮呻吟av久久樱花| 精品毛片毛片毛片毛片久久| 肉大棒出出进进操逼视频| 九七久久久久人妻制服丝袜秀| 青青自拍视频在线观看| 最新免费在线免费视频 | 91在线观看国产日韩欧美| av网站高清在线观看| 欧美日韩精品在线一区二区三区 | 亚洲 欧美 日韩 丝袜| iga肾病三级有多严重| 亚洲日本欧美一区在线观看| 国产av大片免费看| 久久er热在这里只有精品66| 精品人妻少妇一区二区城中村| 床上啪啪啪激情视频| 91,视频在线观看| 日日操夜夜操天天操| 亚洲 自拍 偷拍 精品| 日本大尺度视频免费| 亚洲一区二区三区a级在线观看| 欧美人与性动交α欧美精品2| 日韩在线精品视频合集| 91porn九色蝌蚪成人国产| 日本精品一级精品天堂| 国产精品资源在线视频观看| 亚洲精品风间由美在线视频| 人妻人人做人碰人人爽| 成年人免费视频中文字幕日韩 | 黑丝骚逼勾引操逼喷水高潮| 亚洲av中文字字幕乱| 天天日天天射天天舔毛片看看唄| 丝袜人妻诱惑在线看| 亚洲妇女黄色高潮视频| 蜜桃熟女一区二区三区| 蜜桃臀的女朋友有多爽| 高清大黑鸡吧内射美女裸模批| x7x7x7视频av| 最新中文字幕男人的av在线| 992tv在线观看免费精品视频| 欧洲ZOOM人与ZOOM| 欧美无人区码卡二卡3卡4| 欧美激情亚洲精品一区| 黑人借宿人妻欲求不满| 亚洲香蕉av在线一区二区三区| 一木道av一区二区| 国内夫妻与黑人交换视频| 三级电影在线观看网站| 亚洲精久久久久久无码| 中文字幕久久久久人妻五十路| 丰满人妻被黑人猛烈进入免费 | 日韩AV有码无码一区二区三区| 狂蟒之灾1997在线观看| 91精品国产偷窥一区二区三区| 国产亚洲精品综合久久久 | 黄页网站免费版大全在线观看 | 美腿玉足一区二区三区视频| 美女啪啪骚气十足啊| 久久久久久有的能看| 55夜色66夜色精品视频| 蜜桃久久久亚洲精品成人av| 播放约丰满大屁股国产| 69国产盗摄一区二区三区五区| 中文字幕 人妻伦理网站| 中文字幕资源高清在线| 日本美女高清视频免费| 亚洲精品免费一区二区三|| 国产精品久久久久久久久免费看 | 免费无遮挡18禁网站| av网站高清在线观看| 小12萝裸体洗澡加自慰| 大声叫鸡巴太大了一级黄色视频| 国产大神精品在线观看| 丝袜碰肉一区二区三区| 在线免费观看啪啪啪啪啪啪啪av | 久久久精品日韩电影| 极品大尺度蜜桃社福利无圣光| 一区二区三区免费视频资源| 国产精品久久久久久久久免费看| 日本一级片免费看看| 亚洲激情av免费观看久久| 国产av色婷婷一区二区| 日韩有码中文字幕在线播放| 午夜福利中文字幕在线观看| 啪啪啪午夜免费网站| 韩日一区二区三区av| 青青青久热国产精品视频| 男人天堂在线观看视频| 91九色探花偷拍av| 狠狠人人澡人人爽人人妻| 亚洲av电影在线网| 大香蕉新版在线观看| 天天看天天射天天干| av在线观看 亚洲视频| 熟女视频五月婷婷五月天| 97干在线视频中文字幕| 呃呃呃啊啊啊啊疼免费视频| 伊人啊v 视频在线观看| 最新日本无不卡视频在线| 96亚洲国产福利精品| 综合精品久久久久久8888| 成人福利av午夜伦理| 精品久久久一区二区在线观看| 色哟哟哟视频在线观看| 97国产色吧在线视频| 在线成人激情自拍视频| 亚洲 精品 综合 精品| 青青青国产精品免费观看 | 国产激情视频在线观看| 国户精品久久久久久久久久久不卡 | 亚洲可以在线观看的网站| tushy一区二区三区在线观看| 91在线观看免费高清在线观看| 日本性少妇搡bbb| 国产九色91porny| 男女啪啪永久免费观看网站| 野花高清完整在线观看国产麻豆福| 亚洲一区二区三四区五区| 黑丝骚逼勾引操逼喷水高潮| 91免费在线观看福利| 91免费在线观看18| 我要看日韩黄色一级片| 青青青青青青青青青青青青青青草 | uuess一区二区三区| avhd一区二区三区| 免费在线看黄色的网址| 精品一区二区三区天猫视频| 午夜精品一区二区三区大全| 久久久久久久久66精品片| 狠狠操狠狠操狠狠舔| 久久综合中文字幕天海翼| 青青自拍刺激视频免费在线观看| 精品国产成人在线看| 18禁92精品久久久爽爽| 一二三四国产一区二区| 国产精品亚洲二线在线播放| 亚洲第一男人网av天堂| 欧美日韩精品一二三区激情在线 | 在线播放黄色av网| 亚洲 国产 日韩精品| 九九视频在线观看亚洲| 国产高清在线免费播放| 久久久久久久久久久鸭| 极品大尺度蜜桃社福利无圣光| 亚洲av电影免费在线观看| 亚洲 欧美 中文字幕 人妻| 一区二区三区久久精品在线| 亚洲高清av一区二区三区| 久久久久久久久久狠| 国产少妇视频在线播放| 久久er热在这里只有精品66| 欧美大香焦在线观看| av天堂亚洲天堂亚洲| 森泽佳奈久久久久亚洲av首页 | 色播五月深情五月激情五月 | 中文字幕人妻少妇aⅴ| 午夜在线观看视频网站| 李丽莎国产专区视频| 久久五十路熟女视频| 五月激情综合五月激情网| 999精品免费观看视频| 中文字幕亚洲乱码在线播放| 亚洲自拍校园春色一区| 亚洲视频在线观看综合网| 黄色床上免费在线观看| 熟妇熟女一区二区三区四区| 国产av大片免费看| 精品成人免费观看在线| 午夜性色福利在线观看| 最新中文字幕男人的av在线| 精品一区二区三区熟女av| 成年人免费观看视频中文字幕| 国产网红主播av在线观看| 亚洲人妻av一区二区三区| 欧美观看精品一区二区三区| 最新免费在线免费视频 | 啪啪啪免费视频 91| 欧美在线全部免费观看天堂网| 91精品一线二线三线| 国产一区二正操嫩逼视频| 成年网站在线免费播放| 人人躁日日躁狠狠躁av麻豆男| 欧美日本免费久久男人都是知道| 天天日天天爽天天爱天天舔| 久久综合视频五月天| 最近视频在线播放免费观看| 精品人妻av在线免费观看| 亚洲在线av中文字幕| 99久国产av精品国产网站| 他揉捏她两乳不停呻吟人妻| 欧美在线视频一二三下载| 日本好色一区二区三区| 国产精品a电影在线免费观看| 午夜爱情动作片在线观看| 麻豆91传媒精品国产| 国产91白丝精品在线| 男人天堂网手机在线| 国产大尺度福利激情97| 玩弄人妻少妇1~100| 伊人亚洲第一综合在线| 久久精品视频在线免费观看| 99精品视频在线视频观看| 欲海沉沦留洋人妻哀羞| 日韩一区二区三区精品蜜桃| 99热免费在线观看精品| 调教操美女逼视频在线观看| 国产精品无码免费不卡| 日本婷婷色中文字幕| 亚洲在线av中文字幕| 日韩男女在线视频播放| 日本白嫩的18sex少妇hd| 欧美日韩aa级一级片| 97超碰大香蕉免费| 好大好骚好长好爽好舒服视频| 中文字幕 极品 精品| 日韩中文字幕高潮内射| 亚洲国内日韩欧美在线| 天天插天天日天天干| 中文字幕人妻熟女人…| 激情五月综合成人亚洲婷婷| 亚洲va韩国va日本va在线| 小视频在线观看免费网站| 亚洲国产一区二区三区| 国产a级毛片一级毛片| 天天爱天天摸天天爽,天天操| 人妻熟女中文字幕一区二区| 丝袜美腿制服中文字幕| 欧美精品中文字幕在线播放| 亚洲精区二区三区四区麻豆| 97超碰人人澡人人| 日日噜夜夜爽精品一区| 亚洲一区二区精选蜜桃| 午夜福利中文字幕在线观看| 狠狠操狠狠操狠狠舔| 国产精品亚洲中文字幕在线| 小12萝裸体洗澡加自慰| 1168av福利av一区二区| 色色视频逼穴给操烂| 91麻豆精品成人一区二区免费| 中文字幕黄色在线观看| 大香蕉新版在线观看| 国产福利资源在线播放| av电影网站免费在线播放| 五月av在线资源网| 啪啪啪啪啪啪啪啪啪啪啪网址| 最新日韩av手机在线观看| 特大黑人巨交吊性xxx| 视频专区熟女人妻69xx| 精品一区二区三区天猫视频| 一区二区三区在线 在线播放 | 欧美日本免费久久男人都是知道| 性色av天美av蜜桃av| 宫部凉花熟女中文字幕| 超碰97国产女人让你操 | 中文字幕少妇版av| 适合30岁女人的发色| 91精品国产自产观看在线| 免费国产综合视频在线观看| 综合一区二区三区在线| 黄色一级片日老奶奶的逼| 国产精品资源在线网站| 青青自拍视频在线观看| 亚洲精品欧美精品日韩精品| √天堂亚洲av国产av在线| 无限国产资源好片2018| 欧美专区 中文熟女字幕| 老婆带闺蜜一起三p视频| 五月婷婷开心中文字幕36| 亚洲人妻av不卡片在线播放| 亚洲欧美中文字幕经典| 久久久久 一区二区三区| 99热免费在线观看精品| 久久久久99久久99| 免费的国产肛交视频网站在线观看| 亚洲精品成人av在线| 五月天网站国产剧情网站系列 | 丝袜美腿制服中文字幕| 看看黄色录像中国片操逼| sm在线观看一区二区| 美女丝袜啪啪一区二区三区| 日本女同性恋互舔视频| 国产精品日日干日日摸| 91亚洲免费在线观看| 亚洲精品国产av婷婷| 免费的国产肛交视频网站在线观看 | 国产精品国产精品黄色片| 国产精品av久久久久久影院| 精彩视频在线观看28区| av在线免费观看www| 爱在午夜降临前在线看| 青青青青青久草国产| 亚洲最大视频网站在线观看| 黄片av三级在线免费观看| 超碰97国产女人让你操| 91色在线观看视频网站| 9l视频白拍9色9l视频| 经典欧美一区二区三区| 在线一区二区福利视频| 久久久无码精品午夜| 超碰在线免费视频播放| 久久久sm调教视频| 最近视频在线播放免费观看| 李丽莎国产专区视频| 午夜免费在线视频播放| 免费国产综合视频在线看| 国产自拍小视频在线观看| 亚洲一区二区三区四区大香蕉| 给我美女护士三级黄色片| 99久久久久国产精品国产| 日本六十路熟女动画| 男女操逼屌逼鸡巴插四虎| 中文字幕激情小说第一页| 九九久久精品一区二区| 国产成人福利av一区二区| 欧美日韩亚洲动漫巨乳| 日本性感美女啪啪视频| 亚洲三级一区二区视频| 大战熟女丰满人妻av| 亚洲一区二区欧美日韩在线| 国产精品资源在线网站| 91精品一区二区三区| 黄页大全在线免费观看| 91色乱码一区二区三区竹菊| 国内福利写真片视频在线| 一区二区三区在线 在线播放| 国产成人免费电影一区二区三区| 东京热avtt导航| 亚洲精品乱码****蜜桃| 国产a∨天天免费观看美女18| 免费在线观看日本伦理片| 国产又粗又猛又爽又黄视频,| 狠狠躁夜夜躁人人爽超碰白浆| 91是什么网络热词| 97人妻在线超碰精品| 蜜臀久久久久久久久久| 久久二区三区免费视频| 天天操天天射天天日| 劲爆欧美一区二区三区| 狠狠操狠狠操狠狠舔| 岛国小视频一区二区三区| 日本一区久爱精品免费| 成人人妻在线观看视频网站| 啪啪啪啪啪啪啪啪啪啪啪网址| 中文字幕人妻精品av| 久久久久久久久久狠| 女孩阴部骚痒怎么治| 欧美亚洲另类自拍偷拍欧美激情| 97人妻在线超碰精品| 人人妻人人澡欧美一区二区| 99蜜桃在线观看免费视频网站| 中文字幕激情小说第一页| 熟女五十老熟妇xxx| 附近操逼视频免费看| 久久久我不卡综合色一本| 日韩岛国高清在线视频| 中文一区二区二区免费毛片| 国产高清在线免费播放| 高清大黑鸡吧内射美女裸模批| 劲爆欧美一区二区三区| 特色特黄特一级特黄大片| 日本熟女人妻第一页| 人妻熟女中文字幕一区二区| 亚洲欧洲精品在线免费看| 国产精品情侣啪啪自拍视频| 97视频免费观看在线| 在线免费观看黄色片的网站| yy6080午夜理论片在线看| 日本女同性恋少妇xxl| 中文字幕无线码一区| 女孩阴部骚痒怎么治| 亚州欧美日韩在线一区二区三区| 91p65国产在线观看| 蜜桃久久99精品久| 欧美激情在线播放一区| 中文字幕一区婷婷在线| 国产九色91porny| 欧美午夜免费福利电影| 日本成人中文在线看| 国产精品原创av个国产| 自拍偷拍 国产精品| 色播五月深情五月激情五月| 日日夜夜av在线观看| 91精品国产高清一区二区| 特大黑人巨交吊性xxx| 国产精品乱码一二四川人| 69国产盗摄一区二区三区五区| av黄色免费app| 天天操天天操天天操天天操天天操 | 在线电影影院高清观看| 香蕉免费一区二区三区| 91麻豆精品视频网站| 丰满一区二区三区视频在线播放 | 欧美一区二区三区嫩妇| 亚洲欧美日韩中文字幕视频网站 | 亚洲精品在线卡1卡2卡3| 国产乱人妻精品无法满| 97 在线免费视频| 日本中文字幕高清一区二区三区| 欧美亚洲人成网站在线观看刚交| 久草手机免费在线视频| 黄色片免费观看在线| 最近中文字幕免费视频| 欧美精品 亚洲视频| 在线手机视频你懂得| 国产成人福利av一区二区| 亚洲黄色成人网在线观看| 国产欧美中文日韩在线| nicoleaniston黑人| 天天摸天天插天天日| 日本aaaa级大片| 欧美在线小视频精品| 综合久久婷婷狠狠搞| 91厕所偷拍视频给我看| 狠狠人人澡人人爽人人妻| 91是什么网络热词| 国产精品综合免费视频| 日本mm高清在线观看免费视频| 白天操天天操夜夜夜夜操| 午夜在线不卡精品国产| 国内夫妻与黑人交换视频| 99精产国品一区二区三区| 国产精品情侣啪啪自拍视频| 美女体内射精一区二区三区| 骚逼让大鸡吧操视频| 亚洲激情 中文字幕 第二页| 污污污国产网站在线看| 96国产揄拍国产精品人妻| 国产又粗又猛又爽的视频免费| 精品人妻一区两区三区| a片在线观看免费视频不卡| 久久熟妇人妻一区二区| 91中文字幕国产在线视频| 精品人妻一区两区三区| aa2244在线观看| 色噜噜色狠狠天堂av| senima尼玛亚洲综合网站| 鸡吧叉入小穴视频在线观看| 黄色录像男人操女人的逼| 国产高潮精品呻吟av| 免费在线观看日本伦理片| 男生鸡鸡插女生鸡鸡APP| 国产精品亚洲视频在线| 国产精品又大又黄视频| 真人操逼视频网站免费欧美| 性色av天美av蜜桃av| 亚洲视频一区二区免费在线观看| 天天插天天舔天天射| 超碰97大香蕉521| av日韩美女久久久久久久久久| 在线 欧美 日韩 亚洲| 日本一级片免费看看| 中文字幕人妻熟女人…| 欧美亚洲另类自拍偷拍欧美激情| 华灯初上第二集中文字幕| 一级a一片在线免费看| 日本免费不卡一区二区三区| 国产在线观看91精品含羞草| 日本tv亚洲tv欧美tv| 欧美观看精品一区二区三区| 中文字幕一区婷婷在线| av天堂加勒比系列| 日本熟妇日本老熟妇| 美女 福利 在线视频| 人人妻人人澡欧美一区二区 | 亚洲精品成人av在线| 国产一区二区三区奇米久涩 | 日韩一区二区三区精品蜜桃| 亚洲手机免费在线观看视频| 人人妻人人澡欧美一区二区| 91porn九色蝌蚪成人国产| 欧美专区 在线视频| 亚洲九九视频在线观看| 特大黑人巨交吊性xxx| 字幕网av中文字幕| 日本性感美女啪啪视频| 在线观看 欧美激情| 亚洲欧美日韩中文字幕视频网站| 91p65国产在线观看| 久久国产美女av一区| 亚洲在线av中文字幕| 最新免费在线免费视频| 国产黄色大片免费播放网站| 性受XXXX黑人XYX蜜桃| 欧美一区二区三区午夜精品免费看| 青青青最新视频观看国产| 国产成人愉拍精品久久| 亚洲一区二区三区波多野在线观看 | 国产尤物A免费在线观看 | 亚洲天堂一区www| 国产一区二区不卡高清更新 | 2020最新国产高清毛片| 国产a∨天天免费观看美女18| 亚洲在线av中文字幕| 成人免费高清在线观看视频| 色人阁欧美在线视频| 中文字幕一区婷婷在线| 欧美亚洲另类自拍偷拍欧美激情| 午夜小视频网址在线观看| 天天操天天日天天鲁| 爱在午夜降临前在线看| 欧美日韩精品一二三区激情在线| 国产av久久久久又爽又高潮| 免费一区二区视频在线| 日韩AV有码无码一区二区三区 | 日韩在线观看你懂的| 妈妈的朋友在线播放中文字幕| 97福利在线视频观看| 免费国产综合视频在线观看 | 中文免费字幕av一区| 亚洲精品成人av在线| 人人澡人人妻人人爽| 亚洲激情在线小说图片| caopon中文字幕| 欧美人与禽zozo性| 天天玩天天干天天耍| 中文字幕av一区中文字幕天堂| 蜜桃臀av在线看黄| 天天操天天舔天天摸| av电影网站免费在线播放| 自拍偷拍 亚洲 中文| 国产 欧美 日韩 在线视频| 国产综合激情自拍视频| 在线观看日韩一区二区视频| 国产高清一区二区三区av| 九九视频在线观看亚洲| 国产精品资源在线网站| 附近操逼视频免费看| 人妻大香蕉欧美在线| 最新日韩av手机在线观看| 91厕所偷拍视频给我看| 青青青青青久草国产| 日本岛国片免费网站| 国产精品av久久久久久影院| 天天操天天舔夜夜爽| 友田真希中文在线av| 天天日天天日天天操| 97国产色吧在线视频| 日产免费的一级黄片| 亚洲 精品 综合 精品| 国产精品高清在线看| 女人被男人插j视频| 亚洲xxx午休国产熟女| 少妇高潮喷水久久久久久久久久久 | 日本高端清不卡视频| 国产精品办公室av在线| 黄页大全在线免费观看| 一级特黄女人性生活大片| 78m国产成人精品视频| 天天日,天天弄,天天搞| 亚洲成人av最大在线观看| 精品人妻av在线免费观看| 午夜啪啪美女视频播放| 日本一区二区三区不卡视频| 涩涩涩在线免费视频| 黄色视频无码免费看| 国内精品国内自产视频在线| 天天弄天天干天天日| 欧美大鸡吧操逼视频网站| 欧美午夜免费福利电影| 老白干精品580酒多少钱| 成人福利av午夜伦理| 无码国产成Av人片在线观看| 99久久e免费热视烦| 超碰97国产女人让你操| caopor视频99| 日本免费不卡一区二区三区| 亚洲图欧美综合偷拍| 人妻人人做人碰人人爽| 精品国产成人在线看| 国产日韩欧美亚洲中文国| 971在线观看视频午夜| 亚洲欧美日韩视频电影| 国产又粗又硬又爽又猛又黄视频| 久久上司侵犯部下人妻视频| 中文字幕第86亚洲另类| 午夜剧场免费在线观看视频| 中文字幕乱码一区二区三区在线 | 一级a性生活片久久无| 一木道av一区二区| 亚洲激情 中文字幕 第二页| 国产大神精品在线观看 | 午夜在线不卡精品国产| 国内成人精品2018免费看| 狠狠躁夜夜躁人人爽超碰白浆| 国产一区二区不卡高清更新 | 操 操 操 使劲操| uuess一区二区三区| 中文字幕无线码一区| 亚洲日本欧美一区在线观看| 男人天堂网手机在线| 亚欧美偷拍女厕盗摄在线视频| 人妻熟女中文字幕一区二区| 最新日韩av手机在线观看 | 一二三区精品福利视频| 1168av福利av一区二区| 欧美一区三区在线观看| 熟妇高潮一区二区三区在线观看| 青青草av在线视频| 99久久e免费热视烦| 真人性囗交69视频免费观看| 天天操天天干天天摸天天舔| 少妇高潮一二区三区| 日本女人性逛交视频| 亚洲精品资源在线播放| 91精品人妻一二三区| 日韩欧美亚洲爱爱第一页| 少妇高潮喷水久久久久久久久久久| 国产精品视频网站免费观看视频 | 亚洲图片视频自拍一区| 欧美亚洲另类自拍偷拍欧美激情| 青青自拍视频在线观看| 国产亚洲青草蜜芽香蕉精品| 蜜臀精品一区二区资源| 在线青青免费观看视频| 66精品一区二区三区| 97精产国品一二三产| 天天看天天射天天干| 中文字幕超级碰久久| 国产网红福利视频在线观看| 亚洲欧美国产激情诱惑| 久91人人槡人妻人人玩老熟女| 适合30岁女人的发色| 亚洲av电影在线网| 亚洲aaaa_毛片av| 色天天综合天天综合频道| 亚洲av专区在线观看| 狠狠干狠狠爱婷婷老师| 精品国产精品国产99网站| 狠狠操夜夜操天天操猛猛操| 成人免费高清在线观看视频| 免费在线看瑟瑟视频| 野花高清完整在线观看国产麻豆福| 国产成人福利av一区二区| 欧美一级在线精品免费播放| 欧美一区二区三区熟妇| 啪啪啪啪啪啪啪啪啪啪啪网址| 亚洲自拍校园春色一区| 亚洲avav天堂网| 免费国产综合视频在线看| 综合精品久久久久久8888| 亚洲精品6666久久久久| 在线免费观看黄色片的网站| 国产在线精品自拍视频| 中文字幕少妇版av| 91人妻精品国产麻豆国91| 亚洲 制服 国产 丝袜| 亚洲 制服 国产 丝袜| 日本丰满少妇体内射精视频| 尹人久久久久久久久| 久久二区三区免费视频| 91色porny视频| 久久热在线视频只有精品| 国内精品自产拍在线观看91| 日日干夜夜撸天天操| 劲爆欧美一区二区三区| 亚洲麻豆国产中文字幕| 成人小视频网站在线看| 99久久e免费热视烦| 中文字幕一区二区三区2020| 最近中文字幕在线资源3| 亚洲国内日韩欧美在线| 欧美一区三区在线观看| 自拍偷拍 亚洲 中文| 在线 欧美 日韩 亚洲| 夜夜嗨av一区二区| 国产激情视频网站一区| 国产色综合亚洲麻豆| 国产黄级三级三级三级| 成人黄色性生活一级片| 狠狠躁夜夜躁人人爽超碰白浆| 美女大黄啪啪啪淫语| 亚洲国产精品精华液999| 亚洲一区二区三四区五区| iga肾病三级有多严重| 人人澡人人妻人人爽| 国产网红福利视频在线观看| 日本av在线观看免费| 亚洲成人中文字幕第一页| 男人的天堂天天拍天天操| 野花高清完整在线观看国产麻豆福| 黑人巨大精品欧美一区二区桃花岛| 天堂av中文资源在线观看| 久艹婷婷在线观看视频| 91精品夜夜夜一区二区电影介绍| 中国久久久久_9999精品| 婷婷5月激情四射手| 亚洲精品成人777777| 爆操日操操日免费视频网 | 成年网站在线免费播放| 国产精品a电影在线免费观看| 狠狠操狠狠操狠狠舔| 青青自拍刺激视频免费在线观看 | 最新免费在线免费视频 | 一区二区三区在线观看视频观看| 精品91国自产在线看| 国产拍揄自揄精品视频| 伊人久久久AV老熟妇色| 美女视频不卡在线播放| 欧美日韩精品一二三区激情在线| 色四月婷婷色人妻在线| 欧美无人区码卡二卡3卡4| 深夜网址在线观看你懂的| 91精品国产乱码久久久久久蜜臀| 久久五十路熟女视频| 性受XXXX黑人XYX蜜桃| 逼逼逼逼逼逼免费视频日本| 午夜av亚洲av欧美av| 国产精品情侣啪啪自拍视频| 天天爽夜夜爽人人爽曰喷水| 午夜黄色高清在线播放| 成人呦呦在线免费看网站张婉莹 | 成年人免费观看视频中文字幕| 久草手机免费在线视频| 国产精品av久久久久久影院| 久久上司侵犯部下人妻视频| 免费超碰成人在线观看| 亚洲欧美一区二区蜜臀蜜桃| 免费黄色片在线免费观看| 极品尤物一区二区三区漫画| 森泽佳奈久久久久亚洲av首页| av电影网站免费在线播放| 女生和男生黄色视频链接| 国产精品av久久久久久影院| 国产不卡一区二区在线视频| 青青草av在线视频| 国产一区二正操嫩逼视频| 日韩美腿丝袜二区三区| 青青自拍刺激视频免费在线观看| 久久五十路熟女视频| 国产69精品久久又又| 最新成人中文字幕在线| 久艹婷婷在线观看视频| 亚洲图片欧美自拍偷拍| 黄色录像黄色片黄色片| 国产精品186在线观看在线播放| 色精品人妻一区二区三区| 五月激情综合五月激情网| 欧美高潮喷水精品一区| 青青草小视频手机在线观看| 深夜网址在线观看你懂的| 多人福利视频一区二区| av网站高清在线观看| 伊人色网在线视频观看| 操逼用力操我视频免费看| 麻豆91传媒精品国产| 不卡的av中文字幕| 亚洲精品6666久久久久| 天天日天天射天天舔毛片看看唄| 97干在线视频中文字幕| 91国产九色porny在线| 99久久机热精品双飞| 日本中文字幕高清一区二区三区| 成人免费高清在线观看视频| 国产最新女人高潮视频| 欧美一级在线精品免费播放| 久久久久久久久66精品片| 2020最新国产高清毛片| 亚洲一区二区视频观看| 18免费在线观看视频| 青青青青青青青青青操| 日本一级片免费看看| 欧美日韩一级二级综合| 亚洲精品情色在线播放| 日本91av在线免费观看| 一区二区三区在线观视频| 又大又色的国产av| 亚洲精品国产av婷婷| 黄色录像免费看中文字幕| 免费看a级淫秽真实动作衫视频| 91中文字幕综合在线| 呃呃呃啊啊啊啊疼免费视频| 激情五月综合成人亚洲婷婷| 老婆带闺蜜一起三p视频| 午夜av亚洲av欧美av| 亚洲第一av在线免费观看| 玩弄少妇人妻中文字幕| 制服丝袜 欧美在线| 无限国产资源好片2018| 天天艹天天日天天摸| 亚洲一区二区精品在线看| 欧美分别一区二区三区| 国产熟女乱伦一区二区三区| 99热免费在线观看精品| 91精品久久久久久久久久大网站| 91,视频在线观看| 亚洲精品国产av婷婷| 无遮挡3d黄肉动漫午夜| 亚洲人妻av一区二区三区| 欧美激情一级欧美精品 | 亚洲一区二区欧美日韩在线 | 国产亚洲一区二区亚洲| 99精产国品一区二区三区| 欧美性久久久久久久久久久| 天天插天天舔天天射| 日韩美腿丝袜二区三区| 亚洲欧美日韩中文字幕视频网站| 国产最新一区二区在线不卡| 中文字幕久久久一区| 一级a一片在线免费看| 久久人人爽人人爽人人片av不| 久久不免费视频1国产日韩一品道 欧美浓毛大老妇热乱爱 | 以家人之名电视剧全集免费观看| 熟女人妻人人舔人人干| 国产激情视频网站一区| 日本91av在线免费观看| 麻豆mv高清免费观看在线播放| 国产亚洲一区二区亚洲| 国产美女做a一级视频| 91麻豆精品成人一区二区免费| 91嫩草国产露脸精品国产| 日产免费的一级黄片| 亚洲综合久久中文字幕蜜色| 欧美sss视频在线| 日韩男女在线视频播放| a亚洲一区二区三区| 伊人啊v 视频在线观看| 老熟妇高潮一区二区三区国产馆| 久久久久久久久66精品片| 在线ay视频青青熟青青con| 国内精品国内自产视频在线| 99无码视频在线观看| 男人天堂网手机在线| 午夜av亚洲av欧美av| 欧美在线小视频精品| 美女让男人捅到爽免费网站| 亚洲图欧美综合偷拍| 亚洲av五月天在线| 亚洲av午夜福利网站| 欧美亚洲久久久久一区| 97视频免费观看在线| 青青草av在线视频| 999精品免费观看视频| 午夜性色福利在线观看| 国产女人的天堂在线人人看| 一级特黄女人性生活大片| 欧美做真爱视频一区二区| 一区二区三区精品观看| av 男人的天堂av| 宅男噜噜噜66网站高清| 日产极品一区二区三区| 亚洲青青青青青青青青草| 适合30岁女人的发色| 亚洲黄色成人网在线观看| 熟女人妻人人舔人人干| 国内自拍视频在线观看99| 青青青青青在线免费播放| 最新中文av在线天堂| 老司机精品视频在线看| 亚洲欧美一区二区蜜臀蜜桃| 综合久久婷婷狠狠搞| 91精品夜夜夜一区二区电影介绍| 有码中文亚洲精品97| 天天日天天射天天舔毛片看看唄| 国产精品久久久久久久白皙女 | 最近国产精品久久久久久| 欧洲ZOOM人与ZOOM| 亚洲一区二区精选蜜桃| 日本福利动漫在线播放| 91精品国产乱码久久久| 变态另类中文字幕在线视频| 一级特黄女人性生活大片| 亚洲激情av免费观看久久| 性受XXXX黑人XYX蜜桃| 国产精品186在线观看在线播放| 在线青青免费观看视频| 蜜臀av在线www| 小视频在线观看免费网站| 天天sese在线视频| 极品大尺度蜜桃社福利无圣光 | www久久久·com| 亚洲九九视频在线观看| 国产av大片免费看| 午夜精彩福利一区二区| 动漫精品在线观看视频| 亚洲成人av在线二区| 微拍福利一区二区刺激| 伊人伊人伊人伊人伊人| 亚洲一区二区三区a级在线观看| 55夜色66夜色亚洲精品视频| yellow91中文字幕在线| 国产又粗又硬又爽又猛又黄视频| 大屁股多毛熟女hdvidos| 天天操天天干天天摸天天舔| 91av精品在线视频| 乡下熟妇xxxx妇色黄| 最新版中文字幕av| 天天艹天天日天天摸| 日本福利在线免费观看| 69国产盗摄一区二区三区五区| 青青青青青在线免费播放| 日本xxxxxxxxx三级| 成人免费高清在线观看视频| 中文字幕av一区中文字幕天堂| 最近中文字幕在线资源3| 蜜臀av在线www| 日日夜夜精品天天综合| av在线观看 亚洲视频| 精品一区,二区,三区视频| 美女啪啪骚气十足啊| 最新日本无不卡视频在线| 91精品久久久久久久久久大网站| 亚洲淫美女中国日本| 青青青最新视频观看国产| 在线免费av小视频| 狠狠操夜夜操天天操猛猛操| 黑人乱吗一区二区三区| 李丽莎国产专区视频| 亚洲一区二区精选蜜桃| 国产高清一区二区三区av| 激情图区亚洲图片亚洲天堂| 啪啪啪午夜免费网站| 亚洲欧美国产激情诱惑| 视频专区熟女人妻69xx| 国产精品原创av个国产| 午夜美女福利视频久久| 国产嫩草视频在线播放| 欧美sss视频在线| 天天艹天天日天天摸| 96自拍视频在线观看| 老白干精品580酒多少钱| 在线免费成人激情av| 91精品国产综合久久熟女| 蜜桃臀的女朋友有多爽| 成人日韩精品在线视频| 鸡吧叉入小穴视频在线观看| 在线 欧美 日韩 亚洲| 99人妻免费精品二区| 91在线播放国产视频地址| 亚洲成a人片在线观看app| 鸡巴插逼好紧吸奶子妖精视频| 国产精品久久久久久久白皙女| 国产免费午夜福利蜜芽无码| 欧美 国产 综合 欧美| 中文字幕久久久一区| 中文字幕黄色在线观看| 91精品国产入口火影| 亚洲精品乱码国产精品不99| 91麻豆精品91综合久久久| 精品国产三级在线观看| 99国产精品白浆热久久无码| 香蕉免费一区二区三区| 女人被男人插j视频| 国产无内丝袜一区二区| 午夜在线观看视频1000集| 99久久久久国产精品国产| 在线观看的免费网站黄页| 欧美一区二区三区四区中文字幕| 不卡的av中文字幕| 日本性感美女啪啪视频| 欧美黑人性猛交xx| 3dhentai一区二区三区| 91麻豆成人在线视频| 96亚洲国产福利精品| 激情综合网激情综合网激情| 在线观看免费99视频| 鸡吧叉入小穴视频在线观看| 欧美美女激情在线观看| 人妻少妇高清一区二区| 东京热avtt导航| 丝袜亚洲高清另类丝袜| 日本免费不卡一区二区三区 | 亚洲青青青青青青青青草| 成人福利av午夜伦理| 欧洲无尺码一区二区三区| 久久久久久久久66精品片| 黄页大全在线免费观看| 性xxxx欧美老妇胖老太肥肥 | 在线ay视频青青熟青青con| 亚洲a∨综合色一区二区三区| 欧洲无尺码一区二区三区| 男女啪啪永久免费观看网站| 亚洲v欧美v日韩v中文字幕| 天天爱天天摸天天爽,天天操| 好深好爽用力成人游| 玩弄人妻性色av少妇| 国产精品久久久久老色批| 欧美 日韩 国产 一区二区三区 | 欧美无人区码卡二卡3卡4| 激情五月综合成人亚洲婷婷| 性色av噜噜一区二区三区| av在线观看 亚洲视频| 亚洲成人av最大在线观看| 极品美女露脸高潮在线观看国产| 欧美一卡二卡三不卡在线| 在线观看亚洲成人黄色| 在线观看视频一区二区三区| 国产精品亚洲二线在线播放| 91成人在线观看喷潮| 亚洲精品三区二区一区| 大屁股丰满人妻一区二区| 肉大棒出出进进操逼视频| 嗯啊舒服网站免费观看视频| 中文字幕a日本精品| 国产高清在线免费播放| 日本性少妇搡bbb| 强操美国老骚逼视频| 欧美精品综合久久久久久| 丝袜亚洲高清另类丝袜| 99国产精品白浆热久久无码| 日本2019中文字幕| 亚洲香蕉av在线一区二区三区| 午夜美女福利视频久久| 欧美男女三级插视频| 亚洲在线观看视频一区| 老司机午夜免费精品视频| 亚洲av优女天堂熟女| 日韩在线观看你懂的| 精品国产三级在线观看| 女人被男人插j视频| 有码在线观看完整版| 欧美午夜免费福利电影| 日本xxxxxxxxx三级| 亚洲一二区视频在线观看| 国产69精品久久又又| 最新福利 中文字幕| 久久久久久亚洲国产一区| 户外露出精品视频国产| 亚洲成人av最大在线观看| 亚洲精品欧美精品日韩精品| 78m国产成人精品视频| 久久久久久久久久久久高清| 精品哟哟哟国产在线不卡| 日本不卡免费一区二区三区视频| 麻豆传媒在线一级二级| 日本岛国片免费网站| 一本青草高清视频在线观看| 日韩美腿丝袜二区三区| 99国产精品白浆热久久无码| 乡村大屁股熟女视频| 日本福利动漫在线播放 | 69国产盗摄一区二区三区五区 | 亚洲国产丝袜美腿在线播放| 岳母的欲望电影在线观看| 国产亚洲午夜精品福利| 日本一区久爱精品免费| 亚洲精品6666久久久久| 日本tv亚洲tv欧美tv| 人国产一区二区三区精品| 婷婷色中文字幕综合在线| 全免费精品毛片小视苹| 国产在线精品自拍视频| 国产精品国产精品黄色片| 爆操内射双马尾女同学| 999精品免费观看视频| 国产熟女乱伦一区二区三区| 亚洲国产自拍精品视频| 男人的天堂天天拍天天操| 久久熟妇人妻一区二区| 国产精品呻吟久久人妻无吗| 香蕉免费一区二区三区| 久久婷婷综合缴情亚洲狠狠_| 涩涩涩在线免费视频| 亚洲精品乱码****蜜桃| 亚洲国内网友激情视频| 高清不卡日韩av在线| 狠狠操夜夜操天天操猛猛操 | 成人午夜激情福利视频| 新婚夜娇妻怀着孕灌满精视频| 播放约丰满大屁股国产| 骚逼棋牌室操骚逼已经受不了了| 日产极品一区二区三区| 玩弄人妻少妇1~100| 人人操人人干人人摸人人看| 鸡吧叉入小穴视频在线观看| 日本一区久爱精品免费| 久久上司侵犯部下人妻视频| 成年人尤物视频在线观看| 91麻豆精品久久久久久91| 又大又色的国产av| 99久久热这里只有精品| 人妻大香蕉欧美在线| 激情综合网激情综合网激情| 艳妇熟女一区二区三区精品| 国产精品亚洲综合专区片| 国产一区二区不卡高清更新 | 特大黑人巨交吊性xxx|