document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-104267\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"c1\">; Convert history of the internet printable wiki into PDF<\/span><\/div><div class=\"line\" id=\"LC2\"><span class=\"c1\">; source from http://www.nethistory.co.nz/index.php/Main_Page<\/span><\/div><div class=\"line\" id=\"LC3\">&nbsp;<\/div><div class=\"line\" id=\"LC4\"><span class=\"p\">(<\/span><span class=\"nf\">use<\/span> <span class=\"ss\">&#39;clojure<\/span><span class=\"o\">.<\/span><span class=\"nv\">contrib<\/span><span class=\"o\">.<\/span><span class=\"nv\">str-utils<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC5\"><span class=\"p\">(<\/span><span class=\"nb\">import <\/span><span class=\"o\">&#39;<\/span><span class=\"p\">(<\/span><span class=\"nv\">java<\/span><span class=\"o\">.<\/span><span class=\"nv\">io<\/span> <span class=\"nv\">ByteArrayInputStream<\/span> <span class=\"nv\">FileOutputStream<\/span> <span class=\"nv\">File<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC6\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"o\">&#39;<\/span><span class=\"p\">(<\/span><span class=\"nv\">javax<\/span><span class=\"o\">.<\/span><span class=\"nv\">xml<\/span><span class=\"o\">.<\/span><span class=\"nv\">parsers<\/span> <span class=\"nv\">DocumentBuilderFactory<\/span><span class=\"p\">))<\/span><\/div><div class=\"line\" id=\"LC7\"><span class=\"p\">(<\/span><span class=\"nb\">load-file <\/span><span class=\"s\">&quot;clj_web_crawler.clj&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC8\">&nbsp;<\/div><div class=\"line\" id=\"LC9\"><span class=\"p\">(<\/span><span class=\"nf\">System/setProperty<\/span> <span class=\"s\">&quot;xr.text.aa-fontsize-threshhold&quot;<\/span> <span class=\"s\">&quot;10&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC10\">&nbsp;<\/div><div class=\"line\" id=\"LC11\"><span class=\"p\">(<\/span><span class=\"k\">defn <\/span><span class=\"nv\">replace-all<\/span><\/div><div class=\"line\" id=\"LC12\">&nbsp;&nbsp;<span class=\"s\">&quot;A simple bulk regex replacement function.&quot;<\/span><\/div><div class=\"line\" id=\"LC13\">&nbsp;&nbsp;<span class=\"p\">[<\/span><span class=\"nv\">st<\/span> <span class=\"nv\">reps<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC14\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nb\">reduce <\/span><span class=\"o\">#<\/span><span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">replaceAll<\/span> <span class=\"nv\">%1<\/span> <span class=\"p\">(<\/span><span class=\"nb\">first <\/span><span class=\"nv\">%2<\/span><span class=\"p\">)<\/span> <span class=\"p\">(<\/span><span class=\"nb\">second <\/span><span class=\"nv\">%2<\/span><span class=\"p\">))<\/span> <span class=\"nv\">st<\/span> <span class=\"nv\">reps<\/span><span class=\"p\">))<\/span><\/div><div class=\"line\" id=\"LC15\">&nbsp;<\/div><div class=\"line\" id=\"LC16\"><span class=\"p\">(<\/span><span class=\"k\">defn <\/span><span class=\"nv\">file-name-for<\/span> <span class=\"p\">[<\/span><span class=\"nv\">page<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC17\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nb\">str <\/span><span class=\"s\">&quot;cache/&quot;<\/span> <span class=\"p\">(<\/span><span class=\"nf\">replace-all<\/span> <span class=\"nv\">page<\/span> <span class=\"p\">{<\/span><span class=\"s\">&quot;/&quot;<\/span> <span class=\"s\">&quot;_&quot;<\/span><span class=\"p\">})))<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;<\/div><div class=\"line\" id=\"LC19\"><span class=\"p\">(<\/span><span class=\"k\">defn <\/span><span class=\"nv\">get-cached-or<\/span> <span class=\"p\">[<\/span><span class=\"nv\">page<\/span> <span class=\"nv\">type<\/span> <span class=\"nv\">get-uncached-content-with<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC20\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"k\">let <\/span><span class=\"p\">[<\/span><span class=\"nv\">page-file<\/span> <span class=\"p\">(<\/span><span class=\"nb\">str <\/span><span class=\"p\">(<\/span><span class=\"nf\">file-name-for<\/span> <span class=\"nv\">page<\/span><span class=\"p\">)<\/span> <span class=\"s\">&quot;-&quot;<\/span> <span class=\"nv\">type<\/span><span class=\"p\">)]<\/span><\/div><div class=\"line\" id=\"LC21\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"k\">cond <\/span><span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">exists<\/span> <span class=\"p\">(<\/span><span class=\"nf\">File<\/span><span class=\"o\">.<\/span> <span class=\"nv\">page-file<\/span><span class=\"p\">))<\/span> <span class=\"p\">(<\/span><span class=\"nf\">do<\/span><\/div><div class=\"line\" id=\"LC22\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nb\">println <\/span><span class=\"s\">&quot;Reading cached page &quot;<\/span> <span class=\"nv\">page-file<\/span><span class=\"p\">)<\/span> <span class=\"p\">(<\/span><span class=\"nb\">slurp <\/span><span class=\"nv\">page-file<\/span><span class=\"p\">))<\/span><\/div><div class=\"line\" id=\"LC23\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nv\">:else<\/span> <span class=\"p\">(<\/span><span class=\"nf\">do<\/span><\/div><div class=\"line\" id=\"LC24\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"k\">let <\/span><span class=\"p\">[<\/span><span class=\"nv\">content<\/span> <span class=\"p\">(<\/span><span class=\"nf\">get-uncached-content-with<\/span> <span class=\"nv\">page<\/span><span class=\"p\">)]<\/span><\/div><div class=\"line\" id=\"LC25\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">write<\/span> <span class=\"p\">(<\/span><span class=\"nf\">FileOutputStream<\/span><span class=\"o\">.<\/span> <span class=\"nv\">page-file<\/span><span class=\"p\">)<\/span> <span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">getBytes<\/span> <span class=\"nv\">content<\/span> <span class=\"s\">&quot;UTF-8&quot;<\/span><span class=\"p\">))<\/span><\/div><div class=\"line\" id=\"LC26\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nb\">println <\/span><span class=\"s\">&quot;Saving cached page to &quot;<\/span> <span class=\"nv\">page-file<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC27\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"nv\">content<\/span><\/div><div class=\"line\" id=\"LC28\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">)))))<\/span><\/div><div class=\"line\" id=\"LC29\">&nbsp;<\/div><div class=\"line\" id=\"LC30\"><span class=\"p\">(<\/span><span class=\"k\">defn <\/span><span class=\"nv\">get-page<\/span> <span class=\"p\">[<\/span><span class=\"nv\">page<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC31\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">replace-all<\/span><\/div><div class=\"line\" id=\"LC32\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">clj-web-crawler/crawl-response<\/span> <span class=\"s\">&quot;http://www.nethistory.co.nz&quot;<\/span> <span class=\"p\">(<\/span><span class=\"nb\">str <\/span><span class=\"s\">&quot;/index.php/&quot;<\/span> <span class=\"nv\">page<\/span> <span class=\"s\">&quot;?printable=yes&quot;<\/span><span class=\"p\">))<\/span><\/div><div class=\"line\" id=\"LC33\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">{<\/span><span class=\"s\">&quot;(\\t|\\n)&quot;<\/span> <span class=\"s\">&quot;&quot;<\/span><span class=\"p\">}))<\/span><\/div><div class=\"line\" id=\"LC34\">&nbsp;<\/div><div class=\"line\" id=\"LC35\"><span class=\"p\">(<\/span><span class=\"k\">defn <\/span><span class=\"nv\">get-cached-page<\/span> <span class=\"p\">[<\/span><span class=\"nv\">page<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC36\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-cached-or<\/span> <span class=\"nv\">page<\/span> <span class=\"s\">&quot;raw&quot;<\/span> <span class=\"p\">(<\/span><span class=\"k\">fn <\/span><span class=\"p\">[<\/span><span class=\"nv\">page<\/span><span class=\"p\">]<\/span> <span class=\"p\">(<\/span><span class=\"nf\">get-page<\/span> <span class=\"nv\">page<\/span><span class=\"p\">))))<\/span><\/div><div class=\"line\" id=\"LC37\">&nbsp;<\/div><div class=\"line\" id=\"LC38\"><span class=\"p\">(<\/span><span class=\"k\">defn <\/span><span class=\"nv\">get-page-body<\/span> <span class=\"p\">[<\/span><span class=\"nv\">page<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC39\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nb\">first <\/span><span class=\"p\">(<\/span><span class=\"nb\">rest <\/span><span class=\"p\">(<\/span><span class=\"nf\">re-split<\/span> <span class=\"o\">#<\/span><span class=\"s\">&quot;(.*&lt;\\s*body[^&gt;]*&gt;)|(&lt;\\s*/\\s*body\\s*\\&gt;.+)&quot;<\/span> <span class=\"p\">(<\/span><span class=\"nf\">get-cached-page<\/span> <span class=\"nv\">page<\/span><span class=\"p\">)))))<\/span><\/div><div class=\"line\" id=\"LC40\">&nbsp;<\/div><div class=\"line\" id=\"LC41\"><span class=\"p\">(<\/span><span class=\"k\">defn <\/span><span class=\"nv\">strip-crap<\/span> <span class=\"p\">[<\/span><span class=\"nv\">page<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC42\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-cached-or<\/span> <span class=\"nv\">page<\/span> <span class=\"s\">&quot;stripped&quot;<\/span> <span class=\"p\">(<\/span><span class=\"k\">fn <\/span><span class=\"p\">[<\/span><span class=\"nv\">page<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC43\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">replace-all<\/span><\/div><div class=\"line\" id=\"LC44\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nb\">str <\/span><span class=\"p\">(<\/span><span class=\"nb\">first <\/span><span class=\"p\">(<\/span><span class=\"nf\">re-split<\/span> <span class=\"o\">#<\/span><span class=\"s\">&quot;&lt;!-- NewPP limit report&quot;<\/span> <span class=\"p\">(<\/span><span class=\"nf\">get-page-body<\/span> <span class=\"nv\">page<\/span><span class=\"p\">)))<\/span> <span class=\"s\">&quot;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC45\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">{<\/span><\/div><div class=\"line\" id=\"LC46\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"s\">&quot;&amp;nbsp;&quot;<\/span> <span class=\"s\">&quot;&amp;#160;&quot;<\/span><\/div><div class=\"line\" id=\"LC47\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"s\">&quot;&lt;h3 id=\\&quot;site.*/h3&gt;&quot;<\/span> <span class=\"s\">&quot;&quot;<\/span><\/div><div class=\"line\" id=\"LC48\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"s\">&quot;&lt;div id=\\&quot;jump-to-nav.*--&gt;&quot;<\/span> <span class=\"s\">&quot;&quot;<\/span><\/div><div class=\"line\" id=\"LC49\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"s\">&quot;&lt;p&gt;www.nethistory.co.nz&lt;/p&gt;&quot;<\/span> <span class=\"s\">&quot;&quot;<\/span><\/div><div class=\"line\" id=\"LC50\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"s\">&quot;&lt;p&gt;([A-Z&#39;\\\\./\\\\s\\\\?!]{4,})([A-Z&#39;\\\\./\\\\?!])&quot;<\/span> <span class=\"s\">&quot;&lt;h3&gt;$1&lt;/h3&gt;&lt;p&gt;$2&quot;<\/span><\/div><div class=\"line\" id=\"LC51\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"p\">}))))<\/span><\/div><div class=\"line\" id=\"LC52\">&nbsp;<\/div><div class=\"line\" id=\"LC53\"><span class=\"p\">(<\/span><span class=\"k\">def <\/span><span class=\"nv\">title<\/span> <span class=\"s\">&quot;Connecting the Clouds - The Internet in New Zealand&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC54\">&nbsp;<\/div><div class=\"line\" id=\"LC55\"><span class=\"p\">(<\/span><span class=\"k\">defn <\/span><span class=\"nv\">get-content<\/span> <span class=\"p\">[<\/span><span class=\"nv\">page<\/span><span class=\"p\">]<\/span><\/div><div class=\"line\" id=\"LC56\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nb\">str <\/span><span class=\"s\">&quot;&lt;div style=&#39;page-break-before: always;&#39;&gt;&lt;/div&gt;&quot;<\/span> <span class=\"p\">(<\/span><span class=\"nf\">strip-crap<\/span> <span class=\"nv\">page<\/span><span class=\"p\">)))<\/span><\/div><div class=\"line\" id=\"LC57\">&nbsp;<\/div><div class=\"line\" id=\"LC58\">&nbsp;<\/div><div class=\"line\" id=\"LC59\"><span class=\"p\">(<\/span><span class=\"k\">def <\/span><span class=\"nv\">content<\/span> <span class=\"p\">(<\/span><span class=\"nf\">str<\/span><\/div><div class=\"line\" id=\"LC60\">&nbsp;&nbsp;<span class=\"s\">&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;&quot;<\/span> <span class=\"nv\">title<\/span> <span class=\"s\">&quot;&lt;/title&gt;&quot;<\/span><\/div><div class=\"line\" id=\"LC61\">&nbsp;<\/div><div class=\"line\" id=\"LC62\">&nbsp;&nbsp;<span class=\"s\">&quot;&lt;style type=&#39;text/css&#39;&gt;&quot;<\/span><\/div><div class=\"line\" id=\"LC63\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nb\">slurp <\/span><span class=\"s\">&quot;history.css&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC64\">&nbsp;&nbsp;<span class=\"s\">&quot;&lt;/style&gt;&quot;<\/span><\/div><div class=\"line\" id=\"LC65\">&nbsp;<\/div><div class=\"line\" id=\"LC66\">&nbsp;&nbsp;<span class=\"s\">&quot;&lt;/head&gt;&lt;body&gt;&quot;<\/span><\/div><div class=\"line\" id=\"LC67\">&nbsp;&nbsp;<span class=\"c1\">;    &quot;&lt;div id=&#39;header&#39; style=&#39;&#39;&gt;&quot; title &quot;&lt;/div&gt;&quot;<\/span><\/div><div class=\"line\" id=\"LC68\">&nbsp;&nbsp;<span class=\"c1\">;    &quot;&lt;div id=&#39;footer&#39; style=&#39;&#39;&gt;Page &lt;span id=&#39;pagenumber&#39;/&gt; of &lt;span id=&#39;pagecount&#39;/&gt;&lt;/div&gt;&quot;<\/span><\/div><div class=\"line\" id=\"LC69\">&nbsp;&nbsp;<span class=\"s\">&quot;&lt;h1&gt;&quot;<\/span> <span class=\"nv\">title<\/span> <span class=\"s\">&quot;&lt;/h1&gt;&quot;<\/span><\/div><div class=\"line\" id=\"LC70\">&nbsp;&nbsp;<span class=\"s\">&quot;&lt;p&gt;Written by Keith Newman&lt;/p&gt;&quot;<\/span><\/div><div class=\"line\" id=\"LC71\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Preface&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC72\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_1_-_The_Tyranny_of_Distance_-_Reaching_out_to_the_World&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC73\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_2_-_Battling_with_Big_Iron_-_Unscrambling_the_Code&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC74\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_3_-_No.8_Wire_Networks_-_Patchwork_Quilt_of_Protocols&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC75\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_4_-_Nuclear_Free_Reforms_-_Nothing_is_What_it_Seems&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC76\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_5_-_Selling_the_Family_Jewels_-_Telecom_Holds_Back_the_Tide&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC77\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_6_-_Craving_for_Connection_-_Dawn_of_the_Dial-up_Community&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC78\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_7_-_Craving_for_Connection_II_-_The_Pioneering_ISPs&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC79\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_8_-_The_Rhythm_Method_-_Regulation_by_Litigation&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC80\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_9_-_Local_Loop_Languishing_-_Battling_Bandwidth_Blues&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC81\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_10_-_Diminished_Capacity_-_Whose_Foot_is_on_the_Hose%3F&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC82\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_11_-_Deluge_in_a_Paper_Cup_-_Knowledge_Wave_Wake-up&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC83\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_12_-_E-government_Lumbers_Online_-_Presenting_a_Public_Face&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC84\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_13_-_Clicks_and_Mortar_-_Beyond_Online_Pamphlets&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC85\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_14_-_Battle_of_the_Names_-_Taming_the_Domains&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC86\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_15_-_The_Proxy_Revolution_-_Changing_of_the_Guard&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC87\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_16_-_Cyberspace_Junk_-_Nailing_Net_Nasties&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC88\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_17_-_Bitstream_Boundaries_-_Sorting_out_Speed_Bumps&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC89\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_18_-_Download_Culture_-_Infotainment_on-Demand&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC90\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_19_-_Mobile_Momentum_-_Weaned_off_the_Wires&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC91\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_20_-_Digital_Refresh_Required_-_Government_Learns_to_Share&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC92\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_21_-_Broadband_Breakthrough_-_The_Battle_to_Unbundle&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC93\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_22_-_In_the_Recovery_Room_-_Remedial_Learning_Required&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC94\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_23_-_IP_Channel_Surfing_-_Digital_Vision_Evolving&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC95\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_24_-_Leaping_the_Loop_-_Cloud_Cover_Continues&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC96\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_25_-_Next_Step_Internet_-_High_Fibre_Diet_Required&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC97\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Chapter_26_-_20/20_Visionaries_-_Beyond_the_Sevens_Cs&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC98\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Footnotes&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC99\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Acronyms_and_Explanations&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC100\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Internet_in_New_Zealand_Timeline&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC101\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"nf\">get-content<\/span> <span class=\"s\">&quot;Postscript_-_Holding_Back_the_Tide_-_Obstacles_to_Advancement&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC102\">&nbsp;&nbsp;<span class=\"s\">&quot;&lt;/body&gt;&lt;/html&gt;&quot;<\/span><\/div><div class=\"line\" id=\"LC103\">&nbsp;&nbsp;<span class=\"p\">))<\/span><\/div><div class=\"line\" id=\"LC104\">&nbsp;<\/div><div class=\"line\" id=\"LC105\">&nbsp;<\/div><div class=\"line\" id=\"LC106\">&nbsp;<\/div><div class=\"line\" id=\"LC107\"><span class=\"p\">(<\/span><span class=\"k\">def <\/span><span class=\"nv\">document-builder<\/span> <span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">newDocumentBuilder<\/span> <span class=\"p\">(<\/span><span class=\"nf\">DocumentBuilderFactory/newInstance<\/span><span class=\"p\">)))<\/span><\/div><div class=\"line\" id=\"LC108\"><span class=\"p\">(<\/span><span class=\"k\">def <\/span><span class=\"nv\">mydoc<\/span> <span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">parse<\/span> <span class=\"nv\">document-builder<\/span> <span class=\"p\">(<\/span><span class=\"nf\">ByteArrayInputStream<\/span><span class=\"o\">.<\/span> <span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">getBytes<\/span> <span class=\"nv\">content<\/span> <span class=\"s\">&quot;UTF-8&quot;<\/span><span class=\"p\">))))<\/span><\/div><div class=\"line\" id=\"LC109\">&nbsp;<\/div><div class=\"line\" id=\"LC110\"><span class=\"p\">(<\/span><span class=\"nb\">doto <\/span><span class=\"p\">(<\/span><span class=\"nf\">org<\/span><span class=\"o\">.<\/span><span class=\"nv\">xhtmlrenderer<\/span><span class=\"o\">.<\/span><span class=\"nv\">pdf<\/span><span class=\"o\">.<\/span><span class=\"nv\">ITextRenderer<\/span><span class=\"o\">.<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC111\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">setDocument<\/span> <span class=\"nv\">mydoc<\/span> <span class=\"nv\">nil<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC112\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">layout<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC113\">&nbsp;&nbsp;<span class=\"p\">(<\/span><span class=\"o\">.<\/span><span class=\"nv\">createPDF<\/span> <span class=\"p\">(<\/span><span class=\"nf\">FileOutputStream<\/span><span class=\"o\">.<\/span> <span class=\"s\">&quot;history.pdf&quot;<\/span><span class=\"p\">)))<\/span><\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/104267/3f23f5b79406ffe3baaa321ceb3661ae7ed6ac3a/history.clj\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/104267#file_history.clj\" style=\"float:right;margin-right:10px;color:#666\">history.clj<\/a>\n          <a href=\"http://gist.github.com/104267\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
