Re: How to put batch process into background on Mac OS

2008-02-22 Thread Terry Ofner
A little over a month ago I switched from running fop using a shell  
script to using ant, as per Eric Vought's suggestion copied below.  
Today I ran into a strange file-naming issue.


I am processing multiple files based on state and grade level. The  
PDFs will eventually end up on a Web site. I asked the Web master how  
she wanted the files named. She gave me this format (this would be  
for Illinois grade 3 file):


il_rex_corr_3.pdf

I converted my xml to fo using xsl:result-document so as to output  
fo files. So the above fo file was output as--

 il_rex_corr_3.fo

I ran my ant process against the folder of grade 3 fo files with no  
hitch. When I went to run the grade 4 files, I received this error:



$  /Applications/apache-ant-1.7.0/bin/ant
Buildfile: build.xml

make_pdf:
  [fop] /Users/home/Active_Documents/00Standards_Based_Kits/ 
Correlation_Confabulators/G4Finalxml/fo_files/.fo - /Users/home/ 
Active_Documents/00Standards_Based_Kits/Correlation_Confabulators/ 
G4Finalxml/pdf_files/.pdf

  [fop] [Fatal Error] :-1:-1: Premature end of file.
  [fop] Feb 22, 2008 10:56:05 AM org.apache.fop.cli.InputHandler  
error
  [fop] SEVERE: javax.xml.transform.TransformerException:  
Premature end of file.


BUILD FAILED
/Users/home/Active_Documents/00Standards_Based_Kits/ 
Correlation_Confabulators/G4Finalxml/build.xml:25:  
javax.xml.transform.TransformerException:  
org.xml.sax.SAXParseException: Premature end of file.



There were two differences between the grade 3 and grade 4 runs.

a) they were launched from different directories, and
b) the file names were numbered differently: '4' in place of the  
'3' (il_rex_corr_4.fo)


I finally got the ant/fop process to run by adding a '4' to the  
include line in the build.xml:


old build:

target name=make_pdf
description=Generates multiple PDF files
   fop format=application/pdf
outdir=${build.dir} messagelevel=debug
fileset dir=${source.dir}
   include name=*.fo/
/fileset
   /fop
/target

New build:

target name=make_pdf
description=Generates multiple PDF files
   fop format=application/pdf
outdir=${build.dir} messagelevel=debug
fileset dir=${source.dir}
   include name=*4.fo/
/fileset
   /fop
/target

I wonder:

a) Is it not such a good idea to end a basefile name with a number?
b) Is there some sort of cache memory in either ant or fop that  
refused to see the 4 in place of the 3?


??

Terry


On Jan 3, 2008, at 5:38 PM, Eric Vought wrote:





If you are doing that much formatting, you may really want to check  
out using ant for your build process, especially if doing multiple  
output formats. I use this on Mac OS X and have no problem with  
background running or anything else. My rule for PDF formatting is  
just:


  target name=pdf depends=-fo description=Produce the PDF
fop format=application/pdf basedir=${formatdir}
  fofile=${formatdir}/${basename}.fo
  outfile=${formatdir}/${basename}.pdf/
  /target

It is easy to adapt this to use a glob rule to build a list of  
files to format and I also have my process automatically validate  
DocBook inputs, produce single file and chunked HTML, ODF, convert  
graphics files from SVG as necessary, automatically check dates to  
only format what is needed, zip the formatted files and graphics  
for distribution,  clean up the working directories, and even do  
some dependency tracking on what versions of DocBook, the XSLT  
stylesheets, fop and other libraries I am using for a particular  
document so I don't have trouble when I check out an old one from  
version control. I have a template build file I include for each  
project and then customize. It took me a good bit of work to set up  
the environment but has been very easy to maintain.


This is not a huge matter. More on the line of an annoyance. And I  
may need to take this question to a java list rather than this  
list. If so, just point me in the right direction.


At any rate, I have an XSLT stylesheet that produces 50+ separate  
fo documents. I then run the shell script below to batch produce  
the pdf documents:


#!/bin/sh
for foo in *.fo
do
state=`basename $foo .fo`
/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf
done

