Mike Shal skrev: > On 3/26/09, Erik <esi...@gmail.com> wrote: >> I need to generate a PDF-file from subdocuments. I have this Makefile: >> whole.pdf: 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf >> gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=$@ -dBATCH $^ >> >> The problem is that a subdocument may begin on the backside of the last >> page of the previous subdocument. This is bad if the printed document >> should be divided into subdocuments. Therefore I need to make sure that >> every subdocument begins on a new paper. A way to do this would be to >> insert an empty 1-page document (empty.pdf) after each document that has >> an odd number of pages: >> whole.pdf: 1.pdf 2.pdf 3.pdf empty.pdf 4.pdf 5.pdf 6.pdf 7.pdf empty.pdf >> 8.pdf empty.pdf 9.pdf >> gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=$@ -dBATCH $^ >> >> That is certainly not the right way to do it. It will fail if I change >> any subdocument so that its page count modulo 2 is changed. >> >> By using pdfinfo (in the poppler package) I can find out whether a >> particular PDF-file has an odd number of pages: >> echo $(pdfinfo file.pdf|egrep "^Pages: *[[:digit:]]+$"|sed "s...@^pages: >> *\([[:digit:]]\+\)\...@\1@")%2|bc >> >> But which is the right way to build that into the Makefile? > > Maybe you would be better off doing this in the shell rather than in > make?
I think make can do it just fine (I do not want to have another script file in the directory). I RTFM and wrote this, which seems to work: pagecount = $(shell pdfinfo $(1)|egrep "^Pages: *[[:digit:]]+"|sed "s...@^pages: *\([[:digit:]]\+\)@\1@") odd = $(shell echo $(pagecount)%2|bc|grep 1) filled = $(1) $(if $(call odd,$(1)),emptypage.pdf) whole.pdf: 1.pdf 2.pdf 3.pdf 4.pdf 5.pdf 6.pdf 7.pdf 8.pdf 9.pdf gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=$@ -dBATCH $(foreach x,$^,$(call filled,$x)) || rm -f $@ _______________________________________________ Help-make mailing list Help-make@gnu.org http://lists.gnu.org/mailman/listinfo/help-make