SWFObject使用手册

合集下载

SWFTools使用说明

SWFTools使用说明

SWFTools 是一组用来处理 Flash 的 swf 文件的工具包,包括:1. 合并工具 swfcombine2. 抽取工具 swfextract3. PDF/JPEG/PNG/AVI/TTF/WAV 到 SWF 的转换工具:pdf2swf, jpeg2swf, png2swf, avi2swf, font2swf, and wav2swf|4. 文本解析工具 swfstrings5. SWF 解析器 swfdump6. SWF 读写库 rfxswflib一个简单的将PDF文档转成SWF的用法:C:\SWFTools\pdf2swf Paper3.pdf -o Paper3.swf -f -T 9pdf2swf man pagepdf2swf -s parametersCurrent GitUsage: /usr/local/swft_git/bin/pdf2swf [-options] file.pdf -o file.swf-h , --help Print short help message and exit-V , --version Print version info and exit-o , --output file.swf Direct output to file.swf. If file.swf contains '%' (file%.swf), then each page goes to a seperate file.-p , --pages range Convert only pages in range with range e.g. 1-20 or 1,4,6,9-11 or-P , --password password Use password for deciphering the pdf.-v , --verbose Be verbose. Use more than one -v for greater effect. -z , --zlib Use Flash 6 (MX) zlib compression.-i , --ignore Allows pdf2swf to change the draw order of the pdf. This may make the generated-j , --jpegquality quality Set quality of embedded jpeg pictures to quality.0 is worst (small), 100 is best (big). (default:85)-s , --set param=value Set a SWF encoder specific parameter. See pdf2swf -s help for more information.-w , --samewindow When converting pdf hyperlinks, don't make the links open a new window.-t , --stop Insert a stop() command in each page.-T , --flashversion num Set Flash Version in the SWF header to num.-F , --fontdir directory Add directory to the font search path.-b , --defaultviewer Link a standard viewer to the swf file.-l , --defaultloader Link a standard preloader to the swf file which will be displayed while the main swf is loading.-B , --viewer filename Link viewer filename to the swf file.-L , --preloader filename Link preloader filename to the swf file.-q , --quiet Suppress normal messages. Use -qq to suppress warnings, also.-S , --shapes Don't use SWF Fonts, but store everything as shape. -f , --fonts Store full fonts in SWF. (Don't reduce to used characters).-G , --flatten Remove as many clip layers from file as possible. -I , --info Don't do actual conversion, just display a list of all pages in the PDF.-Q , --maxtime n Abort conversion after n seconds. Only available on Unix.-s Set a SWF encoder specificPDF Parameters:PDF device global parameters:fontdir=<dir> a directory with additional fontsfont=<filename> an additional font filenamepages=<range> the range of pages to convert (example: pages=1-100,210-) zoom=<dpi> the resultion (default: 72)languagedir=<dir> Add an xpdf language directorymultiply=<times> Render everything at <times> the resolutionpoly2bitmap Convert graphics to bitmapsbitmap Convert everything to bitmapsSWF Parameters:SWF layer options:jpegsubpixels=<pixels> resolution adjustment for jpeg images (same as jpegdpi, but in pixels)ppmsubpixels=<pixels resolution adjustment for lossless images (same as ppmdpi, but in pixels)subpixels=<pixels> shortcut for setting both jpegsubpixels and ppmsubpixelsdrawonlyshapes convert everything to shapes (currently broken) ignoredraworder allow to perform a few optimizations for creating smaller SWFslinksopennewwindow make links open a new browser windowlinktarget target window name of new linkslinkcolor=<color) color of links (format: RRGGBBAA)linknameurl Link buttons will be named like the URL they refer to (handy foriterating through links with actionscript)storeallcharacters don't reduce the fonts to used characters in the output fileenablezlib switch on zlib compression (also done if flashversion>=6)bboxvars store the bounding box of the SWF file in actionscript variablesdots Take care to handle dots correctlyreordertags=0/1 (default: 1) perform some tag optimizations internallinkfunction=<name> when the user clicks a internal link (to a different page) in the converted file, this actionscript function is calledexternallinkfunction=<name> when the user clicks an external link (e.g. http://www.foo.bar/) on the converted file, this actionscript function is called disable_polygon_conversion never convert strokes to polygons (will remove capstyles and joint styles)caplinewidth=<width> the minimum thichness a line needs to have so that capstyles become visible (and are converted)insertstop put an ActionScript "STOP" tag in every frame protect add a "protect" tag to the file, to prevent loading in the Flash editorflashversion=<version> the SWF fileversion (6)framerate=<fps> SWF framerateminlinewidth=<width> convert horizontal/vertical boxes smaller than this width to lines (0.05)simpleviewer Add next/previous buttons to the SWFanimate insert a showframe tag after each placeobject (animate draw order of PDF files)jpegquality=<quality> set compression quality of jpeg imagessplinequality=<value> Set the quality of spline convertion to value (0-100, default: 100).disablelinks Disable links.通过代码将PDF转换成SWF来说,现在比较常用的一种方式就是利用SWFTools工具中的pdf2swf(/)。