When I run this script on my Mac (OS X 10.4.11, java version  
1.5.0_13 fop-0.94), org.apache.fop.cli.main takes control of the  
desktop, stopping whatever it is I am doing for about 5 seconds. I  
gain control again for about 5 seconds until fop pumps out another  
pdf document. I basically have to step away from the computer for  
the 8 minutes that the batch process takes. Adding  and wait to  
the main line of the script does not seem to work:


/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf 
wait
done

The first script above on Ubuntu linux runs in the background  
without interrupting other running process.


Any simple solutions?

Terry Ofner




Sincerely,

Eric

Re: How to put batch process into background on Mac OS

2008-01-04 Thread Terry Ofner
Thanks for the ant tip Eric. The following build.xml does the trick  
for the fop part of my process. I notice that the process is much  
faster: 1 minute 45 seconds for 52 pdf documents. Before it was  
taking anywhere from 8 to 11 minutes.


Here is my build.xml file:

?xml version=1.0 encoding=ISO-8859-1?
project name=MyTask basedir=. default=generate-multiple-pdf

property name=fop.home value=/Applications/fop-0.94/
property name=build.dir value=pdf_files/
property name=source.dir value=fo_files/

taskdef name=fop
 classname=org.apache.fop.tools.anttasks.Fop
  classpath
fileset dir=${fop.home}/lib
  include name=*.jar/
/fileset
fileset dir=${fop.home}/build
  include name=fop.jar/
  !--include name=fop-hyph.jar /--
/fileset
  /classpath
/taskdef
target name=generate-multiple-pdf
description=Generates multiple PDF files
   fop format=application/pdf
outdir=${build.dir} messagelevel=debug
fileset dir=${source.dir}
   include name=*.fo/
/fileset
   /fop
/target
/project

I have not studied how to include the XSLT transformation. Here is  
how it would go:


source XML document xslt transform via saxon (xslt 2.0) --- 50 
+ .fo documents ---fop---50+ pdf documents.


The xslt automatically produces the 50 fo docs via xsl:result- 
document. Would all this go into one build.xml? If so, would I just  
call the xslt task first then call the generate_multiple-pdf task?


I am not sure that I need to bundle this all together. But it might  
make my life easier.


Thanks again,

Terry

On Jan 3, 2008, at 5:38 PM, Eric Vought wrote:





If you are doing that much formatting, you may really want to check  
out using ant for your build process, especially if doing multiple  
output formats. I use this on Mac OS X and have no problem with  
background running or anything else. My rule for PDF formatting is  
just:


  target name=pdf depends=-fo description=Produce the PDF
fop format=application/pdf basedir=${formatdir}
  fofile=${formatdir}/${basename}.fo
  outfile=${formatdir}/${basename}.pdf/
  /target

It is easy to adapt this to use a glob rule to build a list of  
files to format and I also have my process automatically validate  
DocBook inputs, produce single file and chunked HTML, ODF, convert  
graphics files from SVG as necessary, automatically check dates to  
only format what is needed, zip the formatted files and graphics  
for distribution,  clean up the working directories, and even do  
some dependency tracking on what versions of DocBook, the XSLT  
stylesheets, fop and other libraries I am using for a particular  
document so I don't have trouble when I check out an old one from  
version control. I have a template build file I include for each  
project and then customize. It took me a good bit of work to set up  
the environment but has been very easy to maintain.


This is not a huge matter. More on the line of an annoyance. And I  
may need to take this question to a java list rather than this  
list. If so, just point me in the right direction.


At any rate, I have an XSLT stylesheet that produces 50+ separate  
fo documents. I then run the shell script below to batch produce  
the pdf documents:


#!/bin/sh
for foo in *.fo
do
state=`basename $foo .fo`
/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf
done

When I run this script on my Mac (OS X 10.4.11, java version  
1.5.0_13 fop-0.94), org.apache.fop.cli.main takes control of the  
desktop, stopping whatever it is I am doing for about 5 seconds. I  
gain control again for about 5 seconds until fop pumps out another  
pdf document. I basically have to step away from the computer for  
the 8 minutes that the batch process takes. Adding  and wait to  
the main line of the script does not seem to work:


/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf 
wait
done

