Posted to tcl by miguel at Sat Apr 23 16:00:50 GMT 2011view raw

  1. set inputFname /foo/bar/sum.pdf
  2. set outputFname /foo/bar/sum2.pdf
  3. set indicesFname /foo/bar/idxes
  4. set chunkSize 4000
  5. set pagemarker \f; #or whatever it is
  6.  
  7. set f [open $idxes]
  8. set idxdata [read $f]
  9. close $f
  10. # build a list of indices and replacements in idxlist/idxrepl
  11. set idxlist [....]
  12. set idxrepl [....]
  13. unset idxdata
  14.  
  15. set in [open $inputFname]
  16. set out [open $outputFname w]
  17.  
  18. set inbuf {}
  19. set i 0
  20. set idxused 0
  21.  
  22. while {![eof $in]} {
  23. append inbuf [read $in $chunkSize]
  24. set inlist [split $inbuf $pagemarker]
  25. if {![eof $in]} {
  26. set inbuf [lindex $inlist end]
  27. set inlist [lrange $inlist 0 end-1]
  28. } else {
  29. set pagemarker {}
  30. }
  31.  
  32. foreach page $inlist {
  33. while 1 {
  34. set found [regsub [lindex $idxlist $i] $page [lindex $idxrepl $i] page]
  35. if {$found} {
  36. set idxused 1
  37. } elseif {$idxused} {
  38. incr i
  39. set idxused 0
  40. continue
  41. }
  42. puts -nonewline $out $page$pagemarker
  43. break
  44. }
  45. }
  46. }

Comments

Posted by miguel at Sat Apr 23 16:03:08 GMT 2011 [text] [code]

untested not suntested ...