SWFObject-FlashObject详解

SWFObject-FlashObject详解

SWFObject-FlashObject详解(2007-09-29 10:39:00)转载▼SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块创建一个新的SWFObject实例,并且传入一下参数:var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey]);∙quality - 画面质量,默认为"high"。

∙xiRedirectUrl - 详见ExpressInstall相关∙redirectUrl - 没有安装相应版本的播放器后自动跳转的目标地址∙detectKey - 这是当忽略检测时,SWFObject将去url地址中查找的变量,默认值为“detectflash”细节SWFObject 的灵活性非常好。

您完全可以事先写好HTML的其他部分,最后再回过头来添加Flash内容。

这样可以确保在客户端没有Flash的情况下,用户不会一无所获;也可以确保针对搜索引擎,做了什么样的关键词优化。

您完全不用像以前那样担心客户端的各种状况SWFObject兼容当前各种主流浏览器,如:PC上的IE5/5.5/6, Netscape 7/8,Firefox, Mozilla, and Opera。

Mac上的IE5.2, Safari, Firefox, Netscape 6/7, Mozilla, and Opera 7.5+,各种浏览器的后续版本也会继续支持SWFObject检测Flash播放器版本从3开始到最新的版本号,而且也消灭了IE中“激活”的麻烦。

SWFObject可以方便地检查版本细节,例如我们需要v.6.0 r65 (or 6,0,65,0) 来处理SWF 资源,就可以添加如下代码:var so = new SWFObject("movie.swf", "mymovie", "200", "100", "6.0.65", "#336699");SWFObject的版本检测可以人工忽略。

文件上传利器SWFUpload使用指南

文件上传利器SWFUpload使用指南
post_params:{
"post_param_name_1" :"post_param_value_1",
"post_param_name_2" :"post_param_value_2",
"post_param_name_n" :"post_param_value_n"
},
use_query_string:false,
一、配置参数对象中的常用属性及说明
属性
类型
默认值
描述
upload_url
String
处理上传文件的服务器端页面的url地址,可以是绝对地址,也可以是相对地址,当为相对地址时相对的是当前代码所在的文档地址
preserve_relative_urls
Boolean
false
如果为false则SWFUpload会把swfupload.swf用到的相对地址转换为绝对地址,以达到更好的兼容性
file_upload_limit
Number
指定最多能上传多少个文件,当上传成功的文件数量达到了这个最大值后,就不能再上传文件了,也不能往上传队列里添加文件了。把该属性设为0时表示不限制文件的上传数量。
file_queue_limit
Number
指定文件上传队列里最多能同时存放多少个文件。当超过了这个数目后只有当队列里有文件上传成功、上传出错或被取消上传后,等同数量的其他文件才可以被添加进来。当file_upload_limit的数值或者剩余的能上传的文件数量小于file_queue_limit时,则取那个更小的值
...等等
我们看到要实现一个swfupload上传功能很简单,就是实例化一个swfupload对象。但繁琐的地方就在于实例化实要用到的参数配置对象,以及各种事件的发生时机以和提供的参数。所以重点来了。下面几个表格对开发中要用到的东西列举了出来,虽然已经蛮多了,但并不是swfupload的全部,我列出来的只是常用的。要查看完整的文档,请到swfupload官网上查询。