The first script above on Ubuntu linux runs in the background  
without interrupting other running process.


Any simple solutions?

Terry Ofner




Sincerely,

Eric Vought

Deserves Death? I daresay he does. Many who live deserve death.  
Many who die deserve life. Can you give it to them, Frodo? Do not  
be so quick to deal death in the name of justice. Even the very  
wise cannot see all ends. -- Gandalf the Grey





-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



How to put batch process into background on Mac OS

2008-01-03 Thread Terry Ofner
This is not a huge matter. More on the line of an annoyance. And I  
may need to take this question to a java list rather than this list.  
If so, just point me in the right direction.


At any rate, I have an XSLT stylesheet that produces 50+ separate fo  
documents. I then run the shell script below to batch produce the pdf  
documents:


#!/bin/sh
for foo in *.fo
do
state=`basename $foo .fo`
/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf
done

When I run this script on my Mac (OS X 10.4.11, java version  
1.5.0_13 fop-0.94), org.apache.fop.cli.main takes control of the  
desktop, stopping whatever it is I am doing for about 5 seconds. I  
gain control again for about 5 seconds until fop pumps out another  
pdf document. I basically have to step away from the computer for the  
8 minutes that the batch process takes. Adding  and wait to the main  
line of the script does not seem to work:


/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf 
wait
done

The first script above on Ubuntu linux runs in the background without  
interrupting other running process.


Any simple solutions?

Terry Ofner

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How to put batch process into background on Mac OS

2008-01-03 Thread Terry Ofner
nice does not seem to change the outcome. It only changes the  
priority of the process. When it runs, it still places fop in the  
foreground. Here is what I have tried:


nice /Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf 
nice -n 20 /Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/ 
$state.pdf 


I have also added  at the command line:

./createPDF.sh 

Any other options?




On Jan 3, 2008, at 11:36 AM, Steve Quirk wrote:



Use 'nice' to run it.  Alter the script so that the fop execution  
looks like:


nice /Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf

You can check the man page for nice for more info.

Steve

On Thu, 3 Jan 2008, Terry Ofner wrote:

This is not a huge matter. More on the line of an annoyance. And I  
may need to take this question to a java list rather than this  
list. If so, just point me in the right direction.


At any rate, I have an XSLT stylesheet that produces 50+ separate  
fo documents. I then run the shell script below to batch produce  
the pdf documents:


#!/bin/sh
for foo in *.fo
do
state=`basename $foo .fo`
/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf
done

When I run this script on my Mac (OS X 10.4.11, java version  
1.5.0_13 fop-0.94), org.apache.fop.cli.main takes control of the  
desktop, stopping whatever it is I am doing for about 5 seconds. I  
gain control again for about 5 seconds until fop pumps out another  
pdf document. I basically have to step away from the computer for  
the 8 minutes that the batch process takes. Adding  and wait to  
the main line of the script does not seem to work:


/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf 
wait
done

The first script above on Ubuntu linux runs in the background  
without interrupting other running process.


Any simple solutions?

