Copy link to clipboard
Copied
I created postscript program to read and generate PDFD from line data stream
the PS routine just read the file from line one till the end , format and output the line .
It works well with file with 1000 up to 4,000 and suddenly when I encounter large file - up to 20,000 pages I had this error by distiller
Error: limitcheck; OffendingCommand: def
def is the postscript part used as /VAR xxx def etc
So it is built in PS command.
Why suddenly it is not accepted !!
I split the large files into two files and both ripped correct and the PDF generated by distiller.
I touhgt it is memory problem but I jhave 4 GB of ram!! and perhaps some internal memory allocation of PS !!!
Regards
Dr. Adam.
Copy link to clipboard
Copied
Check the following:
65,535 is the Maximum capacity of a dictionary, in key-value pairs (this seems generous for a well coded PostScript file) - Make sure you don't have a recursive or looping operator definition in your input file.
There is an input file size limit for Distiller and I think it is either 2 or 4 GBytes - Make sure your input file is smaller than the limit.
- Marvin
Copy link to clipboard
Copied
Unless you have a very old version of Distiller, you should not find any file size limitation at 2GB or 4GB.
- Dov
Copy link to clipboard
Copied
Dov,
I am running Distiller Server 6.0.1 - Is there a file size limitation with it?
- Marvin
Copy link to clipboard
Copied
Distiller 6? In our book, that is an ancient version. I believe all Acrobat components had file size limitations removed in Acrobat 7.
- Dov
Copy link to clipboard
Copied
Dov,
Does Adobe offer a "Distiller Server" license beyond 6.0.1? The key word here is "Server".
- Marvin
Copy link to clipboard
Copied
There is Distiller Server 8 (see http://www.adobe.com/products/acrdis/?promoid=DJDVN) which can be licensed. Future development and features for PDF creation via distillation of PostScript on a server will be via the Adobe LiveCycle® PDF Generator ES server product (see <http://www.adobe.com/products/livecycle/pdfgenerator/> for further details).
- Dov
Copy link to clipboard
Copied
I run distiller 10
There is one main loop to read each line and format it and the print it .
I even started the loop with clear and end it with cleartomark in order to ensure no leakage in memory
I don't build dictionary for parameters I use the user dictionary and stack !!!
If the error due to the limitation of 65 K dictionary size then it should be the user dictionary and number of variables and procedures saved there !!
If I build several user dictionaries perhaps I can avoid this error ?
Perhaps every time the loop advanced the more variables store into the dictionary !! when it is redfined
for example /VAR1 exch def
if this line executed once per loop , well the same variable - memory space was ovverite or simply additional version and space dedicated to it !! that is a question that might answer why I rich the 65K limitation.
Regards'
Dr. Adam
Copy link to clipboard
Copied
Dr. Adams,
The example code you posted - " /VAR exch def" could be the culprit due to the preceding object on the stack, how large or what type of object.
If you are willing to post (or email) a complete set of your processing code it would probably take the guess work out of it.
- Marvin
Copy link to clipboard
Copied
here is the main code
{
mark
currentfile 500 string readline
{
/MYLINE exch def'
/COUNTER COUNTER 1 add def
..
...
---
There are many /XXX mmmm def operators
}
{
exit
} ifelse
cleartomark
} loop
If the variable is overwritten more than once e.g /COUNTER'
Would that occupy double space ! or the Entepreter (here distiller V 10x) simply overwrite the value that was before !!! (I tried all options Standard , Press quality etc )
It seems every time I re-write /COUNTER the engine create new variable without removing the older one ! and that's why the the user dictionary run out of space quickly.
Copy link to clipboard
Copied
Dr. Adam,
The /MYLINE exch def' has a single quote at the end - is that a typo?
If the same dictionary (userdict) is the current dictionary then the redefinition of an operator should not use more memory unless the definition itself consumes more memory. In your example "/COUNTER COUNTER 1 add def" statement I believe the value of COUNTER is going to use the same memory space for the integer whether the value is 0 or the maximum 2**32 - 1.
If your string length of 500 characters was too short to contain a complete readline including end-of-line chars, then you would get a rangecheck error, so the file you are gettting your data from must not be exceeding this.
Is there a reason that you aren't setting up all your operators in a procedure that is called like this and placed directly in front of the data to parse?:
/ITER {/COUNTER COUNTER 1 add} def
/ProcessStd { {markcurrentfile 500 string readline {/MYLINE exch def ITER}{exit}ifelse cleartomark}loop } def
ProcessStd
......
......
......
...end-of-file
Without seeing if you remapped currentfile it appears that the readline is going to read in "{" first and then "/MYLINE exch def" second, etc. etc., so I would recommend using the example I wrote above instead and see if that fixes the problem.
- Marvin
Copy link to clipboard
Copied
yes the quote it is mistyping
Well this is what I expect but I wanted to be sure that PS engine would not double the memory upon definition of the same variable.
Get ready! An upgraded Adobe Community experience is coming in January.
Learn more