% makeindex < aebpro_man.idx > aebpro_man.ind \documentclass{article} \usepackage[fleqn]{amsmath} \usepackage[ web={centertitlepage,designv,forcolorpaper,tight*,latextoc,pro}, eforms,linktoattachments,aebxmp ]{aeb_pro} \usepackage{aeb_mlink} \usepackage[dvipsone,showembeds]{graphicxsp} \usepackage{array,fancyvrb} %\usepackage[LY1]{fontenc} %\usepackage[scaled=0.93]{helvet} %\usepackage{mtpro} %\usepackage{myriadpro} %\usepackage{calibri} \usepackage[altbullet]{lucidbry} %\usepackage{makeidx}\makeindex \usepackage{acroman} \usepackage[active]{srcltx} \urlstyle{tt} \def\tutpath{doc/tutorial} \def\tutpathi{tutorial} \def\expath{../examples} \DeclareDocInfo { university={\AcroTeX.Net}, title={ \texorpdfstring{\pkg{GraphicxSP}\\[1em]} {GraphicxSP: }Using and re-using Embedded Graphics}, author={D. P. Story}, email={dpstory@acrotex.net}, subject={Documentation for AeB Pro from AcroTeX}, talksite={\url{www.acrotex.net}}, version={1.0}, Keywords={XMP, E4X, Adobe Acrobat, JavaScript}, copyrightStatus=True, copyrightNotice={Copyright (C) \the\year, D. P. Story}, copyrightInfoURL={http://www.acrotex.net} } \def\anglemeta#1{$\langle\textit{\texttt{#1}}\rangle$} \def\meta#1{\textit{\texttt{#1}}} \let\meta\anglemeta \def\darg#1{\texttt{\{#1\}}} \def\takeMeasure{\bgroup\obeyspaces\takeMeasurei} \def\takeMeasurei#1{\global\setbox\webtempboxi\hbox{\ttfamily#1}\egroup} \def\bxSize{\wd\webtempboxi+2\fboxsep+2\fboxrule} \let\pkg\textsf \let\env\texttt \let\opt\texttt \let\app\textsf \let\amtIndent\leftmargini \def\SUB#1{${}_{\text{#1}}$} \newdimen\aebdimen \aebdimen 0pt %\advance\aebdimen\partopsep \newcommand\bVerb[1][]{\begingroup#1\vskip\aebdimen\parindent0pt}% \def\eVerb{\vskip\aebdimen\endgroup\noindent} \makeatletter \renewcommand{\paragraph} {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}{\bfseries}} \renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.5em}} \renewcommand*\descriptionlabel[1]{\hspace\labelsep \normalfont #1} \newcommand{\aebDescriptionlabel}[1]{% \setlength\dimen@{\amtIndent+\labelsep}% {\hspace*{\dimen@}#1}} \makeatother \newenvironment{aebDescript} {\begin{list}{}{\setlength{\labelwidth}{0pt}% \setlength{\leftmargin}{\leftmargin}% \setlength{\leftmargin}{\leftmargin+\amtIndent}% \setlength\itemindent{-\leftmargin}% \let\makelabel\aebDescriptionlabel }}{\end{list}} \def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}% \kern-.6em \hbox{$\mathcal S$}}$} \universityLayout{fontsize=Large} \titleLayout{fontsize=LARGE} \authorLayout{fontsize=Large} \tocLayout{fontsize=Large,color=aeb} \sectionLayout{indent=-62.5pt,fontsize=large,color=aeb} \subsectionLayout{indent=-31.25pt,color=aeb} \subsubsectionLayout{indent=0pt,color=aeb} \subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}} %\pagestyle{empty} %\parindent0pt\parskip\medskipamount \special{!userdict begin /Draw_Ellipse { /m matrix currentmatrix def 4 2 roll translate scale 0 0 1 0 360 arc closepath m setmatrix } def end } \embedEPS[hiresbb,transparencyGroup]{myBestPic}{graphics/AdobeDon} \embedEPS[hiresbb,transparencyGroup]{myBG}{graphics/border1} \begin{createImage}{\bboxOf{myBestPic}}{upsideDownAD} 0 \heightOf{myBestPic} rmoveto currentpoint translate 1 -1 scale [ {myBestPic} /SP pdfmark \end{createImage} \begin{createImage}{\bboxOf{myBestPic}}{transparentAD} [ /ca .3 /SetTransparency pdfmark [ {myBestPic} /SP pdfmark \end{createImage} \begin{createImage}{\bboxOf{myBestPic}}{nAdobeDon} [ {myBestPic} /SP pdfmark \end{createImage} \begin{createImage}{\bboxOf{myBestPic}}{dAdobeDon} [ /ca .3 /SetTransparency pdfmark [ {myBestPic} /SP pdfmark \end{createImage} \begin{createImage}{\bboxOf{myBestPic}}{rAdobeDon} [ /ca .5 /SetTransparency pdfmark [ {myBestPic} /SP pdfmark \end{createImage} \begin{createImage}{0 0 100 100}{xO} .7529 setgray 0 0 100 100 rectfill 1 setgray 2 2 moveto 2 98 lineto 98 98 lineto 96 96 lineto 4 96 lineto 4 4 lineto fill 0.34 setgray 98 98 moveto 98 2 lineto 2 2 lineto 4 4 lineto 96 4 lineto 96 96 lineto fill 0 setgray 22.5 22.5 moveto 1 0 0 setrgbcolor /Helvetica 72 selectfont (O) show \end{createImage} \definePath\bgPath{"C:/Users/Public/Documents/% ManualBGs/Manual_BG_Print_AeB.pdf"} \begin{docassembly} \addWatermarkFromFile({% bOnTop: false, cDIPath: \bgPath }) \executeSave() \end{docassembly} \begin{document} \maketitle \selectColors{linkColor=black} \tableofcontents \selectColors{linkColor=webgreen} \section{Introduction} Beginning with Version 5.0, ``Acrobat Distiller allows a PostScript language program to specify that a given set of graphical operations should be encapsulated and treated as a single object. The pdfmarks \textbf{BP} (Begin Picture) and \textbf{EP} (End Picture) enclose a set of graphic operations. The \textbf{SP} (Show Picture) pdfmark indicates where to insert an object (which may be inserted in more than one place).''\,\footnote{Section 4.6.1 of the \textit{pdfmark Reference Manual}, Technical Note \#5150, Version 5.0} This is the approach taken by this package. \pkg{GraphicxSP} includes commands for embedding an EPS graphic (using the \textbf{BP} and \textbf{EP} pdfmark operators) in a PDF derived from a {\LaTeX} source and for displaying the graphic, possibly multiple times. For documents that use the same graphic multiple times (for backgrounds, watermarks, company logos, appearances for form fields, etc.) using \pkg{GraphicxSP} will (greatly) reduce the size of the PDF.\footnote{The amount of reduction in file size depends on how many times a particular graphic is repeatedly used.} The PDF 1.4 (Acrobat version 5.0) introduces the notion of transparency into the Adobe imaging model. Support for transparency through the pdfmark paradigm does not appear until Version 6.0.\,\footnote{Section 4.6.1 of the \textit{pdfmark Reference Manual}, Technical Note \#5150, Version 6.0, page~33.} This package also supports transparency feature through the \textbf{SetTransparency} pdfmark. \pkg{GraphicxSP}, as the name might suggest, is an extension of the graphicx package. Functionality for \pkg{GraphicxSP} is accessed through the \cs{includegrapics} command. Additional key-values for the \cs{includegrapics} command are defined that support the use \pkg{GraphicxSP}. \section{Requirements} {\LaTeX}, PDF, and transparency requirements are discussed in this section. \subsection{{\LaTeX} package requirements} This package requires the \pkg{graphicx} package (by D. P. Carlisle and S. P. Q. Rahtz), the \pkg{eso-pic} package (by Rolf Niepraschk) and the \pkg{everyshi} package (by Martin Schr\"oder). \pkg{GraphicxSP} redefines a few commands of the first two packages: the \pkg{graphics}/\pkg{graphicx} package commands \cs{Gin@setfile} and \cs{Gin@getbase} are redefined, as is the \pkg{eso-pic} command \cs{@ShipoutPicture}. \pkg{AeB} (Acro\negthinspace\TeX{} eDucation Bundle) is not a required package, but to successfully compile the example \texttt{grxsp\_forms\_aeb.tex}, you need the latest \pkg{AeB} as some modification to the eforms package were made. See \mlurl{http://www.math.uakron.edu/~dpstory/graphicxsp.html} for the latest version. \subsection{PDF creator requirements} The big restriction on this package is the requirement to use \textbf{Acrobat Distiller} (version 5.0, or version 6.0 for transparency). The package was developed using Acrobat Distiller 8.1. The package supports the creation of PostScript using \app{dvips} and \app{dvipsone}. Though distiller is required, there is no reason why, however, this package can't be modified to work for any PDF creator that supports the pdfmark; in particular, I invite anyone to extend this package to \app{GhostScript}. \subsection{Transparency requirements} To get the transparency effect, \app{Acrobat Distiller} version 6.0 or later is required. The default setting of the distiller does not support the \textbf{SetTransparency} pdfmark; it is necessary to edit the \texttt{.joboptions} file. \newtopic\noindent The procedure for editing \texttt{.joboptions} to support transparency is as follows: \begin{enumerate} \item Start Acrobat Distiller \item From the Default Settings list, select the setting you want to edit, usually, this will be the \texttt{Standard} job options. \item Select \textsf{Settings\;>\;Edit\;Adobe\;PDF\;Settings\;(Ctrl+E)} from the distiller menu. \item Click the \texttt{SaveAs} button at the bottom of the \texttt{Adobe PDF Settings} dialog box. Save your \texttt{.jobsettings} file under a new name, say \texttt{Standard\_transparency} and make a note of where the distiller saves this file. \item With your favorite text editor, navigate to the folder where you saved your new \texttt{.joboptions} file, and open it in your editor. \item Look for the line \texttt{/AllowTransparency false}, change \texttt{false} to \texttt{true} so that it now reads \texttt{/AllowTransparency true}. Save the changes and close the file. \item Use this \texttt{.joboptions} file, \texttt{Standard\_transparency} for example, whenever you distill with transparency pdfmarks. If your {\LaTeX} file uses transparency, and you are using a \texttt{.joboptions} file with \texttt{/AllowTransparency false}, distillation will fail and the distiller log should say \begin{Verbatim}[fontsize=\small] %%[Error: The PostScript contains Transparency pdfmark, job aborted.]%% %%[ /AllowTransparency is false in job option settings.]%% %%[ Error: undefined; OffendingCommand: pdfmark; ErrorInfo: Transparency Group ]%% \end{Verbatim} This suggests that you should use your \texttt{.joboptions} file that supports transparency! \end{enumerate} \section{Options of this package} Currently, there is a minimal of package options \begin{itemize} \item \texttt{dvips}: Use this option if you are a user of most any other {\TeX} systems available to the community. \item \texttt{dvipsone}: Use this option if you are a user of the Y{\small\&}\!Y {\TeX} system to create your PostScript file. \item \texttt{preview}: The dvi previewers are designed to show a preview of the graphic, these previewers know nothing about the \textbf{SP} pdfmark (Show Picture). If you use the \texttt{preview} option, a \cs{fbox} is placed around all graphics inserted by the \pkg{GraphicxSP} package. This option sets a boolean switch, \cs{ifpreview} to true. You are free to locally set this switch to get the \cs{fbox} to appear, use include \cs{previewtrue} in your document, or, to turn the preview off again, type \cs{previewfalse}. \item \texttt{showembeds}: As just mentioned, dvi previewers are designed to preview graphics; consequently, the graphic files embedded by \pkg{GraphicxSP}, will have a preview as well. The embedding command \cs{embedEPS} is required to appear only in the preamble, so the preview for this embedded graphics always appears on the first page. \pkg{GraphicxSP} covers these embedded files using a white \texttt{colorbox}; content and other graphics are placed on top of the white \texttt{colorbox}. Using the \texttt{showembeds} will cause this white color box not to be created, hence, you can see the dvi preview of the embedded graphics, stacked one on top of the other. \item \texttt{draft}: Similar to the option of the same name in the graphicx package. Instead of displaying an image, a rectangular box is displayed with the name of the graphic in its interior. \item \texttt{shownonames}: If this option is chosen along with the \texttt{draft} option, the name of the graphic is not displayed. \end{itemize} \section{The \texorpdfstring{\protect\pkg{GraphicxSP}}{GraphicxSP} commands} In this section we present the new commands defined in the \pkg{GraphicxSP} package. \subsection{Embedding commands} Before we can show a graphic, we first must embed it using the \cs{embedEPS} command. \bVerb\takeMeasure{\string\embedEPS[\meta{key-values}]\darg{\meta{name}}\darg{\meta{path}}} \begin{dCmd}[commandchars=!()]{\bxSize} \embedEPS[!meta(key-values)]{!meta(name)}{!meta(path)} \end{dCmd} \endgroup \CmdLoc This command is restricted to the preamble. \PD The parameters are as follows: \begin{enumerate} \item The first optional parameter takes key-value pairs: \begin{itemize} \item \texttt{hiresbb}: This is a key from the graphicx package. When this key is present, graphicx will look for the high resolution bounding box; otherwise, is looks for the bounding box. \item \texttt{transparencyGroup}: Use this key if the embedded graphic is to be used with transparency. The key is normally used by itself, but it can be given values, a good old-fashion reading of Chapter 7 on Transparency in the PDF Reference, sixth edition, version 1.7, is necessary. \end{itemize} \item The second parameter \meta{name} is the symbolic name for the graphic. This symbolic name must be unique to the document (or distiller will crash); \pkg{GraphicxSP} will stop compilation if two embedded EPS files are given the same name. \item The third parameter is the path to the graphic, an EPS graphic. The graphic can be in the current folder, or on the graphics search path. The same rules hold here as in the graphicx package. \end{enumerate} For example, \bVerb\takeMeasure{\string\embedEPS[hiresbb,transparencyGroup]\darg{myBestPic}\darg{graphics/AdobeDon}} \begin{dCmd*}[commandchars=!()]{\bxSize} \embedEPS[hiresbb,transparencyGroup]{myBestPic}{graphics/AdobeDon} \end{dCmd*} \eVerb When a file is embedded, certain parameters are saved and are available for use by the document author. Each of the commands below take the symbolic name, \meta{name} of the graphic as their only argument. \begin{itemize} \item \cs{bboxOf\darg{\meta{name}}}: The dimensions of the bounding box, \texttt{llx} \texttt{lly} \texttt{urx} \texttt{ury}, of the graphic with symbolic name \meta{name}. The individual values of this bounding box can be accessed by the next four commands. \item \cs{llxOf\darg{\meta{name}}}: The lower left x-coordinate of the (high res) bounding box as read by graphicx. \item \cs{llyOf\darg{\meta{name}}}: The lower left y-coordinate of the (high res) bounding box as read by graphicx. \item \cs{urxOf\darg{\meta{name}}}: The upper left x-coordinate of the (high res) bounding box as read by graphicx. \item \cs{uryOf\darg{\meta{name}}}: The upper left y-coordinate of the (high res) bounding box as read by graphicx. \item \cs{heightOf\darg{\meta{name}}}: The height of the graphic, based on the bounding box information, \cs{uryOf\darg{\meta{name}}} - \cs{llyOf\darg{\meta{name}}}. \item \cs{widthOf\darg{\meta{name}}}: The width of the graphic, based on the bounding box information, \cs{urxOf\darg{\meta{name}}} - \cs{llxOf\darg{\meta{name}}}. \end{itemize} Each expands to a number representing Adobe points. To convert these numbers for use by {\TeX} just add the suffix \texttt{bp}, e.g., in {\TeX} space, the height of the graphic is \cs{heightOf\darg{\meta{name}}bp}. These commands are useful when creating variations on an \cs{embedEPS} graphic using the \texttt{createImage} environment defined below, or for creating form fields with an \cs{embedEPS} graphic as an appearance. The \cs{embedEPS} command is designed for graphics that are in an exterior EPS file. You can also define a graphic, or image, using raw PostScript using the \Indextt{createImage} environment. \bVerb\takeMeasure{\string\begin\darg{createImage}[\meta{key-values}]\darg{\meta{bbox}}\darg{\meta{name}}} \begin{dCmd}[commandchars=!()]{\bxSize} \begin{createImage}[!meta(key-values)]{!meta(bbox)}{!meta(name)} !meta(postscript code) \end{createImage} \end{dCmd} \endgroup \PD The parameters are as follows: \begin{enumerate} \item The first optional parameter takes key-value pairs: \begin{itemize} \item \texttt{transparencyGroup}: Use this key if the embedded graphic is to be use with transparency. The key is normally used by itself, but it can be given values, a good old-fashion reading of Chapter 7 on Transparency in the PDF Reference, sixth edition, version 1.7, is necessary. \end{itemize} \item The second parameter, \meta{bbox}, is the bounding box of the image being created. \item The third parameter \meta{name} is the symbolic name for the graphic. This symbolic name must be unique to the document (or distiller will crash); \pkg{GraphicxSP} will stop compilation if two embedded EPS files are given the same name. \end{enumerate} The following image appears in one of the demo files of this package, and is code written many years ago for a tic-tac-toe game in PDF. \begin{Verbatim} \begin{createImage}{0 0 100 100}{xO} .7529 setgray 0 0 100 100 rectfill 1 setgray 2 2 moveto 2 98 lineto 98 98 lineto 96 96 lineto 4 96 lineto 4 4 lineto fill 0.34 setgray 98 98 moveto 98 2 lineto 2 2 lineto 4 4 lineto 96 4 lineto 96 96 lineto fill 0 setgray 22.5 22.5 moveto 1 0 0 setrgbcolor /Helvetica 72 selectfont (O) show \end{createImage} \end{Verbatim} \begin{Verbatim} \embedEPS[hiresbb,transparencyGroup]{myBestPic}{graphics/AdobeDon} \end{Verbatim} we can then manipulate this image a little \begin{Verbatim} \begin{createImage}{\bbox{myBestPic}}{upsideDownAD} 0 \heightOf{myBestPic} rmoveto currentpoint translate 1 -1 scale [ {myBestPic} /SP pdfmark \end{createImage} \end{Verbatim} Notice that we reposition the graphic to fit inside the bounding box. I don't mean to get ahead of myself, but you can introduce transparency as well. \begin{Verbatim} \begin{createImage}{\bbox{myBestPic}}{transparentAD} [ /ca .3 /SetTransparency pdfmark [ {myBestPic} /SP pdfmark \end{createImage} \end{Verbatim} All these examples will appear again below when \cs{includegraphics} and \cs{insertEPS} are discussed. \newtopic\noindent The commands \cs{llxOf}, \cs{llyOf}, \cs{urxOf}, \cs{uryOf}, \cs{bboxOf}, \cs{heightOf} and \cs{widthOf} are also defined for images created by the \texttt{createImage} environment. \subsection{Inserting graphics commands} Once we have embedded our graphics using \cs{embedEPS} or create a new image or modified an old image using the \texttt{createImage} environment, we can display them to our heart's content. There are two commands for displaying a embedded graphic, \cs{includegraphics} and \cs{insertEPS}. \bVerb\takeMeasure{\string\includegraphics[name=\meta{name},\meta{key-values}]\darg{\meta{path}}} \begin{dCmd}[commandchars=!()]{\bxSize} \includegraphics[name=!meta(name),!meta(key-values)]{!meta(path)} \insertEPS[!meta(key-values)]{!meta(name)} \end{dCmd} \endgroup \PD The \meta{name} key is required in the \cs{includegraphics} command, the value is the symbolic \meta{name} of the graphic to be used. When the name key is used, the \meta{path} parameter is not used in \pkg{GraphicxSP} and can actually be empty; if the name key is not specified, then \cs{includegraphics} behaves just like it always does, includes the file in the document and displays it. Because \meta{path} is not used with SP graphics, \pkg{GraphicxSP} offers \cs{insertEPS} as an alternative; here the \meta{name} is given as the second argument. The \meta{key-values} are described next. \KVP Both commands take all the key-values of the \cs{includegraphics} command, plus a few more: \begin{enumerate} \item \texttt{name=\meta{name}}: The symbolic name (\meta{name}) for the graphic, it is required with the \cs{includegraphics} command, and is ignored in the \cs{insertEPS} command. In the later command, \meta{name} is entered as the second argument. \item \texttt{transparency=\meta{key-values}}: Here you can enter various key-value pairs for setting transparency. These keys-values are listed in the pdfmark Reference in the section on the SetTransparency pdfmark. Of the ones listed, I've only explored \textbf{BM}, \textbf{ca} and \textbf{CA}. The following come from the pdfmark Reference on these three: \begin{itemize} \item \textbf{CA}: Current stroking alpha constant, specifying the constant shape or constant opacity value to be used for stroking operations. Default is 1.0. \item \textbf{ca}: Same as CA, but for nonstroking operation. Default is 1.0. \item \textbf{BM}: Current blend mode. Default is Normal. Other blend modes are Normal, Multiply, Screen, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion. See the PDF Reference for a description of these. \end{itemize} The most useful of these is \textbf{ca}, and it is illustrated in the demo files and well as here. \item[] Example: \verb!transparency={/ca .3 /BM/Normal}! \item \texttt{presp=\meta{postscript}}: This allows you to insert PostScript commands just before \textbf{SP} pdfmark. \item \texttt{postsp=\meta{postscript}}: This allows you to insert PostScript commands just after \textbf{SP} pdfmark. \end{enumerate} The latter two key-values can be used to create special effects, as illustrated below. \subsection{Examples} %\previewtrue \begin{center} \includegraphics[name=myBestPic,width=1in]{}\\ \small\verb!\includegraphics[name=myBestPic,width=1in]{}! \end{center} Below is the image created not from a EPS file, but from PostScript language code. \begin{center} \includegraphics[name=xO,width=1in]{}\\ \small\verb!\includegraphics[name=x0,width=1in]{}! \end{center} The \meta{path} argument can remain empty as it is not used when the name key is present. Now, we'll switch over to the shorter \cs{embedEPS} command. Here is the image created earlier using the \texttt{createImage} environment. The same effect can be done with \cs{scalebox}. \begin{center} \insertEPS[width=1in]{upsideDownAD}\\ \verb!\insertEPS[width=1in]{upsideDownAD}! \end{center} Below is the transparent image created using the \texttt{createImage} environment. The same effect can be done by setting the \texttt{transparency} key set to \verb!{/ca .3}!. The background is white and it is this white background you see showing through the image. \begin{center} \insertEPS[width=1in]{transparentAD}\\ \verb!\insertEPS[width=1in]{transparentAD}! \end{center} Next, we set the \texttt{transparency} key to an opacity value ranging from 70\% on the left (\texttt{/ca .7}) to 30\% on the right (\texttt{/ca .3}), and place a colorful background under the image so you can see the transparency of the image. \begin{center}\previewfalse \insertEPS[width=\linewidth,height=80pt]{myBG} %transparency={/ca .3 /BM/Normal}, \smash{\raisebox{15pt}{\makebox[\linewidth][c]{% \insertEPS[width=1in,transparency={/ca .7}]{myBestPic}\hfill \insertEPS[width=1in,transparency={/ca .6}]{myBestPic}\hfill \insertEPS[width=1in,transparency={/ca .5}]{myBestPic}\hfill \insertEPS[width=1in,transparency={/ca .4}]{myBestPic}\hfill \insertEPS[width=1in,transparency={/ca .3}]{myBestPic}}}} \small\verb!transparency={/ca .7}...transparency={/ca .3}! \end{center} We can rotate the image using the usual graphicx controls, as below, or we can use \cs{rotatebox}. \begin{center} \insertEPS[width=1in,angle=45]{myBestPic}\\ \small\verb!\insertEPS[width=1in,angle=45]{myBestPic}! \end{center} Any of the keys of \cs{includegraphics} can be used to manipulate the image. The images can also be manipulated using other graphicx commands, \cs{resizebox}, \cs{scalebox} and \cs{rotatebox}, for example. Finally, here is an example of the use of \texttt{presp} and \texttt{postsp}: \def\mypreSP#1{% newpath \widthOf{#1} 2 div \heightOf{#1} 2 div \widthOf{#1} 2 div \heightOf{#1} 2 div Draw_Ellipse clip newpath } \def\mypostSP#1{% gsave [ /ca .4 /SetTransparency pdfmark \widthOf{#1} 2 div \heightOf{#1} 2 div \widthOf{#1} 2 div \heightOf{#1} 2 div Draw_Ellipse 0.4 0.7 1 setrgbcolor fill grestore gsave [ /CA .5 /BM/Screen /SetTransparency pdfmark \widthOf{#1} 2 div \heightOf{#1} 2 div \widthOf{#1} 2 div \heightOf{#1} 2 div Draw_Ellipse 40 setlinewidth 0.4 0.7 1 setrgbcolor stroke grestore } \begin{center} \includegraphics[name=myBestPic,width=1.5in, presp={\mypreSP{myBestPic}}, postsp={\mypostSP{myBestPic}}]{myBestPic} \end{center} The \texttt{presp} code is \begin{Verbatim}[fontsize=\small] \def\mypreSP#1{% newpath \widthOf{#1} 2 div \heightOf{#1} 2 div \widthOf{#1} 2 div \heightOf{#1} 2 div Draw_Ellipse clip newpath } \end{Verbatim} and clips the image in the shape of an ellipse. In this case, the image is almost square, so the image is almost circular. The \texttt{postsp} is \begin{Verbatim} \def\mypostSP#1{% gsave [ /ca .4 /SetTransparency pdfmark \widthOf{#1} 2 div \heightOf{#1} 2 div \widthOf{#1} 2 div \heightOf{#1} 2 div Draw_Ellipse 0.4 0.7 1 setrgbcolor fill grestore gsave [ /CA .5 /BM/Screen /SetTransparency pdfmark \widthOf{#1} 2 div \heightOf{#1} 2 div \widthOf{#1} 2 div \heightOf{#1} 2 div Draw_Ellipse 40 setlinewidth 0.4 0.7 1 setrgbcolor stroke grestore } \end{Verbatim} After clipping the image itself, and displaying the image, we then cover the image with an ellipse the same size, set the transparency to 40\% opacity and fill, giving the image a bluish haze. Next, draw the ellipse again and stroke it with a line 40 points wide. Give it an opacity of 50\%, so \texttt{AdobeDon} will shine through. \section{Special techniques for form appearances}\label{forms} In addition to using embedded graphics to display an image with \cs{includegraphics} or \cs{insertEPS}, these images can be used as appearances for form fields. Examples of a push button and checkbox can be found in the demo files, here reproduce the push button example. For this techniques, the eforms package is required. The forum support of hyperref may not support the \textbf{AP} key the way eforms does. In the preamble, we have \begin{Verbatim} \begin{createImage}{\bboxOf{myBestPic}}{nAdobeDon} [ {myBestPic} /SP pdfmark \end{createImage} \begin{createImage}{\bboxOf{myBestPic}}{rAdobeDon} [ /ca .5 /SetTransparency pdfmark [ {myBestPic} /SP pdfmark \end{createImage} \begin{createImage}{\bboxOf{myBestPic}}{dAdobeDon} [ /ca .3 /SetTransparency pdfmark [ {myBestPic} /SP pdfmark \end{createImage} \end{Verbatim} We use \cs{bboxOf} to set the bounding boxes to be the same as the original \texttt{myBestPic} image, and define a normal, rollover and down appearances for the button (\texttt{nAdobeDon}, \texttt{rAdobeDon} and \texttt{dAdobeDon}), respectively. We use various opacity settings for the appearances. The button code is \begin{Verbatim} \resizebox{.5in}{!}{\pushButton[% \autoCenter{n} \A{\JS{app.alert("AcroTeX rocks the world!"); this.dirty=false;}} \AP{/N {nAdobeDon} /D {dAdobeDon} /R {rAdobeDon}} ]{pbAdobeDon}{\widthOf{myBestPic}bp}{\heightOf{myBestPic}bp}} \end{Verbatim} See the eforms manual for details of these key-value pairs. Finally, the button looks like this: \resizebox{.5in}{!}{\pushButton[% \autoCenter{n} \A{\JS{app.alert("AcroTeX rocks the world!");this.dirty=false;}} \AP{/N {nAdobeDon} /D {dAdobeDon} /R {rAdobeDon}} ]{pbAdobeDon}{\widthOf{myBestPic}bp}{\heightOf{myBestPic}bp}} When using \textbf{SP} images for form fields in this way, the images \textbf{must always pass} through a \texttt{createImage} environment where the bounding boxes can be precisely set, in the verbatim listing above, note \verb!\bboxOf{myBestPic}! sets the bounding box. The reason you can't use an embedded image directly is that the embedded image has had its bounding box reset to an enormous value. See the documentation in graphicxsp.dtx for more details. The dimensions of the push button are the last two arguments of the \cs{pushButton} command and are set to \verb!\widthOf{myBestPic}bp! and \verb!\heightOf{myBestPic}bp!, (Note the use of the \texttt{bp} dimension.) We then resize this field using \cs{resizebox}! Very swave how the graphicx and \pkg{GraphicxSP} work together. \section{Tips} Since you are using distiller, you have Acrobat as well. Try using the PDF Optimizer (\texttt{Advanced > PDF Optimizer} menu) to further reduce the size of the file. If you have Acrobat Pro 8.0, you can do a Save As, by selecting Adobe PDF Files, Optimized from the Save as type list. This is the same as using the PDF Optimizer. An example of the savings is this manual, after distillation document size was 176.6 KB, after the PDF Optimizer was done, the file size was 113.6 KB. That's a reduction of 63 KB or that's a reduction of 38\,\%. For some of the demo files, the reduction is much more dramatic since the images are used and re-used many more times than in this document. \section{\texorpdfstring{\protect\pkg{GraphicxSP}}{GraphicxSP} example files} The example files can be found in the \texttt{examples} folder of the \pkg{GraphicxSP} distribution. They are \begin{itemize} \item \texttt{grxsp\_tst\_noaeb.tex}: General test file demonstrating SP graphics, does not require AeB (Acro\negthinspace\TeX{} eDucation Bundle). \item \texttt{grxsp\_tst\_aeb.tex}: Same as previous file, but using AeB. \item \texttt{grxsp\_comp\_noaeb.tex}: A comparison between graphicx \cs{includegraphics} and SP graphics. AeB not used. \item \texttt{grxsp\_comp\_aeb.tex}: Same as previous file, but AeB is used. \item \texttt{grxsp\_forms\_aeb.tex}: This file demonstrates using SP graphics as appearances of form fields. AeB required. \item \texttt{grxsp\_layers\_aebpro.tex}: Demonstrates the use of SP graphics with Optional Content Groups, or layers. AeB Pro required. \end{itemize} \noindent That's all for now, I simply must get back to my retirement. \dps \end{document}