Terry Ofner

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: fop-users- 
[EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How to put batch process into background on Mac OS

2008-01-03 Thread Terry Ofner

James,

Your suggestion works. I have no idea where the vm arguments are in  
the fop script. So I changed my script to invoke the jar directly,  
adding the headless argument. I had to move all the jar files in fop/ 
lib to the build directory to get this to work:


java -Djava.awt.headless=true -jar /Applications/fop-0.94/build/ 
fop.jar -fo $foo -pdf ../pdf_files/$state.pdf


Thanks for the tip.

Terry

On Jan 3, 2008, at 12:35 PM, James Howard wrote:

Actually that probably won't do what you want.  Adding - 
Djava.awt.headless=true to the vm arguments in the fop script  
probably will work.


On Jan 3, 2008, at 8:36 AM, Steve Quirk [EMAIL PROTECTED] wrote:



Use 'nice' to run it.  Alter the script so that the fop execution  
looks like:


nice /Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf

You can check the man page for nice for more info.

Steve

On Thu, 3 Jan 2008, Terry Ofner wrote:

This is not a huge matter. More on the line of an annoyance. And  
I may need to take this question to a java list rather than this  
list. If so, just point me in the right direction.


At any rate, I have an XSLT stylesheet that produces 50+ separate  
fo documents. I then run the shell script below to batch produce  
the pdf documents:


#!/bin/sh
for foo in *.fo
do
state=`basename $foo .fo`
/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf
done

When I run this script on my Mac (OS X 10.4.11, java version  
1.5.0_13 fop-0.94), org.apache.fop.cli.main takes control of  
the desktop, stopping whatever it is I am doing for about 5  
seconds. I gain control again for about 5 seconds until fop pumps  
out another pdf document. I basically have to step away from the  
computer for the 8 minutes that the batch process takes. Adding   
and wait to the main line of the script does not seem to work:


/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf 
wait
done

The first script above on Ubuntu linux runs in the background  
without interrupting other running process.


Any simple solutions?

Terry Ofner

 
-

To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: fop-users- 
[EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: fop-users- 
[EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: How to put batch process into background on Mac OS

2008-01-03 Thread Terry Ofner

Steve,

Yep. That works too. On 0.94 the fop_exec_command is near the bottom  
of the fop script and looks like this:


fop_exec_command=exec \$JAVACMD\ -Djava.awt.headless=true  
$LOGCHOICE $LOGLEVEL -classpath \$LOCALCLASSPATH\ $FOP_OPTS  
org.apache.fop.cli.Main $fop_exec_args


Note: The -Djava.awt.headless=true was originally missing.

The only problem with changing the fop script is that it will only  
impact my installation. If I ever pass this process off to someone  
else (or update my version of fop), I will have to remember to change  
the exec command. I suppose that I would have to mess with something  
either way. (I would have to move all the jar files to the build  
directory.)


Either way, all is well now.

Thanks.

Terry




On Jan 3, 2008, at 1:14 PM, Steve Quirk wrote:



I had looked at the fop script I had and saw it there.  I wasn't  
sure that I had made the change or not.  In any case, if it's  
helpful, it should look like:


fop_exec_command=exec \$JAVACMD\ ${ENDORSED} - 
Djava.awt.headless=true $LOGCHOICE $LOGLEVEL -classpath  
\$LOCALCLASSPATH\ $FOP_OPTS org.apache.fop.cli.Main $fop_exec_args


(I'm using 0.93, so it might be slightly different).

That should avoid any icons or desktop interaction.

steve

On Thu, 3 Jan 2008, James Howard wrote:

Actually that probably won't do what you want.  Adding - 
Djava.awt.headless=true to the vm arguments in the fop script  
probably will work.


On Jan 3, 2008, at 8:36 AM, Steve Quirk [EMAIL PROTECTED] wrote:

Use 'nice' to run it.  Alter the script so that the fop execution  
looks like:
nice /Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/ 
$state.pdf

You can check the man page for nice for more info.
Steve
On Thu, 3 Jan 2008, Terry Ofner wrote:
This is not a huge matter. More on the line of an annoyance. And  
I may need to take this question to a java list rather than this  
list. If so, just point me in the right direction.
At any rate, I have an XSLT stylesheet that produces 50+  
separate fo documents. I then run the shell script below to  
batch produce the pdf documents:

#!/bin/sh
for foo in *.fo
do
state=`basename $foo .fo`
/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf
done
When I run this script on my Mac (OS X 10.4.11, java version  
1.5.0_13 fop-0.94), org.apache.fop.cli.main takes control of  
the desktop, stopping whatever it is I am doing for about 5  
seconds. I gain control again for about 5 seconds until fop  
pumps out another pdf document. I basically have to step away  
from the computer for the 8 minutes that the batch process  
takes. Adding  and wait to the main line of the script does not  
seem to work:

/Applications/fop-0.94/fop -fo $foo -pdf ../pdf_files/$state.pdf 
wait
done
The first script above on Ubuntu linux runs in the background  
without interrupting other running process.

Any simple solutions?
Terry Ofner
--- 
--
To unsubscribe, e-mail: fop-users- 
[EMAIL PROTECTED]
For additional commands, e-mail: fop-users- 
[EMAIL PROTECTED]
 
-

To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: fop-users- 
[EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: fop-users- 
[EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]