SWFObject中文详细说明

SWFObject中文详细说明

SWFObject: 基于Javascript的Flash 媒体版本检测与嵌入模块新功能详细的可以在SWFObject 1.5 blog post这里找到。

实现原理[对于急切需要下载的用户点击这里直接观看JS代码]SWFObject的使用是非常简单的,只需要包含swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入Flash媒体资源了。

下面是一个最简单的范例:<script type="text/javascript" src="swfobject.js"></script><div id="flashcontent">This text is replaced by the Flash movie.</div><script type="text/javascript">var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");so.write("flashcontent");</script>让我们看看这些代码是如何工作的<div id="flashcontent">[...]</div>首先,我们要为SWF资源预留一个HTML结点。

这个HTML结点内的所有内容都会在客户端被Flash资源替换,当客户端没有安装Flash播放器的时候,这些内容会显示出来。

这一特色在SEO以及对用户体验方面非常有必要。

var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey]);创建一个新的SWFObject实例,并且传入一下参数:∙swf - SWF文件路径∙id - 您为这个SWF文件分配的id值,它将用于给embed与object标签设定name 属性,以便于可以支持swliveconnect的功能,如动态传入变量∙width - 宽度∙height - 高度∙version - FlashPlayer需要的版本号,它可以详细到 '主版本号.小版本号.细节',例如:"6.0.65"。

Flash Builder操作指南

Flash Builder操作指南

关于Flash Builder项目Flash Builder将构成应用程序的资源(文件夹和文件)组合到一个容器中,我们将其称为项目。

项目包含一组属性,这些属性控制应用程序的构建方式、构建的应用程序所在的位置、调试的处理方式以及该项目于工作空间中其他项目的关系。

要管理项目,可以使用“包资源管理器”视图来添加、编辑和删除资源。

还可以关闭工作空间中的项目、导入资源以及链接外部资源。

Flex项目使用Flex项目可以构建基于Flex框架的Web应用程序,也可以构建基于Flex框架的桌面应用程序。

Web应用程序在Adobe Flash Player中运行,而桌面应用程序在Adobe AIR 中运行。

创建项目时,请指定项目是针对Web应用程序,还是针对桌面应用程序。

Flex项目包含一组属性,这些属性可控制应用程序的构建方式、已构建的应用程序所在的位置、调试的处理方式以及该项目与工作空间中其它项目之间的关系。

Flex项目包含默认的MXML应用程序文件。

项目中的其它MXML文件也可以是应用程序文件。

创建Flex 项目使用以下过程可以创建您的基本Web 应用程序或桌面应用程序。

1.选择“文件”>“新建”>“F lex 项目”。

2.输入项目名称和位置。

默认位置为当前的工作空间。

3.对于应用程序类型,选择“Web”或“桌面”。

4.使用默认的Flex SDK,或浏览到另一安装的SDK。

单击“下一步”。

5.(可选)指定“服务器设置”。

6.指定“输出文件夹”。

如果未指定应用程序服务器,则位置位于您的项目文件夹内。

如果指定了应用程序服务器,输出服务器位于项目文件夹之外。

通常,将输出文件夹与服务文件放在一起。

7.单击“完成”,或者单击“下一步”以指定其它配置选项。

8.(可选)指定构建路径和其它配置选项。

9.单击“完成”。

Flex 库项目使用Flex库项目可以构建可在应用程序之间共享或分发给其他开发人员的自定义代码库。

使用object和embed_文档

使用object和embed_文档

使用object 和embed 标记要在Web 浏览器中显示Flash SWF 文件,HTML 文档必须使用具有正确参数的object 和 embed标记。

