trying to script a command line

Craig White craigwhite at azapple.com
Tue Mar 4 22:31:57 MST 2008


pdftk isn't all that friendly towards scripting...I'll say that much.

I am going to work on this tomorrow...but to give you some feedback -
and I appreciate all of the thinking that you did on this..

$ cat I-A-files.txt | sed 's/ /\\ /g' | xargs cat | pdftk - output
I-A.pdf verbose

result, only last pdf in list was inserted in output file

$ cat I-A-files.txt |xargs -i pdftk "{}" cat output I-A.pdf verbose
-sh-3.2$ FILES=`cat file.txt | sed 's/ /\\ /g' |xargs`; pdftk $FILES cat
output I-a.pdf
cat: file.txt: No such file or directory
Error: No input files.  Exiting.
Errors encountered.  No output created.
Done.  Input errors, so no output created.

$ mkdir temp; IFS=$'\n'; for file in `cat I-A-files.txt | sed
's/ /\ /g'`; do cp -v "$file" temp; done; cd temp; pdftk *.pdf cat
output ../I-a.pdf verbose ; unset IFS

This last one sort of worked...It's fixable/workable anyway.

Imagine publishing a book that is 400+ pages all separate Microsoft Word
documents (now being converted to OpenOffice, adding form elements and
then exporting into single page PDF documents...and I'm trying to script
the collection into a single PDF book. Nothing about this has been easy.

Thanks Charles

Craig

On Tue, 2008-03-04 at 20:53 -0700, Charles Jones wrote:
> Ahh yeah...can't believe I didn't think of that.  BTW, for pdftk,
> "cat" is a command line option, not referring to the cat we know and
> love.
> 
> I think the final ver of the command would be:
> 
> cat I-A-files.txt |xargs -i pdftk "{}" cat output I-A.pdf verbose
> 
> Okay...my head hurts now :)
> 
> -Charles
> 
> Erich Newell wrote: 
> > xargs has additional flexibility...try using the "replace string"
> > parameter
> > 
> > So do:
> > 
> > cat list.txt | xargs -i cat "{}" | pdftk output - 
> > 
> > The curly braces indicate where the input goes...in this case,
> > between the quotes. Should handle those pesky spaces for you.
> > 
> > Looks like this will dump a ton of pdf content to stdout....is that
> > what you really want?
> > 
> > 
> > 
> > 
> > On Tue, Mar 4, 2008 at 7:22 PM, Craig White <craigwhite at azapple.com>
> > wrote:
> >         Again, that works but it fails because the PDF includes on
> >         the last file. As I said, I don't think an xargs thing is
> >         going to work at all because as the man page states...the
> >         '-' option is to pass only a single file via stdin.
> >         
> >         Craig
> >         
> >         On Tue, 2008-03-04 at 19:10 -0700, Charles Jones wrote:
> >         > Ah those darn spaces sure cause problems :)  Give this a
> >         try:
> >         >
> >         > $ cat I-A-files.txt | sed 's/ /\\ /g' | xargs cat | pdftk
> >         - output
> >         > I-a.pdf verbose
> >         >
> >         > It works for my test case:
> >         > $ cat file.txt
> >         > file with spaces
> >         > some other file
> >         >
> >         > $ cat "file with spaces"
> >         > This is the contents of a file with spaces
> >         > $ cat some\ other\ file
> >         > This is some other file
> >         >
> >         > $ cat file.txt | sed 's/ /\\ /g' |xargs cat
> >         > This is the contents of a file with spaces
> >         > This is some other file
> >         >
> >         > Probably a more elegant way to do it, but I'm late for
> >         dinner :-)
> >         >
> >         > -Charles
> >         >
> >         >
> >         > Craig White wrote:
> >         > > That doesn't seem to work. I quoted the part of the man
> >         page that the
> >         > > '-' is used to pass only a single PDF into pdftk via
> >         stdin and thus the
> >         > > xargs thing seems not to fly.
> >         > >
> >         > > $ cat I-A-files.txt | xargs -0 pdftk cat output I-A.pdf
> >         verbose
> >         > > Error: No input files.  Exiting.
> >         > > Errors encountered.  No output created.
> >         > > Done.  Input errors, so no output created.
> >         > >
> >         > > Thanks
> >         > >
> >         > > Craig
> >         > >
> >         > > On Tue, 2008-03-04 at 17:24 -0700, Charles Jones wrote:
> >         > >
> >         > >> Give this a try:
> >         > >>
> >         > >> cat /path/to/filenames_file.xt |xargs pdftk
> >         > >>
> >         > >> -Charles
> >         > >>
> >         > >> Craig White wrote:
> >         > >>
> >         > >>> I have an awkward situation with pdftk
> >         > >>>
> >         > >>> I have a file with filenames that I want to pass to
> >         pdftk as input
> >         > >>> files.
> >         > >>>
> >         > >>> according to the man page...
> >         > >>> <input PDF files | - | PROMPT>
> >         > >>>   A list of the input PDF files. If you plan to
> >         combine these PDFs
> >         > >>>   (without using handles) then list files in the
> >          order  you  want
> >         > >>>   them combined.  Use - to pass a single PDF into
> >         pdftk via stdin.
> >         > >>>
> >         > >>> and thus, this doesn't work...
> >         > >>>
> >         > >>> pdftk `cat "/mypath/to/I-A-files.txt"` cat output
> >         I-A.pdf verbose
> >         > >>>
> >         > >>> fails on spaces within the paths/filenames in that
> >         file.
> >         > >>>
> >         > >>> I have tried both escaping the spaces with \ and
> >         enclosing each path
> >         > >>> within a double quote but neither works.
> >         > >>>
> >         > >>> I have also tried (which fails)...
> >         > >>>
> >         > >>> $ cat "/mypath/to/I-A-files.txt" | pdftk - cat output
> >         I-A.pdf verbose
> >         > >>> Error: Failed to open PDF file:
> >         > >>>    -
> >         > >>> Errors encountered.  No output created.
> >         > >>> Done.  Input errors, so no output created.
> >         > >>> sh-3.2$ ls -l
> >         > >>> total 4440
> >         > >>> -rw-r--r-- 1 craig administrative      10 2008-03-04
> >         15:15 doc_toc.html
> >         > >>> -rw-r--r-- 1 craig administrative    1898 2008-03-04
> >         15:30 I-A-files.txt
> >         > >>>
> >         > >>> Any suggestions on this?
> >         > >>>
> >         > >>> T
> >         > > ---------------------------------------------------
> >         > > PLUG-discuss mailing list -
> >         PLUG-discuss at lists.plug.phoenix.az.us
> >         > > To subscribe, unsubscribe, or to change your mail
> >         settings:
> >         > >
> >         http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
> >         > >
> >         >
> >         > ---------------------------------------------------
> >         > PLUG-discuss mailing list -
> >         PLUG-discuss at lists.plug.phoenix.az.us
> >         > To subscribe, unsubscribe, or to change your mail
> >         settings:
> >         >
> >         http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
> >         
> >         ---------------------------------------------------
> >         PLUG-discuss mailing list -
> >         PLUG-discuss at lists.plug.phoenix.az.us
> >         To subscribe, unsubscribe, or to change your mail settings:
> >         http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
> >         
> > 
> > 
> > 
> > -- 
> > "A man is defined by the questions that he asks; and the way he goes
> > about finding the answers to those questions is the way he goes
> > through life."
> > 
> > ____________________________________________________________________
> > 
> > ---------------------------------------------------
> > PLUG-discuss mailing list - PLUG-discuss at lists.plug.phoenix.az.us
> > To subscribe, unsubscribe, or to change your mail settings:
> > http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
> 
> ---------------------------------------------------
> PLUG-discuss mailing list - PLUG-discuss at lists.plug.phoenix.az.us
> To subscribe, unsubscribe, or to change your mail settings:
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss



More information about the PLUG-discuss mailing list