OEM Software
With Photoshop, you can pretty much do almost anything.� In essence, you're playing god of the computer art world, creating and editing whatever suites your taste.� If you want to play Zeus, then here are the steps to create lightning by using the tools that were already programmed in Photoshop.
Step 1: Making Clouds
You can't have lightning unless you got clouds, same in Photoshop.� First, create a new layer and name it Lightning.� You can name it whatever you want, but Lightning seems to be the most logical in this case.� Second, make sure your foreground and background colors are set to default, black and white, respectively.� This can be done manually, or you can just press D.� This is the same for both PC and Mac.
Once the colors are set to default, go to the Filter menu at the top of the window and choose Render, then Clouds.
Step 2:� Make More Clouds
Now, one cloud won't just create lightning, it's pretty harmless.� Again, same in Photoshop.� This time, instead of rendering another cloud, go back to Filter, Render, and then Difference Clouds.� Once that is done, go to the Image menu at the top of the window and select Adjust, then Invert.� This should result in something that looks like lightning.
Step 3: Finishing Touches
To finish, double click on the empty area to the right of the layer name, and then pull in the upper-left slider.� You'll want to split the sliders by holding down the Option key for Mac users and the Alt key for PC users.� The right half of the slider should be moved all the way to the right edge.� Next, grab the left edge of the slider and start moving to the right until you are satisfied with the look of the lightning.� To have an idea of how far you need to move it to begin making it look like lightning, you're going to have to move the slider almost all the way to the right as well.
As with Photoshop and many problems of life, there are multiple solutions and multiple paths.� This is just one of many ways to make lightning in Photoshop.� Fiddle around with this method and also combine it with other methods that you already know to make this lightning look more realistic.� After all, creating art is like magic, you can't give away all your secrets.
Permissions
Properties that specify the actions that are available to users when the new policy is applied to a document.
Permissions for the Policy
(Optional) A list of string values that represent the permissions to add to the new policy.
If you provide a literal value, configure the following properties:
- Print: Permissions for printing the policy-protected document. Select one of the following permissions:
- Allowed: (Default) Allow users to print high- or low-resolution copies.
- Low-Res. Only: Allow users to print only low-resolution copies.
- Not Allowed: Users cannot print the document.
- Change: Permissions for changing the document. Select one of the following permissions:
- Alter Pages: Allow users to add pages, remove pages, and make changes to content.
- Any: (Default) Users can change the document in any way.
- Collaborate: Allow users to use the Collaborate features in Adobe Acrobat.
- Fill And Sign: Allow users to fill form fields, and digitally sign signature fields.
- Not Allowed: Users cannot change the document.
- Offline: Select this option to allow users to open the document when they do not have a connection to the LiveCycle ES2 server. This option is selected by default.
- Copy: Select this option to allow users to copy text from the document. This option is selected by default.
- Screen Reader: Adobe Acrobat has permission to add temporary tags to the PDF to improve its readability with a screen reader. This option is selected by default. You can clear this option only when the Copy option is not selected.
If you specify the value for Permissions using a variable, the variable is a list of string values. Each string value represents a permission. The following string values are valid:
- APS_OPEN_ONLINE: Allows users to open the document when they have a connection to the LiveCycle ES2 server.
- APS_OPEN_OFFLINE: Allows users to open the document when they do not have a connection to the LiveCycle ES2 server.
- PDF_ACCESSIBLE: Allows Acrobat to add temporary tags to the PDF to improve its readability with a screen reader.
- PDF_COPY: Allows users to copy text from the document.
- PDF_DOCASSEMBLY: Allow users to add pages, remove pages, and make changes to content.
- PDF_EDIT: Users can change the document in any way.
- PDF_EDITNOTES: Allow users to use the Collaborate features in Adobe Acrobat.
- PDF_FILLANDSIGN: Allow users to fill form fields, and digitally sign signature fields.
- PDF_PRINTLOW: Allow users to print low-resolution copies.
- PDF_PRINTHIGH: Allow users to print high-resolution copies.
Only certain combinations of the string values are valid. Limited combinations of print-related strings can be used. Limited combinations of editing-related strings can be included.
The following combinations of print-related permissions (PDF_PRINTHIGH and PDF_PRINTLOW) are valid:
- PDF_PRINTHIGH, PDF_PRINTLOW
- PDF_PRINTLOW
The following combinations of editing-related permissions ( PDF_EDITNOTES,
PDF_EDIT, PDF_FILLANDSIGN, PDF_DOCASSEMBLY) are valid:
- PDF_EDITNOTES, PDF_EDIT, PDF_FILLANDSIGN
- PDF_EDITNOTES, PDF_FILLANDSIGN
- PDF_DOCASSEMBLY
- PDF_FILLANDSIGN
For example, to enable high-resolution printing, filling form fields, and offline viewing, the list would include the string values PDF_PRINTHIGH, PDF_PRINTLOW, PDF_FILLANDSIGN, APS_OPEN_OFFLINE, APS_OPEN_ONLINE . When an invalid combination of strings is included, an exception is thrown.
When no list value is provided or an empty list value is provided, the default values are used. The equivalent list would contain the string values PDF_PRINTLOW, PDF_PRINTHIGH, PDF_EDIT, PDF_EDITNOTES, PDF_FILLANDSIGN, PDF_ACCESSIBLE, PDF_COPY, APS_OPEN_ONLINE .
How Big and Complex can you make your form?
I get asked this question often. Customers or partners develop very complex or large dynamic forms with many pages and large amounts of script. At what point do we cross the line and reach a level of complexity where Reader/PDF is no longer the right tool for the job?
There is no easy answer. The answer will be different for different users. But it is helpful to look at some of the stress points you’ll encounter with large forms.
Note that these notes apply to forms opened in Acrobat/Reader. The stress points for forms rendered on the server are much different.
- Number of pages to render
- File Size
- Script size, complexity and development methodology
- Script performance
Number of pages to render
One of the great properties of regular PDF files is that the file open time is constant no matter how large the PDF. The time to open a two thousand page PDF is pretty much the same as for a one page PDF. This is because Reader doesn’t load the whole PDF into memory and doesn’t read the bytes for page <n> until the user navigates to page <n>.
Dynamic XFA/PDF forms offer a different value proposition. The pages are shaped at form open time by the form data. Of course, there are great advantages to dynamic forms. But there are also associated processing costs. At form open time the entire form definition is loaded into memory. The entire set of data is loaded and merged with the form template. Reader performs enough of the layout to determine how many pages will be rendered. Then when you navigate to page <n>, Reader renders that page from the in-memory structures.
How many pages can Reader handle for a dynamic document? This depends on the complexity of the template. I’ve seen five page forms that take forever to open. I’ve seen a hundred page form open in a second. The limit is more related to the density/complexity of template and data rather than the actual number of pages.
Some form authors attempt to reduce file open time by hiding inactive pages. This strategy was effective in reducing form open time in Acrobat/Reader 7. But in Reader 8.1 when the form open algorithm was improved, the ‘page hiding’ strategy no longer makes a significant difference.
File Size
Dynamic XFA/PDF forms tend to be smaller than static documents. This is because of the template property of forms. For example: a hundred page static PDF will have a hundred pages of PDF mark-up. Whereas in the dynamic case, this could be one page of XFA mark-up that gets replicated a hundred times when merged with data. The latter will be a much smaller file. Nonetheless, dynamic documents can grow to the point where they begin to stress your system. The time to read and parse the documents happens very quickly – even for very large templates. However, the size of the template becomes more of a factor when there are security components in play. Operations such as Certification, Reader extensions and Signatures will perform comparison operations on ‘before-and-after’ versions of the form. The costs of these comparisons are proportionate to the size of the template.
So while there is no absolute threshold on file size, you will find the threshold is lower for certified/extended/signed forms.
Script size and complexity and development methodology
I have seen XFA/PDF files with tens of thousands of lines of JavaScript. Given that there is no debugger, you have to be pretty persistent to create this amount of script. If your big script library is well written, it may perform well enough, but the stress comes with the maintenance of the script:
- When you change the script, do you have the ability to rigorously test your changes? When you modify fields or subforms, will your script still work? Do you have test collateral that gives you code coverage for all the edge cases in your script? Do you have some form of automated testing? QTP anyone?
- Is your script maintainable? Or is the code ‘write-only’? Unless you have been disciplined in the creation of your library, you will have longer term maintenance issues when a new developer comes along to update an existing form.
- When you encounter problems with your script, are you able to isolate the problem when you ask for help? Your friends in our support organization are much better at solving problems with small, simple forms than with large, complex ones. If your script is modular and isolated into components then you’ll be able to ask for help much more easily than if your script is an inter-tangled mess.
- When you change script, do you preserve previous versions of your form? You need the ability to roll-back changes.
Again, there are no absolutes here, but if you want/need to write lots of script, you need to have the associated discipline in your development environment to make it maintainable.
Script performance
Large amounts of script do not necessarily imply poor performance. But poorly written script of any amount can kill form performance. A script that traverses the entire form hierarchy will have performance that is proportionate to the number of objects in the form. As the form grows, the script slows down. There are many 'best practises' for writing efficient script. It is very important to pay close attention to the contents of frequently executed loops.
Conclusion
But before you make a big investment in a form, make sure you consider the alternatives. You might be better off with a Flash form or an AIR application. If you choose Reader/PDF, the maximum size and complexity of your form depends primarily on your own tolerances. You need to decide whether the runtime experience is responsive enough. You need to decide if you are getting the return on investment for your cost to develop and maintain the form.