对于object,其中的四个设置(height、width、classid和codebase)是出现在object标记内的属性;所有其他设置都是出现在单独的名为param标记内的参数。

例如:<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100" height="100"codebase="/flash7/cabs/swflash.cab#version=7,0,0,0"><param name="movie" value="moviename.swf"><param name="play" value="true"><param name="loop" value="true"><param name="quality" value="high"></object>对于embed标记,所有设置(如height、width、quality和loop)都是出现在开始embed标记的两个尖括号之间的属性。

例如:<embed src="moviename.swf" width="100" height="100" play="true"loop="true" quality="high"pluginspage="/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>若要一起使用这两种标记,请将embed标记正好放在结束object标记的前面,如下所示:<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100"height="100" codebase="/flash7/cabs/swflash.cab#version=6,0,0,0"><param name="movie" value="moviename.swf"><param name="play" value="true"><param name="loop" value="true"><param name="quality" value="high"><embed src="moviename.swf" width="100" height="100" play="true?loop="true" quality="high"pluginspage="/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>注意:如果既使用object标记也使用embed标记,则对每个属性或参数都要使用相同的值以确保能在各种浏览器上进行一致的回放。

SWF文件使用指南

SWF文件使用指南

SWF文件使用指南
1.制作SWF文件的目的
为了实现课程共享,便于课程平台使用者能在IE下直接的浏览PPT课件,特制作SWF文件的课件,该课件在PPT下进行封装,保持了PPT的所有特性。

2.基本功能
该SWF文件支持PPT相同的操作,如鼠标左键点击页面中任何部分或回车键都能实现翻页功能。

3.扩展功能
除了通过以上的操作实现翻页功能外,该SWF文件还能实现如下功能:
3.1主页面
点击您要的资源就可以看到以下的界面
3.2导航条
○1进度导航条
表示快速到达上一页面;
表示播放本页;
表示快速达到下一页
○2快速浏览定位按钮
左键点击
将弹出当前页面前后的页面缩略图,选择需要页面,可以快速达到该页面。

再按该按钮可以退出页面缩略图。

○3全屏幕浏览按钮
左键点击
将实现全屏幕浏览该文件,按ESC键可退出全屏幕浏览状态。

再按该按钮也可以退出全屏幕浏览状态。

SWFObject 2.0官方文档

SWFObject 2.0官方文档

主要内容:∙ 1 . 什么是SWFObject 2.0?∙ 2 . 为什么你应该使用SWFObject 2.0?∙ 3 . 为什么SWFObject 2.0使用JavaScript?∙ 4 . 我们应该使用静态发表还是动态发表的方法?∙ 5 . 怎样用SWFObject 2.0的静态发表方法来嵌入Flash内容o5-1 . 第一步:用符合标准的标签同时嵌入Flash内容和替换内容o5-2 . 第二步:在HTML的head标签中包括SWFObject的JavaScript 类库o5-3 . 第三步:用SWFObject类库注册你的Flash内容并告诉SWFObject 怎么样处理这些内容∙ 6 . 怎样用SWFObject 2.0的动态发表方法来嵌入Flash内容?o6-1 . 第一步:用符合标准的标签创建替换内容o6-2 . 第二步:在HTML页面的head标签中包括SWFObject JavaScript 类库o6-3 . 第三步:用JavaScript嵌入你的SWF∙7 . 从SWFObject 1.5迁移到SWFObject 2.0的注意事项∙8 . 从UFO迁移到SWFObject v2.0的注意事项∙9 . SWFObject支持MIME类型application/xhtml+xml吗?∙10 . 评论政策1 . 什么是SWFObject 2.0?SWFObject 2.0:▪提供两种优化的嵌入Flash Player的方法:一种基于标签的方法和一种依赖于JavaScript的方法。

▪提供一套JavaScript API,目的是提供一套完整的工具来嵌入SWF文件和获得Flash Player的相关信息。

