[转]PDF预览插件PDFObject.js

本文转自:http://pdfobject.com/index.php

When possible, use standardized HTML markup and avoid JavaScript

In an ideal world, you would always embed your PDF files using an <object> element hard-coded in your HTML markup. Why? For starters, avoiding JavaScript usually means greater accessibility, greater searchability (important for those concerned with search engine optimization), and fewer browser compatibility issues. Since no JavaScript is being used, standardized markup is also quicker to load and less of a drain on computer and network resources.

Click here to learn more about embedding PDFs using standardized HTML markup.

Sometimes you need a little JavaScript. When you do, try PDFObject.

Some projects will require dynamically embedded PDFs. PDFObject was designed for this purpose, and makes embedding PDFs quick and easy while maintaining a healthy respect for standards.

PDFObject  uses JavaScript to generate the same standards-compliant <object> markup you would normally write yourself,  then inserts the <object> into your HTML element of choice. You can fill the entire browser window, or insert the PDF into a <div> or other block-level element.

Here's a very simple no-frills example of PDFObject; this example will make the PDF fill the entire browser window:

<html>
  <head>
    <title>PDFObject example</title>
    <script type="text/javascript" src="pdfobject.js"></script><script type="text/javascript">
      window.onload = function (){
        var success = new PDFObject({ url: "sample.pdf" }).embed();
      };
    </script>   </head> 
  <body>
    <p>It appears you don't have Adobe Reader or PDF support in this web
    browser. <a href="sample.pdf">Click here to download the PDF</a></p>
  </body>
</html>

Embedding a PDF can't get much easier! There are also many other embed options available; visit the code generator to see what's possible.

Features

  • Detection of PDF plugin or PDF file-handling support.    
    • Checks for Adobe Reader.
    • Checks for generic support via the application/pdf mime type.
  • Only attempts to embed PDF if support is detected.    
    • if PDF support is detected, the <object> is embedded with all specified parameters;
    • if PDF support is not found, the <object> will not be embedded, and the fallback content is left as-is.
  • Returns reference to the HTML <object> (similar to getElementById) or null.
  • If no element ID is passed into the embed() call, PDFObject will default to document.body, filling the entire browser window.
  • Accepts optional embed parameters, including size, id, and most PDF open parameters.
  • Automatically appends extra CSS needed for full-window PDF embeds    
    • Removes padding and margins
    • Fixes 100% height issue in some browsers

Compatibility

Please note this compatibility chart has not been updated to reflect PDFObject 1.2.

PDFObject is compatible with every major browser capable of displaying PDFs. Please note these results  are from internal testing of PDFObject using Adobe Reader; no open-source PDF browser plugins were used during testing.

 Windows XP         (Professional)Windows Vista         (Business)Mac OS X 10.5         (Leopard)Ubuntu 8.04         (Hardy Heron)
Internet Explorer 6Xnot applicablenot applicablenot applicable
Internet Explorer 7XXnot applicablenot applicable
Mozilla Firefox 3XXno Adobe Reader pluginX
Apple Safari 3.1XXXnot applicable
Opera 9.5XXno Adobe Reader pluginX

not applicable: Specified browser is not produced for this operating system. no Adobe Reader plugin: Adobe Reader unavailable for this browser/OS combination.

Syntax

PDFObject's syntax will feel very familiar to users of JavaScript frameworks such as jQuery and MooTools. Here's a typical example:

var myPDF = new PDFObject({
  url: "sample.pdf",
  id: "myPDF",
  width: "500px",
  height: "300px",
  pdfOpenParams: {
    navpanes: 1,
    statusbar: 0,
    view: "FitH",
    pagemode: "thumbs"
  }
}).embed("mydiv");

Here's another example:

var myParams = { 
  url: "sample.pdf",
  pdfOpenParams: { view: "FitV" }
};

var myPDF = new PDFObject(myParams).embed("mydiv"); //returns reference to new HTML <object>

Note that embed is chained on to the new PDFObject statement. You can also use them separately:

var myParams = { 
  url: "sample.pdf",
  pdfOpenParams: { view: "FitV" }
};

var myPDF = new PDFObject(myParams);  //returns reference to JavaScript object

myPDF.embed("mydiv");  //returns reference to new HTML <object>

 

Properties and methods

PDFObject contains the following properties and methods.

NameTypeDescription
PDFObject(obj)constructor

Use an object for passing arguments. obj can contain the following arguments:

  • url (string, required)
  • id (string)
  • width (string, with unit of measurement such as "100%" or "500px")
  • height (string, with unit of measurement such as "100%" or "500px")
  • pdfOpenParams (object, may contain any of the PDF Open properties specified by Adobe)

Returns reference to self (this).

PDFObject.embed(targetID)methodEmbeds PDF.  Returns HTML <object> element or false if embed not successful.
PDFObject.get(prop)method

Returns value of property. If property is not found or has no value, returns null. Available properties:

  • url  (string)
  • id (string)
  • width (string)
  • height (string)
  • pdfOpenParams (object)
  • pluginTypeFound (string)
  • pdfobjectversion (string)
pipwerks.pdfUTILS.detect.hasReader()support functionReturns boolean indicating whether navigator.plugins version of Adobe Reader has been found.
pipwerks.pdfUTILS.detect.hasReaderActiveX()support functionReturns boolean indicating whether ActiveX version of Adobe Reader has been found.
pipwerks.pdfUTILS.detect.hasGeneric()support functionReturns boolean indicating whether application/pdf mime type is supported via navigator.mimeTypes
pipwerks.pdfUTILS.detect.pluginFound()support functionReturns string "Adobe" or "generic". Returns null if none found.
pipwerks.pdfUTILS.setCssForFullWindowPdf()support functionsets the following style properties:
html.style.height = "100%";         html.style.overflow = "hidden"; body.style.margin = 0; body.style.padding = 0; body.style.height = "100%"; body.style.overflow = "hidden";
These properties need to be set in order to remove margins/padding in the document, and to enable the object to stretch to 100% vertically.
pipwerks.pdfUTILS.buildQueryString(pdfOpenParams)support functionTakes properties of pdfOpenParams object and 'stringifies' them.
pipwerks.pdfUTILS.termFound(strToSearch, term)support functionReturns boolean         shortcut for strToSearch.indexOf("term") !== -1

Known issues

PDFObject has no known issues at this time. The biggest issue you may face is browser support for Adobe Reader and/or funky behavior in Reader. This is beyond the scope of this simple embed script. Shortcomings encountered with Reader during testing included:

  • Crashes/hanging when trying to replace an embedded PDF with a second PDF (by replacing the first <object> element with a new <object>).
  • Crashes/hanging when attempting to embed more than one PDF on a single HTML page (FYI this behavior can be avoided by using iframes).

Important note: PDFObject does NOT include version detection

PDFObject does not allow you to target a specific version of Adobe Reader, such as version 7 and higher. While version detection is possible, it is a very cumbersome task and nearly impossible to maintain or make future-proof, largely due to Adobe frequently changing the plugin's name and description. For instance, in Safari,  Adobe Reader 8.1's name is reported as "Adobe Acrobat and Reader Plug-in," while the name in the Windows version of Firefox is "Adobe PDF Plug-In For Firefox and Netscape." Until version reporting is consistent in Adobe Reader (across browsers and operating systems), PDFObject will not include version detection.

Tip of the cap

PDFObject was built using information, code, tools, or inspiration provided by others, including (in no particular order):

Thanks, guys!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值