`
Lstoryc
  • 浏览: 78290 次
文章分类
社区版块
存档分类
最新评论

PDF 在 html 调用acrobat reader显示2

 
阅读更多

首先IE只支持对Object的解析。

火狐,谷歌,Safari只支持对Embed的解析。

一、传统的方法

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
   codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/
swflash.cab#version=7,0,0,0"
   width="550" height="400" id="Untitled-1" align="center">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="mymovie.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="mymovie.swf" quality="high" bgcolor="#ffffff" width="550"
   height="400" name="mymovie" align="center" allowScriptAccess="sameDomain"
   type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
这方法是使用 object 和 embed 标签来嵌入,细心的会发现,object 的很多参数和 embed 里面的很多属性是重复的,为什么这样做?为了浏览器兼容性,有的浏览器支持 object,有的支持 embed,这也是为什么要修改 Flash 的参数时两个地方都要改的原因。这种方法是 Macromedia 一直以来的官方方法,最大限度的保证了 Flash 的功能,没有兼容性问题。但是它现在不那么好用了:

无法通过验证,由于为了兼容性而嵌入的 embed 标签是不符合 W3C 的规范的。当然,如果你不在乎什么规范不规范,另当别论。

微软由于种种原因,在 sp2 后限制了 IE 的 ActiveX 的使用模式,就是在页面中的 ActiveX 有一个虚框,需要用户点击一次才能正常交互。Flash是作为一个 ActiveX 嵌入到网页中的,所以它也会受牵连,只有通过 JS 嵌入 Flash 才能解决这个问题。

没有 Flash 版本检测,如果版本浏览器的flash插件版本不够,或者不能正常显示你的 swf 文件,或者会弹出一个 ActiveX 的确认安装的框——这个框对很多用户来说是很恐怖的。

二、只用 object 的方法
这种方法的名字叫做 Flash satay,最早是2002年由 Drew McLellan 发表在 A List Apart 上,后来又经过了几次完善:

<object type="application/x-shockwave-flash
data="c.swf?path=movie.swf"
width="400" height="300">
<param name="movie"
value="c.swf?path=movie.swf" />
<img src="noflash.gif"
width="200" height="100" alt="" />
</object>
这方法没 embed 了,可以通过验证,是标准的嵌入 Flash 的方法,浏览器兼容性也不错,看起来几乎完美,不过还是有问题的:

需要一个 holder swf 来加载你的目标 swf 以保证 IE 中的 stream 能力,如果你需要通过 flashvars 来传参,或者和页面的 JS 交互,会很麻烦。

同上面第二点,ActiveX的虚框问题。

继续同上没有版本检测

还是有少数用户代理(比如一些版本的 safari 和一些屏幕阅读器)不认这种方式,有 bug。

三、用JS嵌入的方法

用JS嵌入就是各有各的嵌入方法了,有嵌得好的有嵌得不好的。有人用 document.write 直接写,这法子说实话不大好,感觉 hack 成分多了,有点为了验证而验证的意思,而且没有体现出什么 JS 的优势。我觉得一个好的 JS 嵌入脚本,在保证 Flash 应有功能的基础上,⒒?JS 的优势应该要有版本检测,要能很好解决可访问性问题(也就是用户在无法浏览 Flash 内容或禁用 JS 的时候应该如何处理的问题),要易于重复使用。
我知道的比较常见的 JS 嵌入方法有以下几个

SWFObject

UFO - Unobtrusive Flash Objects

Macomedia(现在是Adobe了..)提供的脚本[这里]和[这里]。

我 SWFObject 用的比较多,就挑它来说一些这种方法的优点:

IE中没有讨厌的虚框问题了。

提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。

易于使用,只要在页面头加载一个 .js 文件,然后 HTML 写一个容器,里面放普通的文本或图片(用于无法显示 Flash 时显示),最后用脚本来替换这个元素里面的内容为 Flash。

可以通过验证——当然这个不是重点,只是顺带效果罢了。

四、我的结论

现阶段用 JS 嵌入 Flash 是最完美的方法,虽然这法子这也是由于浏览器的种种问题而作出的妥协。
但它在保证 Flash 功能的前提下还利用 JS 提供了额外的好处,再者又已经有人写了很完善的嵌入脚本可以方面地下载使用(推荐 SWFObject),我们还有什么理由不用它呢?

SWFObject 那网页是英文的,这里写个简单的用法教程:

下载它的.js文件,在这里: http://blog.deconcept.com/swfobject/swfobject1-4.zip (如果链接失效可能是版本有更新,请用上面给出的地址去主页下载最新版本)

在你的 HTML 页面头部<head>区嵌入这个脚本文件:<script type="text/javascript" src="swfobject.js"></script>

在你的 HTML 中写一个用来放 Flash 的容器,比如<div>,并随便给一个 id 比如 flashcontent。然后在里面放上你的替换内容。

<div id="flashcontent">
这里放替换内容,用来在 Flash 无法显示时显示。
</div>
使用脚本替换这个内容:

<script type="text/javascript">
   var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
//参数意思: 地址,Flash 的 id(不是容器的 id),宽,高,版本需求,背景颜色
//这是最基本的,如果你要高级的设置,就仔细翻翻说明吧。
   so.write("flashcontent");
</script>
这脚本可以写在 HTML 中也可以写在外部 .js 文件中。

OK

分享到:
评论

相关推荐

    C/C++ 调用Adobe Acrobat Reader DC实现PDF文件打印

    本话题聚焦于使用C/C++编程语言调用Adobe Acrobat Reader DC来实现PDF文件的打印功能。Adobe Acrobat Reader DC是一款广泛使用的PDF阅读器,它提供了丰富的API接口,允许开发者通过编程方式控制其行为,包括打开、...

    C#调用Adobe Reader XI接口,实现pdf文件内容检查

    C#调用Adobe Reader XI 插件工具,实现PDF接口,加载PDF文件,进行检查、检索

    C#使用Adobe Reader读取PDF

    在描述中提到的"使用Adobe Reader读取PDF",意味着我们将创建一个C#窗体应用程序,通过Adobe Reader的控件嵌入到应用程序中,实现PDF的显示和交互。 1. **创建C#窗体项目** 在Visual Studio中,创建一个新的C# ...

    Acrobat pdf 二次开发.net 源代码

    “.net 源代码”则意味着这些代码是用.NET语言编写的,可能是C#或VB.NET,使用了.NET提供的类库来调用Acrobat的API。 根据压缩包子文件的文件名称列表"InterAppCommunicationSupport",我们可以推测这可能是一个...

    C# winform预览PDF Adobe PDF Reader控件

    Adobe PDF Reader控件提供了丰富的API接口供开发者调用。例如,可以使用`PageNum`属性设置当前显示的页面,`Zoom`属性控制缩放比例,以及`SetFocus`方法使焦点落在PDF控件上,允许用户通过键盘导航。 ```csharp // ...

    MFC使用Adobe PDFReader控件制作PDF阅读器

    使用Adobe Reader的Adobe PDF Reader的控件,使用MFC做成的这个软件,非常简单,但是依靠强大的ActiveX插件,使其功能强大。 注意: release目录下的软件直接打开就可以,但是要是打开VS的解决方案,要安装Adobe ...

    金山词霸2007如何在Acrobat Reader取词

    当我们需要在PDF文档中查找或理解不熟悉的英文单词时,如果能将金山词霸与Acrobat Reader结合,就能实现快速取词翻译,极大地提升学习效率。下面我们将详细介绍如何在Acrobat Reader中利用金山词霸2007进行取词。 ...

    acrobat 制作PDF模板说明

    在保存时,确保文档为可填写的表单格式,以便用户能够使用Adobe Reader或Acrobat Reader等PDF阅读器进行填写。 最后,将制作好的模板上传到合同管理平台,比如“法大大”。通常,这些平台会提供一个接口来上传和...

    使用adobe acrobat DC 生成pdf模板后,用在java里使用itext填充pdf并转格式

    下面将详细介绍如何使用Adobe Acrobat DC创建PDF模板,以及如何在Java中使用iText进行PDF填充和转换。 首先,使用Adobe Acrobat DC创建PDF模板: 1. 打开Adobe Acrobat DC,选择“创建”或“新建PDF”选项,可以...

    Acrobat Common API

    文档中还提到了一些商标信息,如Adobe、Acrobat、PostScript、Reader均为Adobe Systems Incorporated在美国及其他国家的注册商标或商标;Apple和MacOS是Apple Computer, Inc.的注册商标;JavaScript为Sun ...

    adobe pdf编辑器 java利用itextpdf根据模板导出pdf配套资源

    3. **读取模板**:使用PdfReader类读取模板PDF文件,获取AcrobatReader对象,该对象可以访问PDF的页面和内容。 4. **创建写入流**:建立一个FileOutputStream,用于将生成的PDF输出到指定文件。 5. **复制页面**:...

    java调用实体打印机打印pdf文件

    在Java编程环境中,调用实体打印机来打印PDF文件是一项常见的任务。这通常涉及到将PDF文档内容转换成打印机能够理解的格式,然后通过Java的打印服务API进行操作。在这个过程中,我们需要借助特定的库来处理PDF文件和...

    将模糊PDF变清晰的软件PDF2HD

    PDF2HD可以与常见的PDF阅读软件如Adobe Acrobat Reader、Foxit Reader等配合使用,实时处理PDF。这意味着用户可以在阅读过程中随时调用PDF2HD,无需退出当前阅读环境,提升了工作效率。 4. **系统兼容性**: ...

    DELPHI PDF文件打印

    它基于Adobe Acrobat的ActiveX控件,可以提供与Adobe Reader类似的功能。安装这个组件后,我们可以在DELPHI的工具箱中找到它,然后将其拖放到表单上。 在使用TAdobePDFViewer组件时,我们首先要设置其Path属性,...

    PDF .net版本可以在页面直接打开PDF,兼容所有浏览器

    通过将PDF .NET集成到网页应用中,开发者可以利用PDF.js的能力,在客户端浏览器上解码和渲染PDF文件,无需将文件上传到服务器或依赖于特定的插件如Adobe Acrobat Reader。 在实际应用中,PDF .NET提供了丰富的API...

    js代码:网页中的adobePDF显示,js控制pdf页面滚动

    当用户点击这个链接时,PDF文档会根据浏览器的设置在新的窗口中打开或者在当前窗口内打开,这通常依赖于用户的浏览器配置和是否有安装Adobe Acrobat Reader或其插件。 **示例代码**: ```html ...

    python调用打印机打印pdf文件第三方包

    例如,我们可以使用Adobe Acrobat Reader或其他支持命令行参数的PDF阅读器。在这个例子中,我们假设已有一个名为`gs927w64.exe`的可执行文件,可能是Ghostscript,一个用于处理PDF的开源工具。 `GSPRINT`可能是一个...

    C#显示PDF内容

    例如,Adobe Acrobat Reader DC提供了ActiveX控件,可以在C#中调用,代码示例如下: ```csharp using AxHost; using AxAcroPDFLib; public partial class Form1 : Form { private AxAcroPDFLib.AxAcroPDF acrobat...

    在MFC应用程序中浏览PDF、Word文档文件C++源代码程序小实例

    Adobe Reader SDK提供了一个ActiveX控件AcroExch.App,可以在MFC程序中直接嵌入PDF阅读器。你可以在一个对话框或者视图类中添加这个控件,并通过调用其方法来打开和控制PDF文件。例如,你可以创建一个`...

    C#中用三种方法打印PDF文档

    在C#编程环境中,打印PDF文档是常见的任务,特别是在企业级应用中,如报告生成、文档分发等。本文将详细介绍在Visual Studio 2015(VS2015)下,使用.NET Framework 4 Client Profile框架的三种方法来实现这一功能。...

Global site tag (gtag.js) - Google Analytics