[ /p/swfobject/wiki/SWFObject_2_0_api_javascript_dev ]▪只利用一个很小的JavaScript文件(size: 8.7Kb, GZIPed: 3.4Kb)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SWFObject使用文档为什么你应该使用SWFObject?一篇A List Apart上的文章Flash Embedding Cage Match描述了SWFObject v2.0背后的基本原理,以及为什么它比其他可用的Flash嵌入方式更好。

怎样使用SWFObject?SWFObject提供了两种嵌入Flash内容的方法:1.用符合标准的标签来嵌入Flash内容和替换内容(译者注:替换内容指Flash插件没有安装时需要显示的内容),并且用JavaScript来解决使用标签嵌入时出现的一些问题(这种方法也被称之为静态发表(static publishing))。

2.使用标准的标签插入替换内容,并用unobtrusive(译者注:这个词的翻译争议比较大,暂且不译,可以理解为低调的、不唐突的)的 JavaScript 来嵌入Flash内容(与以前版本的SWFObject以及UFO很相似,这种方法也被称之为动态发表(dynamic publishing))。

与第二种方法相比,第一种方法的优势在于:1.能促进符合标准标签的创作。

(The actual authoring of standardscompliant markup is promoted.)2.插入Flash内容的机制不再依赖于JavaScript,所以这种方法适当的“降级”了。

o如果你安装了Flash插件,但是JavaScript被禁用了或者浏览器并不支持JavaScript,你仍然能够看到你的Flash内容。

o Flash将能够在那些对JavaScript支持较弱的设备上运行,例如Sony PSP。

o像RSS阅读器这样的自动化的工具能够读取Flash内容。

与第一种方法相比,第二种方法的优势在于:1.更容易被编写和维护,因为它显得更简洁,没有包含多余的代码。

2.避免了通过“点击激活”的机制来激活Internet Explorer 6+和Opera 9+中的Flash内容。

怎样用符合标准的标签嵌入Flash内容并且用SWFFix来解决出现的问题(第一种嵌入方法)第一步:用符合标准的标签同时嵌入Flash内容和替换内容SWFObject的基本标签使用了嵌套object标签的方法(带有专用于Internet Explorer的条件注释)[ /articles/flashembedcagematch/]来保证仅通过标签实现最优化的跨浏览器支持,同时使其符合标准,并且支持替换内容[ /testsuite/ ]:view sourceprint?01.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""/TR/xhtml1/DTD/xhtml1-strict.dtd">02.<html xmlns="/1999/xhtml" lang="en" xml:lang="en">03. <head>04. <title>SWFObject v2.0 - step 1</title>05. <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />06. </head>07. <body>08. <div>09.10. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="420">11. <param name="movie" value="myContent.swf" />12. <!--[if !IE]>-->13. <object type="application/x-shockwave-flash"data="myContent.swf" width="780" height="420">14. <!--<![endif]-->15. <p>Alternative content</p>16. <!--[if !IE]>-->17. </object>18. <!--<![endif]-->19. </object>20.21. </div>22. </body>23.</html>注意:嵌套object标签的方法要求两次定义object标签(外层的object为Internet Explorer定义,内层的object为其他浏览器定义),所以你也需要两次定义你的object属性(attributes)和嵌套的param元素。

必须的属性(attributes):classid(只需为外层object元素定义,值总是等于“cl sid:D27CDB6E-AE6D-11cf-96B8-444553540000”)∙type(只需为内层object元素定义,值总是等于“application/x-shockwave-flash”)∙data(只需为内层object元素定义,指定SWF文件的URL)∙width(内外层object都需要定义,指定这个SWF的宽)∙height(内外层object都需要定义,指定这个SWF的高)必须的param元素:∙movie(只需为外层object元素定义,指定SWF文件的URL)注意:我们建议不使用codebase属性(attributes)来指向Adobe服务器上的Flash插件安装地址,因为它违背了只将访问限制在当前文档域的规范。

我们推荐使用带有精巧提示信息的替换内容,这样用户将获得更好的Flash插件下载体验。

