Adobe Acrobat


  Byteserving Adobe PDF Files

What is Byteserving (page-at-a-time downloading)?
With page-at-a-time downloading (byte-serving), a Web server that is serving PDF content sends only the requested page of information to the user, not the entire PDF document. As an online reader of the PDF document (viewing in the Web browser window), you do not have to do anything to make this happen; it is communicated in the background between the Acrobat viewer and the Web server using the "Byte Range Retrieval Extension to HTTP" protocol. However, if the user would like the entire PDF document to continue downloading in the background while they view the first page of requested information, they (or the Network Administrator) would select the "Allow Background Download of Entire File" option in General Preferences of the Acrobat Reader.


Other considerations
The following elements are also necessary to accomplish efficient client/server byteserving:

  1. A Web browser which supports byte-range requests such as Netscape Navigator 3.0 or MSIE 3.0 on Win 32.
  2.  
  3. A PDF file which has been optimized using Acrobat Exchange 3.0 (an application which is included in the Acrobat 3.0 product).
    [Optimizing restructures or "marks" a PDF file to allow page-at-a-time downloading from a Web server.]
  4.  
  5. a Web server which supports byte range serving (byteserving)

Other byteserving resources


Webservers that support Byteserving "natively" (out of the box)

   

The top server companies are providing support for byteserving (using byteranging) PDF files.

Web servers that currently include built-in support for byteserving PDF files:

  Microsoft's Internet Information Server
  Netscape Enterprise Server 2.0 and later
(which is bundled with SuiteSpot Server 2.0)
Netscape FastTrack Server 2.0
  Apache 1.2 and later
  O'Reilly and Associates' Web site
  QuarterDeck Corporation's WebStar for Macintosh 2.0
   

Other Solutions for Web Serving


Note: Adobe Systems does not supply support for the following solutions.


The Byteserver Plug-in


For Netscape Servers
This archive contains the sources for a shared library that implements a Byteserving plugin for the Netscape Communication Server 1.0 and Netscape Commerce Server 1.0


For Apache Servers
This module implements a byteserver extension for the Apache WWW server. It has been implemented and tested using Apache 1.1.1. It will not work with Apache 1.2 (which supports Byteserving natively).


The Byteserver PERL script


Note: Adobe Systems does not supply support for the following solution.

This script can be used on servers that don't support the byteserver plug-in. The script implements the HTTP "Byte Range Retrieval Extension to HTTP" protocol documented in:

    "HyperText Transfer Protocol-HTTP/1.1"
Internet Draft: <rfc2068.txt>
http://ds.internic.net/rfc/rfc2068.txt
    Network Working Group
Category: Standards Track
January 1997
    J. Gettys
J. Mogul
DEC
H. Frystyk
T. Berners-Lee
MIT/LCS
R. Fielding
UC Irvine
 
   

Servers Supported
This script has been used successfully with the following servers:

It should be also possible to use this script with most other Web servers that support PERL CGI scripts. However, it is known not to work with certain versions of Microsoft Internet Information Server. However, Microsoft Internet Information Server version 2.0 or later can be configured to include built in support for byteserving.

The byteserving PERL script does not work with the Webstar server from Quaterdeck's Star-Nine Division. However, Webstar 2.0 server includes built-in support for byteserving.

If you try using another server please send e-mail to byteserve-feedback@adobe.com to let us know whether or not you're successful. (Please note, this is NOT a tech support address.)


Installation
The byteserver.pl file in the for_DOS and for_UNIX directories contain identical text; only the line breaks differ. Select the one appropriate for your platform.

Install the byteserver.pl CGI script on your Web server as you would any CGI script. On most servers, this means copying it to your cgi-bin directory.

Before copying your PDF files to your Web server, optimize them for byteservering using Adobe(R) Acrobat Exchange(R) 3.0.

To byteserve a file found at http://www.myserver.com/mypath/pdf_file.pdf using the script "byteserver.pl", specify the URL as http://www.myserver.com/cgi-bin/byteserver.pl/mypath/pdf_file.pdf. You can give the script a different name as long as it's reflected in the URL.


Brief Explanation of the Script
The protocol is simple: The client asks for a set of byte ranges for a URL in a Range header. The server fetches the requested ranges. The byteserver script exists for those servers that do not have the protocol built in.

The script expects to see the file for which bytes are being requested in the PATH_TRANSLATED environment variable. It expects to see the ranges requested in the HTTP_RANGE environment variable. If there are no ranges specified, the script returns the ranges as a multipart MIME response along with a status code of 206 (a new return code that means partial content is being returned by the server). The multipart MIME response indicates which ranges are being returned by each body part.


Security note
The script does not obey the server's security restrictions. If the script can open the file, it will be returned.


Notes on Specific Servers
NCSA HTTP
When the byteserver.pl is used with NCSA HTTPd server 1.4.2, byterange headers that are more than 256 characters will not work correctly. (Additional details: The byterange header "Range: bytes=0-100,200-1000", means fetch bytes 0 through 100 and 200 through 1000; this server does not support a "Range:..." string of more than 256 characters, which will often cause problems when serving long PDF files.)

The byteserver.pl script works with NCSA HTTPd server 1.5.2 but it is known to be incompatible with NCSA HTTPd server 1.5 and 1.5.1.


Apache 1.0.5 and 1.1.1
With the byteserver.pl script available from Adobe's external WWW site and the freely available Apache 1.1 WWW server, you can now have PDF files byte-served without re-authoring any of your PDF links:Here is what you need to do:

  1. Place the byteserver.pl perl script in your cgi-bin directory.
  2.  
  3. In the server configuration file srm.conf found in directory apache/conf add the following line:
    #Byte-Serve all application/pdf files via the cgi #byteserver perl script:
    action application/pdf /cgi-bin/byteserver.pl
  4.  
  5. Restart your WWW server.
    At this point, you should be ready to byteserve all PDF files on your WWW site.

Download the Byteserver PERL script



| Home | Acrobat | Acrobat 3.0 | Acrobat Reader | Acrobat Capture 2.0 | Adobe PDF |
|
Solutions | Resources | Get Help |
  Send Adobe your feedback!

Copyright © 1998 Adobe Systems Incorporated.
All rights reserved.
Legal notices and trademark attributions.