怎样使用HTML来配置你的Flash内容?你可以为你的object元素添加下面这些常用的可选属性(attributes)[ /tags/tag_object.asp ]:∙id∙name∙class∙align你可以使用下面这些专用于Flash的可选param元素[ /cfusion/knowledgebase/index.cfm?id=tn_12701 ]:∙play∙loop∙menu∙quality∙scale∙salign∙wmode∙bgcolor∙base∙swliveconnect∙flashvars∙devicefont[ /cfusion/knowledgebase/index.cfm?id=tn_13331 ] ∙allowscriptaccess[ /cfusion/knowledgebase/index.cfm?id=tn_16494 ] ∙seamlesstabbing[ /support/documentation/en/flashplayer/7/releasenotes.html ]∙allowfullscreen[ /devnet/flashplayer/articles/full_screen_mode.html ] ∙allownetworking[ /flash/9.0/main/00001079.html ]为什么你应该使用替换内容(alternative content)?object元素允许你将替换内容嵌套在其中,如果Flash插件没有安装或者不被支持那么这些替换内容就会被显示出来。

由于这些替换内容能被搜索引擎很好的识别,这使它成为一个创建对搜索引擎友好的网页内容的好工具。

总之,当你想创建一个能够让不使用插件的用户[ /devnet/flash/articles/progressive_enhancement_03.html]也可以访问的网页内容,创建一个对搜索引擎友好[ /devnet/flash/articles/progressive_enhancement_04.html]的网页内容,或者告诉访问者他们能获得更好的Flash插件下载体验,你就应该使用替换内容。

使用嵌套object的方法有哪些缺点?当你仔细观察这个标签方法对跨浏览器的支持时,你会发现它有下面一些不足之处:1.Safari 1.2.2或者更低的版本将忽略所有的嵌套param元素。

2.Windows XP SP2+上的Internet Explorer 6+或者Opera 9+会包括一个“点击激活”的机制。

3.老版本的Flash Player有一定的风险让你的Flash内容被错误的显示或者根本不被显示。

SWFObject的JavaScript类库会尝试解决这些问题。

你最好将它看作一个附加的工具(add-on),它的基本目标是解决使用符合标准标签时出现的问题,同时增加提高用户体验的功能。

注意:目前所有已知的用来避免静态SWF内容的“点击激活”机制的变通方法,都存在严重的缺陷。

动态发表(dynamic publishing,第二种嵌入方法)是目前唯一真正可用的避免激活活动内容的解决方案。

第二步:在HTML的head标签中包括SWFObject的JavaScript类库SWFObject的JavaScript类库由一个外部JavaScript文件(大小:10.7Kb,GZIPed:3.5Kb)组成。

SWFObject会在外部JavaScript文件被加载后立即被执行,并且对于那些支持DomLoad事件的浏览器,例如 IE、Firefox、Safari 和Opera 9+,SWFObject将会在DOM被加载后完成所有的DOM操作,而如果浏览器不支持DomLoad事件,所有DOM操作将会在页面的load事件被触发后执行。

view sourceprint?01.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""/TR/xhtml1/DTD/xhtml1-strict.dtd">02.<html xmlns="/1999/xhtml" lang="en" xml:lang="en">03. <head>04. <title>SWFObject v2.0 - step 2</title>05. <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />06.07. <script type="text/javascript" src="swfobject.js"></script>08.09. </head>10. <body>11. <div>12. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="420">13. <param name="movie" value="myContent.swf" />14. <!--[if !IE]>-->15. <object type="application/x-shockwave-flash"data="myContent.swf" width="780" height="420">16. <!--<![endif]-->17. <p>Alternative content</p>18. <!--[if !IE]>-->19. </object>20. <!--<![endif]-->21. </object>22. </div>23. </body>24.</html>第三步:用SWFObject类库注册你的Flash内容并告诉SWFObject怎么样处理这些内容首先为Flash内容的外层object标签添加一个独特的id属性,然后添加swfobject.registerObject方法:第一个参数(String,必须的)指定object标签中使用的id。

相关文档
最新文档