{"id":56815,"date":"2022-09-12T03:01:52","date_gmt":"2022-09-11T17:01:52","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=56815"},"modified":"2022-09-11T12:10:19","modified_gmt":"2022-09-11T02:10:19","slug":"image-and-text-multiple-pdf-book-standing-order-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-book-standing-order-tutorial\/","title":{"rendered":"Image and Text Multiple PDF Book Standing Order Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text Multiple PDF Book Standing Order Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_bookstandingorder.jpg\" title=\"Image and Text Multiple PDF Book Standing Order Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text Multiple PDF Book Standing Order Tutorial<\/p><\/div>\n<p>It would be nice to think that the day before yesterday&#8217;s <a title='Image and Text Multiple PDF Goes Per Day Tutorial' href='#itmpdfgpdt'>Image and Text Multiple PDF Goes Per Day Tutorial<\/a> code&#8217;s Standing Order logic would handle the PDF Book scenario, but that would be a big ask for all these scenarios &#8230;<\/p>\n<ul>\n<li>transferring Standing Order logic for second (2 of ?) and on pages to new window.<a target=_blank title='window.localStorage information from W3schools' href='https:\/\/www.w3schools.com\/jsref\/prop_win_localstorage.asp'>localStorage<\/a> entries &#8230; as well as &#8230;<\/li>\n<li>flagging the page 1 of ? parent window.localStorage entry as such &#8230; so that &#8230;<\/li>\n<li>transferring on that Standing Order logic above on the user selecting to access the Standing Order 1 of ? window.localStorage entry as above<\/li>\n<\/ul>\n<p>But we dreamed <font size=1>&#8230; at least ahead of the three minutes it took to test this out<\/font>.   And then coding it, we were surprised by the trickiness with &#8220;transferring&#8221; aspects, in our usual way trying not to interfere with what was working earlier, by introducing new var<font size=1>iables<\/font> and if and while clauses to particularize our logics for these new requirements, both from &#8230;<\/p>\n<ul>\n<li>the viewpoint of the page 1 of ? instigator &#8230; and &#8230;<\/li>\n<li>subsequent PDF Book page followers<\/li>\n<\/ul>\n<p> &#8230; in terms of Javascript var<font size=1>iables<\/font> &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\nvar twospaces='';<br \/>\n<br \/>\nvar lsto=\\\"\\\";<br \/>\nvar ofval='';<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p> &#8230; <font color=blue>usage in context<\/font> and <font color=purple>other &#8220;helping out&#8221; ideas<\/font> &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\n<font color=purple>function gettwospaces() {<br \/>\n  return '' + twospaces;<br \/>\n}<\/font><br \/>\n<br \/>\nfunction lslook() {<br \/>\n  var lsstuff='', jj=1;<br \/>\n  if (zbit != '') { document.getElementById('ippref').value=zbit; }<br \/>\n  if (navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i)) {<br \/>\n    document.getElementById('pressi').click();<br \/>\n  }<br \/>\n  if (('' + window.localStorage.getItem('pdftimesheet' + jj)).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n    if (decodeURIComponent('' + window.localStorage.getItem('pdftimesheet' + jj)).indexOf('@!@') != -1) {<br \/>\n      lsstuff='&lt;option value=\\\"' + 'pdftimesheet' + jj + '\\\"&gt;' + decodeURIComponent('' + window.localStorage.getItem('pdftimesheet' + jj)).split('@!@')[0].replace('_',' ') + '&lt;\/option&gt;';<br \/>\n    }<br \/>\n    jj++;<br \/>\n    while (('' + window.localStorage.getItem('pdftimesheet' + jj)).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n      if (decodeURIComponent('' + window.localStorage.getItem('pdftimesheet' + jj)).indexOf('@!@') != -1) {<br \/>\n        lsstuff+='&lt;option value=\\\"' + 'pdftimesheet' + jj + '\\\"&gt;' + decodeURIComponent('' + window.localStorage.getItem('pdftimesheet' + jj)).split('@!@')[0].replace('_',' ') + '&lt;\/option&gt;';<br \/>\n      }<br \/>\n      jj++;<br \/>\n    }<br \/>\n    sofarsonext=jj;<br \/>\n    \/\/alert('sfsn=' + sofarsonext);<br \/>\n    document.getElementById('lstd').innerHTML='&lt;span id=tablespan&gt; ... or ... &lt;select style=background-color:pink; onchange=lsnameget(this.value);&gt;&lt;option value=&gt;Optionally select a Standing Order PDF Creation below to step through ...&lt;\/option&gt;' + lsstuff + '&lt;\/select&gt;&nbsp;&lt;select style=background-color:magenta; onchange=lsnamefullauto(this.value);&gt;&lt;option value=&gt;Standing Order PDF Creation to fully automate ...&lt;\/option&gt;' + lsstuff + '&lt;\/select&gt;&nbsp;&lt;select style=background-color:olive; onchange=lsnamereviewfullauto(this.value);&gt;&lt;option value=&gt;Standing Order PDF Creation to review a full automation run ...&lt;\/option&gt;' + lsstuff + '&lt;\/select&gt;&nbsp;&lt;select style=background-color:cyan; onchange=lsnamesemiauto(this.value);&gt;&lt;option value=&gt;Standing Order PDF Creation to stop at sequence clicks and date clicks ...&lt;\/option&gt;' + lsstuff + '&lt;\/select&gt;&nbsp;&lt;select style=background-color:lightblue; onchange=lsnamedelete(this.value);&gt;&lt;option value=&gt;Standing Order PDF Creation to delete ...&lt;\/option&gt;' + lsstuff + '&lt;\/select&gt;';<br \/>\n  }<br \/>\n  onlval=location.search.split('myls3=')[1] ? decodeURIComponent(location.search.split('myls3=')[1].split('&')[0]) : '';<br \/>\n  if (onlval != '') {<br \/>\n    sofarmode=3;<br \/>\n  } else {<br \/>\n    onlval=location.search.split('myls2=')[1] ? decodeURIComponent(location.search.split('myls2=')[1].split('&')[0]) : '';<br \/>\n    if (onlval != '') {<br \/>\n      sofarmode=2;<br \/>\n      setTimeout(setupgn, 2000); \/\/document.getElementById('nextetc').innerHTML+='&lt;br&gt;&lt;button onclick=gonext();&gt;Next&lt;\/button&gt;';<br \/>\n    } else {<br \/>\n      onlval=location.search.split('myls1=')[1] ? decodeURIComponent(location.search.split('myls1=')[1].split('&')[0]) : '';<br \/>\n      if (onlval != '') {<br \/>\n        sofarmode=1;<br \/>\n        setTimeout(setupgn, 2000); \/\/document.getElementById('nextetc').innerHTML+='&lt;br&gt;&lt;button onclick=gonext();&gt;Next&lt;\/button&gt;';<br \/>\n      } else {<br \/>\n       onlval=location.search.split('myls4=')[1] ? decodeURIComponent(location.search.split('myls4=')[1].split('&')[0]) : '';<br \/>\n       if (onlval != '') {<br \/>\n        sofarmode=4;<br \/>\n        setTimeout(setupgn, 2000); \/\/document.getElementById('nextetc').innerHTML+='&lt;br&gt;&lt;button onclick=gonext();&gt;Next&lt;\/button&gt;';<br \/>\n       } else {<br \/>\n        onlval=location.search.split('myls=')[1] ? decodeURIComponent(location.search.split('myls=')[1].split('&')[0]) : '';<br \/>\n       }<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n<br \/> <br \/>\n  <font color=purple>onlval=onlval;           \/\/ new line 1 of 2<br \/>\n  sofarmode=sofarmode;     \/\/ new line 2 of 2<\/font><br \/>\n<br \/> <br \/>\n  if (onlval != '') {<br \/>\n    \/\/alert(onlval);<br \/>\n    if (onlval.indexOf('_') != -1 && onlval.indexOf('\/') != -1) { \/\/ && onlval.indexOf('\/') &gt; onlval.indexOf('_')) {<br \/>\n     if (eval('' + onlval.indexOf('\/')) &gt; eval('' + onlval.indexOf('_'))) {<br \/>\n      newtz=onlval.replace(onlval.split('_')[0] + '_', '');<br \/>\n      if (newtz.indexOf(' ') != -1) {<br \/>\n        <font color=blue>ofval=newtz.replace(newtz.split(' ')[0] + ' ', '');<br \/>\n        if (ofval.indexOf('1 of ') != 0) { ofval='';  }<\/font><br \/>\n    \/\/alert('ofval=' + ofval);<br \/>\n        newtz=newtz.split(' ')[0];<br \/>\n      }<br \/>\n      onlval=onlval.split('_')[0];<br \/>\n     }<br \/>\n    }<br \/>\n    \/\/alert('Onlval=' + onlval + ' ... ' + ('' + window.localStorage.getItem(onlval)));<br \/>\n    if (decodeURIComponent('' + window.localStorage.getItem(onlval)).indexOf('@!@') != -1) {<br \/>\n     lsval=decodeURIComponent(window.localStorage.getItem(onlval)).replace('@!@@!@','@!@');<br \/>\n     \/\/alert('Lsval=' + lsval);<br \/>\n     if (lsval.indexOf('@!@') != -1) {<br \/>\n      lsnames=lsval.split('@!@');<br \/>\n      if (sofarmode == 4) {<br \/>\n        if (eval('' + lsnames.length) &gt; 2) {<br \/>\n          if (lsnames[eval(-1 + lsnames.length)].indexOf('!!!') == 0) {<br \/>\n            lsval=lsval.replace('@!@' + lsnames[eval(-1 + lsnames.length)], '');<br \/>\n            lsnames=lsval.split('@!@');<br \/>\n          }<br \/>\n        }<br \/>\n        sofarmode=3;<br \/>\n      }<br \/>\n      curls=0;<br \/>\n      lsname=noof(lsval.split('@!@')[0]);<br \/>\n      \/\/alert('lsname=' + lsname);<br \/>\n      lsvaliname=lsval.split('@!@')[1];<br \/>\n      if (lsvaliname.indexOf('data:') == 0) {  lsvaliname=lsvaliname.replace(\/\" . \"\\\\\" . \" \/g,'+');  }<br \/>\n      if (eval('' + lsval.length) &gt; 2) {<br \/>\n        if (lsval[2].replace('#','').trim() != '' && ('' + lsval[1] + ' ').indexOf('#') == 0) {<br \/>\n           document.getElementById('iurl').value='#' + lsval[2];<br \/>\n           setjust(document.getElementById('iurl'));<br \/>\n           curone++;<br \/>\n        }<br \/>\n      }<br \/>\n      \/\/alert('onlval=' + onlval);<br \/>\n      document.getElementById('mytzn').value=maybels('' + Intl.DateTimeFormat().resolvedOptions().timeZone); \/\/maybels(document.getElementById('mytzn').value);<br \/>\n      sofarso=lsname + '@!@' + lsvaliname;<br \/>\n      document.getElementById('slideshow').value=lsvaliname;  \/\/ standing order image established<br \/>\n      \/\/alert('here');<br \/>\n      datauri='';<br \/>\n      \/\/if (lsval.indexOf('DATE_') != -1) {<br \/>\n   \/\/alert(lsval.substring(eval(-30 + lsval.indexOf('DATE_'))));<br \/>\n      \/\/} else {<br \/>\n   \/\/alert(sofarso);<br \/>\n      \/\/}<br \/>\n     lookfordatauri();<br \/>\n     }<br \/>\n    }<br \/>\n  } else {<br \/>\n     document.getElementById('mytzn').value=maybels('' + Intl.DateTimeFormat().resolvedOptions().timeZone);<br \/>\n     if (sofarso.indexOf(document.getElementById('mytzn').value) == -1) {<br \/>\n     sofarso+='_' + document.getElementById('mytzn').value + '@!@';<br \/>\n     } else {<br \/>\n     sofarso+='@!@';<br \/>\n     }<br \/>\n  }<br \/>\n  if (document.getElementById('doverlay1')) {<br \/>\n    setTimeout(arectdivs, 2000);<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nfunction huhf() {<br \/>\n \/\/if (document.body.outerHTML.indexOf(datauris[0]) == -1) {<br \/>\n \/\/alert('Huh');<br \/>\n \/\/} else {<br \/>\n \/\/alert('' + document.body.outerHTML.split(datauris[0]).length + ' ... ' + datauris[0]);<br \/>\n \/\/ }<br \/>\n <br \/>\n   var thisstart='pdftimesheet';<br \/>\n <br \/>\n \/\/alert('target=' + document.getElementById('myform').target + ' ' + window.opener);<br \/>\n if (('' + document.getElementById('myform').target) == '_top'<font color=blue> || (ofval != '' && onlval.indexOf(thisstart) == 0 && sofarmode != 0 && datauris.length == 1 && !window.opener && gettwospaces() == '')<\/font>) {<br \/>\n   if (1 == 6) {<br \/>\n     document.getElementById('relfind').style.display='block';<br \/>\n     location.href='#relfind';<br \/>\n   }<br \/>\n   var woo=null;<br \/>\n   var itop=50;<br \/>\n   var ileft=50;<br \/>\n   if (datauris.length != 1<font color=blue> || (ofval != '' && onlval.indexOf(thisstart) == 0 && sofarmode != 0 && datauris.length == 1 && !window.opener && gettwospaces() == '')<\/font>) {<br \/>\n   if (!window.opener) {<br \/>\n   \/\/alert(876);<br \/>\n   document.getElementById('myform').innerHTML+=\\\"&lt;input name=postsuggestion value='\" . explode('.',explode('-',$outfname)[0])[0] . \"-0.pdf' type=hidden&gt;&lt;\/input&gt;\\\";<br \/>\n   \/\/if (document.body.outerHTML.indexOf('web_share_api_text.') != -1) {<br \/>\n   \/\/  alert('web_share_api_text.' + document.body.outerHTML.split('web_share_api_text.')[1]);<br \/>\n   \/\/} else {<br \/>\n   \/\/  alert('zbit=' + zbit);<br \/>\n   \/\/}<br \/>\n   <font color=purple>var truncval='';<br \/>\n   var huhts=[];<br \/>\n   if (gettwospaces() != '') {<br \/>\n     truncval=(sofarso + sofarsoatend);<br \/>\n     huhts=truncval.split('@!@');<br \/>\n     if (truncval.indexOf('!!!') != -1) {<br \/>\n       truncval=truncval.split('!!!')[0];<br \/>\n       if (huhts[eval(-1 + huhts.length)] != '') {<br \/>\n         truncval=(truncval + '~').replace('@!@' + huhts[eval(-1 + huhts.length)] + '~', '');   \/\/ '@!@'<br \/>\n       } else {<br \/>\n         truncval=(truncval + '~').replace('@!@~', '');   \/\/ '@!@'<br \/>\n       }<br \/>\n     } else if (huhts[eval(-1 + huhts.length)] == '') {<br \/>\n       truncval=(truncval + '~').replace('@!@~', '');   \/\/ '@!@'<br \/>\n     }<br \/>\n   }<\/font><br \/>\n   var origsofarsonext=sofarsonext;<br \/>\n   var thispdfind=-1;<br \/>\n   var bigval='';<br \/>\n   var anyextras='';<br \/>\n   var ioff=0;<br \/>\n   \/\/alert('ofval=' + ofval + ' and onlval=' + onlval);<br \/>\n   <font color=blue>if (ofval != '' && onlval.indexOf(thisstart) == 0 && sofarmode != 0 && datauris.length == 1 && !window.opener && gettwospaces() == '') {<br \/>\n   \/\/alert(0);<br \/>\n     if (sofarmode == 2 || sofarmode == 1 || sofarmode == 4) {<br \/>\n       anyextras=' setTimeout(setupgn, 2000); ';<br \/>\n     }<br \/>\n     thispdfind=eval('' + onlval.split(thisstart)[1]);<br \/>\n     \/\/alert('thispdfind=' + thispdfind);<br \/>\n     if (datauri.trim() != '') {<br \/>\n     datauris[0]=datauri;<br \/>\n     } else {<br \/>\n     datauris[0]=document.getElementById('slideshow').value;<br \/>\n     }<br \/>\n     for (var ikn=1; ikn&lt;eval(ofval.split(' of ')[1]); ikn++) {<br \/>\n      bigval=window.localStorage.getItem(thisstart + eval(thispdfind + ikn));<br \/>\n      if (eval('' + decodeURIComponent(bigval).split('@!@').length) &gt; 1) {<br \/>\n     \/\/alert('push ' + decodeURIComponent(bigval).split('@!@')[1].replace(\/\\ \/g,'+'));<br \/>\n      datauris.push(decodeURIComponent(bigval).split('@!@')[1].replace(\/\\ \/g,'+'));<br \/>\n      }<br \/>\n     }<br \/>\n   }<\/font><br \/>\n   for (var ijk=1; ijk&lt;datauris.length; ijk++) {<br \/>\n   \/\/alert(datauris[0] + ' ... ' + datauris[ijk] + ' . ' + document.body.outerHTML.split(datauris[0]).length);<br \/>\n<br \/> <br \/>\n   <font color=purple>if (gettwospaces() != '') {<br \/>\n    if (ijk != 1) { sofarsonext++; }<br \/>\n    if (('' + window.localStorage.getItem('pdftimesheet' + eval(sofarsonext + ioff))).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n    while (('' + window.localStorage.getItem('pdftimesheet' + eval(sofarsonext + ioff))).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {   \/\/while (decodeURIComponent(('' + window.localStorage.getItem('pdftimesheet' + eval(sofarsonext + ioff)))).indexOf(' of ') == -1) {<br \/>\n      ioff++;<br \/>\n    }<br \/>\n    }<br \/>\n    \/\/alert('datauris.length=' + datauris.length + ' and sofarsonext=' + sofarsonext + ' and ioff=' + ioff + ' truncval=' + truncval);<br \/>\n    window.localStorage.setItem('pdftimesheet' + eval(ioff + sofarsonext), encodeURIComponent(truncval.replace('@!@',' ' + eval(1 + ijk) + ' of ' + datauris.length + '@!@').replace(datauris[0], datauris[ijk])));<br \/>\n    woos.push(window.open('.\/pdfimageplustext.php?ipsuff=' + encodeURIComponent('-' + ijk + '.' + zbit),'_blank','top=' + itop + ',left=' + ileft + ',width=500,height=500'));<br \/>\n    woos[eval(-1 + woos.length)].document.write('&lt;html&gt;' + document.head.outerHTML.replace('var zbit=\\\"\\\"', 'var zbit=\\\"' + zbit + '\\\"').replace('var lsto=\\\"\\\"', 'var lsto=\\\"' + 'pdftimesheet' + sofarsonext + '\\\"') + document.body.outerHTML.replace(' data-pref=\\\"\\\" value=\\\"\\\"', ' data-pref=\\\"\\\" value=\\\"' + zbit + '\\\"').replace(' data-title=\\\"\\\" value=\\\"', ' data-title=\\\"\\\" value=\\\"-' + ijk).replace(datauris[0], datauris[ijk]).replace(datauris[0], datauris[ijk]).replace(datauris[0], datauris[ijk]) + '&lt;\/html&gt;');<br \/>\n   } else if (ofval != '' && onlval.indexOf(thisstart) == 0 && sofarmode != 0 && eval('' + datauris.length) &gt; 1 && !window.opener && gettwospaces() == '') {<br \/>\n    \/\/alert('sfm=' + sofarmode);<br \/>\n    if (('' + window.localStorage.getItem('pdftimesheet' + eval(thispdfind + ioff + ijk))).replace(\/^undefined\/g,'').replace(\/^null\/g,'') == '') {<br \/>\n    while (ioff &lt; 400 && ('' + window.localStorage.getItem('pdftimesheet' + eval(thispdfind + ioff + ijk))).replace(\/^undefined\/g,'').replace(\/^null\/g,'') == '') {   \/\/while (decodeURIComponent(('' + window.localStorage.getItem('pdftimesheet' + eval(sofarsonext + ioff)))).indexOf(' of ') == -1) {<br \/>\n      ioff++;<br \/>\n    }<br \/>\n    }<br \/>\n    \/\/alert('Datauris.length=' + datauris.length + ' and sofarsonext=' + sofarsonext + ' and ioff=' + ioff + ' truncval=' + truncval);<br \/>\n    if (('' + window.localStorage.getItem('pdftimesheet' + eval(ioff + thispdfind + ijk))).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n  \/\/alert('good ' + document.head.outerHTML.indexOf('setTimeout(lookfordata' + 'uri, 1000);'));<br \/>\n    woos.push(window.open('.\/pdfimageplustext.php?ipsuff=' + encodeURIComponent('-' + ijk + '.' + zbit),'_blank','top=' + itop + ',left=' + ileft + ',width=500,height=500'));<br \/>\n    woos[eval(-1 + woos.length)].document.write('&lt;html&gt;' + document.head.outerHTML.replace('setTimeout(lookfordata' + 'uri, 1001);', 'setTimeout(look' + 'fordatauri, 1001); setTimeout(lslook, 1000); ').replace('var zbit=\\\"\\\"', 'var zbit=\\\"' + zbit + '\\\"').replace('' + 'sofarmod' + 'e=sofar' + 'mode;', '' + 'sofarmod' + 'e=' + sofarmode + ';' + anyextras).replace('' + 'onlva' + 'l=onlva' + 'l;', 'onlva' + 'l=\\\"' + thisstart + eval(ijk + ioff + thispdfind) + '\\\";') + document.body.outerHTML.replace(' data-pref=\\\"\\\" value=\\\"\\\"', ' data-pref=\\\"\\\" value=\\\"' + zbit + '\\\"').replace(' data-title=\\\"\\\" value=\\\"', ' data-title=\\\"\\\" value=\\\"-' + ijk).replace(datauris[0], datauris[ijk]).replace(datauris[0], datauris[ijk]).replace(datauris[0], datauris[ijk]) + '&lt;\/html&gt;');<br \/>\n    }<br \/>\n   } else {<\/font><br \/>\n    woos.push(window.open('.\/pdfimageplustext.php?ipsuff=' + encodeURIComponent('-' + ijk + '.' + zbit),'_blank','top=' + itop + ',left=' + ileft + ',width=500,height=500'));<br \/>\n    woos[eval(-1 + woos.length)].document.write('&lt;html&gt;' + document.head.outerHTML.replace('var zbit=\\\"\\\"', 'var zbit=\\\"' + zbit + '\\\"') + document.body.outerHTML.replace(' data-pref=\\\"\\\" value=\\\"\\\"', ' data-pref=\\\"\\\" value=\\\"' + zbit + '\\\"').replace(' data-title=\\\"\\\" value=\\\"', ' data-title=\\\"\\\" value=\\\"-' + ijk).replace(datauris[0], datauris[ijk]).replace(datauris[0], datauris[ijk]).replace(datauris[0], datauris[ijk]) + '&lt;\/html&gt;');<br \/>\n   <font color=purple>}<\/font><br \/>\n   woos[eval(-1 + woos.length)].document.title='Page ' + eval(1 + ijk) + ' of your PDF';<br \/>\n   itop+=10;<br \/>\n   ileft+=10;<br \/>\n   }<br \/>\n   }<br \/>\n   }<br \/>\n } \/\/else {<br \/>\n   \/\/alert(document.getElementById('myform').target);<br \/>\n \/\/}<br \/>\n return true;<br \/>\n}<br \/>\n<br \/>\nfunction askaway() {<br \/>\n  var retval=true;<br \/>\n  var ans=' ';<br \/>\n  if (startrecording && !showingc) {<br \/>\n  if (repeats &gt; 0) {<br \/>\n  ans=lastans;<br \/>\n  if (ans == null) { ans=''; }<br \/>\n  if (ans.trim() != '' && x &gt;= 0 && y &gt;= 0) {<br \/>\n      <font color=blue>if (lsto != '') { wlsa(lsto, '@!@' + ans + '!!!' + x + '@@@' + y); }<\/font><br \/>\n      sofarsoatend+='@!@' + ans + '!!!' + x + '@@@' + y;<br \/>\n  } else if (ans.trim() == '' && ans != '' && x &gt;= 0 && y &gt;= 0) {<br \/>\n      <font color=blue>if (lsto != '') { wlsa(lsto, '@!@!!!' + x + '@@@' + y); }<\/font><br \/>\n      sofarsoatend+='@!@!!!' + x + '@@@' + y;<br \/>\n      lsnamesaveas();<br \/>\n      ans='';<br \/>\n  }<br \/>\n  if (analyze(ans).trim() == '') { startrecording=false; if (1 == 11) {  alert(document.getElementById('coords').innerHTML);  } if (9 == 99) { document.getElementById('isub').click(); } else {  huhf(); document.getElementById('myform').submit(); }  } else { addtoform(ans); setTimeout(askaway, 5000);   }<br \/>\n  } else {<br \/>\n  repeats=0;<br \/>\n  lastans='';<br \/>\n  var indef='';<br \/>\n  if (document.getElementById('mytextarea')) {<br \/>\n    if (document.getElementById('mytextarea').value != '') {<br \/>\n      indef=document.getElementById('mytextarea').value;<br \/>\n      while (indef.indexOf(String.fromCharCode(10)) != -1) {<br \/>\n        indef=indef.replace(String.fromCharCode(10), '~~')<br \/>\n      }<br \/>\n      if (sofarmode == 0) { document.getElementById('mytextarea').value=''; }<br \/>\n    }<br \/>\n  }<br \/>\n  if (xans != '') {<br \/>\n  var nondebatable=false;<br \/>\n  if (sofarmode == 2 && xans.toUpperCase().indexOf('DATE') != 0 && xans.toUpperCase().replace(' * ',' x ').indexOf(' x ') == -1) { nondebatable=true; }<br \/>\n  if (sofarmode == 3 || nondebatable) {<br \/>\n  ans=xans.trim();<br \/>\n  xans='';<br \/>\n  } else if (sofarmode == 1 || (sofarmode == 2 && !nondebatable)) {<br \/>\n  if (isokay) {<br \/>\n  indef=xans.trim();<br \/>\n  }<br \/>\n  \/\/xans='';<br \/>\n  \/\/retval=false;<br \/>\n  ans=prompt('Append more spaces to default suggestion in order to indicate you want to click again in a new place for this entry, and note that you can change wording, as well over at the textarea if you wish.  Enter with nothing to proceed or space to Save As along the way to creating PDF.  Else enter text number ' + coordn + ' to place where last click was made.  Can use a suffix such as x 5 to repeat value on the 4 clicks to follow.  Optionally prefix by text Font Family (for all text if Arial no good versus Courier or Helvetica or Arial or Times or Symbol or ZapfDingbats);Font Style (double semicolon delimit for all text default if Bold no good else single semicolon delimit for this text only versus Normal or Italic or Bold or Underline);Font Size in px (for this text if 16px no good) delimited by semicolon.  Line feed via ~~ anywhere.',indef);<br \/>\n  if (ans.trim() == xans.trim() && xans != ans) { retval=false; return retval; } else { retval=true; xans=''; }<br \/>\n  }<br \/>\n  } else {<br \/>\n  <font color=blue>if (!window.opener) {<br \/>\n    if (eval('' + datauris.length) &gt; 1) {<br \/>\n      twospaces=' Enter with two spaces to Save As here and for the PDF Book second and on pages. ';<br \/>\n    }<br \/>\n  }<\/font><br \/>\n  ans=prompt('Enter with nothing to proceed or space to Save As along the way to creating PDF. <font color=blue>' + twospaces + '<\/font> Else enter text number ' + coordn + ' to place where last click was made.  Can use a suffix such as x 5 to repeat value on the 4 clicks to follow.  Optionally prefix by text Font Family (for all text if Arial no good versus Courier or Helvetica or Arial or Times or Symbol or ZapfDingbats);Font Style (double semicolon delimit for all text default if Bold no good else single semicolon delimit for this text only versus Normal or Italic or Bold or Underline);Font Size in px (for this text if 16px no good) delimited by semicolon.  Line feed via ~~ anywhere.',indef);<br \/>\n  }<br \/>\n  if (ans == null) { ans=''; }<br \/>\n  <font color=blue>if (ans == '' && window.opener) {<br \/>\n    if (('' + lsto) != '' && ('' + gettwospaces()) == '') {<br \/>\n      ans=' ';<br \/>\n    }<br \/>\n  }<\/font><br \/>\n  if (ans.trim() != '' && x &gt;= 0 && y &gt;= 0) {<br \/>\n      <font color=blue>if (lsto != '') {  wlsa(lsto, '@!@' + ans + '!!!' + x + '@@@' + y);  }<\/font><br \/>\n      sofarsoatend+='@!@' + ans + '!!!' + x + '@@@' + y;<br \/>\n  } else if (ans.trim() == '' && ans != '' && x &gt;= 0 && y &gt;= 0) {<br \/>\n      <font color=blue>if (lsto != '') {  wlsa(lsto, '@!@!!!' + x + '@@@' + y);  }<\/font><br \/>\n      sofarsoatend+='@!@!!!' + x + '@@@' + y;<br \/>\n      <font color=blue>if (!window.opener && ('' + gettwospaces()) != '' && eval(eval('' + ans.length) - eval('' + ans.trim().length)) &lt; 2) {<br \/>\n        twospaces='';<br \/>\n      } else if (!window.opener && ('' + gettwospaces()) != '' && eval(eval('' + ans.length) - eval('' + ans.trim().length)) &gt;= 2) {<br \/>\n        if (twospaces != '') {<br \/>\n          twospaces=twospaces;<br \/>\n        }<br \/>\n      }<\/font><br \/>\n      lsnamesaveas();<br \/>\n      ans='';<br \/>\n  }<font color=blue> else if (ans == '' && !window.opener && ('' + gettwospaces()) != '') {<br \/>\n      twospaces='';<br \/>\n  } else if (ans == '' && lsto != '') {<br \/>\n      if (lsto != '') {  wlsa(lsto, '@!@!!!' + x + '@@@' + y);  }<br \/>\n  }<\/font><br \/>\n  var rarris=ans.replace(' * ',' x ').split(' x 1');<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 2');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 3');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 4');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 5');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 6');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 7');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 8');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 9');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 0');  }<br \/>\n  if (rarris.length &gt; 1) { repeats=eval(0 + eval('' + ans.replace(' * ',' x ').split(' x ')[1])); lastans=ans.replace(' * ',' x ').split(' x ')[0];   } else if (1 == 3) { lastans=''; }<br \/>\n  if (analyze(ans).trim() == '') { startrecording=false; if (1 == 11) {  alert(document.getElementById('coords').innerHTML);  }  huhf();  document.getElementById('myform').submit();  } else { addtoform(ans); setTimeout(askaway, 5000);   }<br \/>\n  }<br \/>\n  }<br \/>\n  if (retval) { xans=''; }<br \/>\n  return retval;<br \/>\n}<br \/>\n<br \/>\n<font color=purple>function wlsa(inlsn, inappval) {<br \/>\n  window.localStorage.setItem(inlsn, window.localStorage.getItem(inlsn) + encodeURIComponent(inappval));<br \/>\n}<\/font><br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p> &#8230; in  <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php---------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php---------------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>, as well as the <a target=_blank title='Web Share API' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Navigator\/share'>Web Share API<\/a> interfacing <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html-----GETME \">the changed HTML (using an Eat at Joes style of textbox placeholder arrangement) and Javascript<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html-----GETME\">web_share_api_test.html<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html\">Web Share API supervisor<\/a> helper the existence of a &#8220;PDF Book&#8221; to share via a multiple image entry scenario &#8230; and <font color=olive>we change<\/font> &#8230;<\/p>\n<p>&lt;script type=&#8217;text\/javascript&#8217;&gt;<br \/>\n<code><br \/>\n  var twos=[], itwos=-1<font color=olive>, woq=null<\/font>;<br \/>\n <br \/>\n  function eatatjoes() {<br \/>\n    if (itwos == 0) {<br \/>\n      if (document.getElementById('shareurl').value == '') {<br \/>\n      document.getElementById('shareurl').placeholder=document.getElementById('shareurl').placeholder.replace(twos[0], twos[1]).replace(' PDF#', ' PDF Book#');<br \/>\n      document.getElementById('sbut').value=document.getElementById('sbut').value.replace('Share URL Link', 'Share PDF Book Link');<br \/>\n      document.getElementById('sbut').title='Double clicking textbox to right will try PDF Book in a new popup window';<br \/>\n      }<br \/>\n      itwos=1;<br \/>\n    } else if (itwos == 1) {<br \/>\n      if (document.getElementById('shareurl').value == '') {<br \/>\n      document.getElementById('shareurl').placeholder=document.getElementById('shareurl').placeholder.replace(twos[1], twos[0]).replace(' PDF Book#', ' PDF#');<br \/>\n      document.getElementById('sbut').value=document.getElementById('sbut').value.replace('Share PDF Book Link', 'Share URL Link');<br \/>\n      document.getElementById('sbut').title='Double clicking textbox to right will make its placeholder the default textbox value';<br \/>\n      }<br \/>\n      itwos=0;<br \/>\n    }<br \/>\n  }<br \/>\n <br \/> <br \/>\n  function setupanimate(wsug, wsugzero, wsugthree) {<br \/>\n    twos.push(wsugzero);<br \/>\n    itwos=0;<br \/>\n    twos.push(wsugthree);<br \/>\n    setInterval(eatatjoes, 5000);<br \/>\n    return wsug.replace('#' + wsugthree, '');<br \/>\n  }<br \/>\n  <br \/>\n  <font color=olive>function trythis(inpdfidea) {<br \/>\n    if (inpdfidea.toLowerCase().indexOf('-0.pdf') != -1) {<br \/>\n      woq=window.open(inpdfidea.split('#')[0], '_blank', 'top=50,left=50,width=800,height=800');<br \/>\n    }<br \/>\n    return inpdfidea;<br \/>\n  }<\/font><br \/>\n<\/code><br \/>\n&lt;\/script&gt;<\/p>\n<p> &#8230; backing up the <font color=olive>modified HTML<\/font> &#8230;<\/p>\n<p><code><br \/>\n&lt;input title='Suffix by hashtag 1 is text and hashtag 2 is title' style='width:45%;' type=url value='' placeholder='https:\/\/www.rjmprogramming.com.au\/ITblog\/#RJM Programming Blog#IT Blog' id=shareurl ondblclick=\"this.value=<font color=olive>trythis(<\/font>this.placeholder<font color=olive>)<\/font>;\"&gt;&lt;\/input&gt;&lt;br&gt;&lt;br&gt;&lt;span&gt; ... and\/or ... &lt;\/span&gt;&lt;br&gt;&lt;br&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; to better facilitate the sharing and collaboration possibilities for your PDF Book Creations.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-book-standing-order-tutorial\/'>Image and Text Multiple PDF Book Standing Order Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itmpdfgpdt'>Previous relevant <a target=_blank title='Image and Text Multiple PDF Goes Per Day Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-goes-per-day-tutorial\/'>Image and Text Multiple PDF Goes Per Day Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text Multiple PDF Goes Per Day Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_morethanoneperday.jpg\" title=\"Image and Text Multiple PDF Goes Per Day Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text Multiple PDF Goes Per Day Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='Image and Text Multiple PDF Book Tutorial' href='#itmpdfbt'>Image and Text Multiple PDF Book Tutorial<\/a> &#8220;PDF Book&#8221; progress, today, we &#8230;<\/p>\n<ul>\n<li>flag in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html----GETME \">the changed HTML (using an Eat at Joes style of textbox placeholder arrangement) and Javascript<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html----GETME\">web_share_api_test.html<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html\">Web Share API supervisor<\/a> helper the existence of a &#8220;PDF Book&#8221; to share via a multiple image entry scenario &#8230; and, for the first time &#8230;<\/li>\n<li>allow for multiple PDF Creation runs per day for PDF Creations<\/li>\n<\/ul>\n<p>Being as we only allow a &#8220;less than one day existence period&#8221; for PDF Creations for any unique &#8230;<\/p>\n<ul>\n<li>IP address<\/li>\n<li>web browser &#8220;brand&#8221;<\/li>\n<\/ul>\n<p> &#8230; combination, we think we could be more generous about a unique combination PDF Creation execution run limit to now be above one, should the user have multiple requirements or makes an error.  This is handled in the PHP function determining a PDF filename &#8220;uniquifier suffix&#8221; <font color=blue>as per<\/font> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n$zbit=\"\";<br \/>\nif (isset($_POST['ippref'])) {<br \/>\n  $zbit=str_replace('+',' ',urldecode($_POST['ippref']));<br \/>\n} else if (isset($_GET['ippref'])) {<br \/>\n  $zbit=str_replace('+',' ',urldecode($_GET['ippref']));<br \/>\n}<br \/>\nif (isset($_GET['ipsuff'])) {<br \/>\n  $dotzbits=explode(',', str_replace('+',' ',urldecode($_GET['ipsuff'])));<br \/>\n  if (sizeof($dotzbits) >= 2) { $zbit=$dotzbits[1];  }<br \/>\n}<br \/>\n<br \/>\nfunction server_remote_addr() {<br \/>\n    <font color=blue>global $afterjpg, $ourfname, $zbit;<\/font><br \/>\n    $yourfname=$ourfname;<br \/>\n    if ($yourfname == \"\") { $yourfname=\"filename\"; }<br \/>\n    if (sizeof(explode(\"-\", $yourfname)) == 2) {<br \/>\n      $yourfname=explode('-', $yourfname)[0];<br \/>\n    } else if (sizeof(explode(\".\", $yourfname)) == 2) {<br \/>\n      $yourfname=explode('.', $yourfname)[0];<br \/>\n    }<br \/>\n    $rma = <font color=blue>$zbit . <\/font>$_SERVER['REMOTE_ADDR'];<br \/>\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);<br \/>\n    \/\/ you can add different browsers with the same way ..<br \/>\n    if (1 == 2) {<br \/>\n    if(preg_match('\/(chromium)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = <font color=blue>$zbit . <\/font>'000000'.$rma;<br \/>\n    elseif(preg_match('\/(chrome)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = <font color=blue>$zbit . <\/font>'00000'.$rma;<br \/>\n    elseif(preg_match('\/(safari)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = <font color=blue>$zbit . <\/font>'0000'.$rma;<br \/>\n    elseif(preg_match('\/(opera)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = <font color=blue>$zbit . <\/font>'000'.$rma;<br \/>\n    elseif(preg_match('\/(msie)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = <font color=blue>$zbit . <\/font>'00'.$rma;<br \/>\n    elseif(preg_match('\/(mozilla)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = <font color=blue>$zbit . <\/font>'0'.$rma;<br \/>\n    }<br \/>\n   <font color=blue> $retearly=false;<br \/>\n    if (trim($zbit) == \"\") {<br \/>\n    if (trim($zbit) != $zbit) { $zbit=trim($zbit);  $retearly=true; }<br \/>\n    $sone=false;<br \/>\n    $stwo=false;<br \/>\n    if ((isset($_POST['ipsuff']) && strlen($_POST['ipsuff']) &gt; 0) || (isset($_GET['ipsuff']) && strlen($_GET['ipsuff']) &gt; 0)) {<br \/>\n    sleep(15);<br \/>\n    $sone=file_exists(\"filename\" . \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . \".jpg\");<br \/>\n    $stwo=false;<br \/>\n    } else {<br \/>\n    $sone=file_exists(\"filename\" . \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . \".jpg\");<br \/>\n    $stwo=file_exists(\"filename\" . \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . \"-0.pdf\");<br \/>\n    }<br \/>\n    while ($sone || $stwo) {<br \/>\n      $zbit.=\"0\";<br \/>\n      $rma=\"0\" . $rma;<br \/>\n    $sone=false;<br \/>\n    $stwo=false;<br \/>\n    if ((isset($_POST['ipsuff']) && strlen($_POST['ipsuff']) &gt; 0) || (isset($_GET['ipsuff']) && strlen($_GET['ipsuff']) &gt; 0)) {<br \/>\n      $sone=file_exists(\"filename\" . \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . \".jpg\");<br \/>\n      $stwo=false;<br \/>\n    } else {<br \/>\n      $sone=file_exists(\"filename\" . \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . \".jpg\");<br \/>\n      $stwo=file_exists(\"filename\" . \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . \"-0.jpg\");<br \/>\n    }<br \/>\n    }<br \/>\n    if ($zbit != \"\" && (isset($_POST['ipsuff']) && strlen($_POST['ipsuff']) &gt; 0) || (isset($_GET['ipsuff']) && strlen($_GET['ipsuff']) &gt; 0)) {<br \/>\n    $zbit=substr($zbit, 1);<br \/>\n    $rma=substr($rma, 1);<br \/>\n    }<br \/>\n    if ($retearly) { $zbit=trim($zbit); return ''; }<br \/>\n    }<\/font><br \/>\n    if (isset($_GET['ipsuff'])) {<br \/>\n    if ($yourfname == \"filename\") { $yourfname.=\"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)); }<br \/>\n    if (strlen($_GET['ipsuff']) &gt; 0) {<br \/>\n   if (strpos($_SERVER['SERVER_NAME'], 'rjmprogramming.com.au') !== false) {<br \/>\n   $afterjpg=\"cp  \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \".jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.jpg  ; \/usr\/local\/cpanel\/3rdparty\/bin\/convert \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-*.jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.pdf\"; \/\/, null, $result ); \/\/ Thanks to https:\/\/stackoverflow.com\/questions\/8624886\/pdf-to-jpg-conversion-using-php<br \/>\n   } else {<br \/>\n   $afterjpg=\"cp  \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \".jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.jpg  ; \/usr\/local\/bin\/convert \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-*.jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.pdf\"; \/\/, null, $result ); \/\/ Thanks to https:\/\/stackoverflow.com\/questions\/8624886\/pdf-to-jpg-conversion-using-php<br \/>\n   }<br \/>\n    }<br \/>\n    return \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . explode('.', str_replace(' ','+',urldecode($_GET['ipsuff'])))[0];<br \/>\n    } else if (isset($_POST['ipsuff'])) {<br \/>\n    if (strlen($_POST['ipsuff']) &gt; 0) {<br \/>\n    if ($yourfname == \"filename\") { $yourfname.=\"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)); }<br \/>\n   if (strpos($_SERVER['SERVER_NAME'], 'rjmprogramming.com.au') !== false) {<br \/>\n   $afterjpg=\"cp  \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \".jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.jpg  ; \/usr\/local\/cpanel\/3rdparty\/bin\/convert \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-*.jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.pdf\"; \/\/, null, $result ); \/\/ Thanks to https:\/\/stackoverflow.com\/questions\/8624886\/pdf-to-jpg-conversion-using-php<br \/>\n   } else {<br \/>\n   $afterjpg=\"cp  \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \".jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.jpg  ; \/usr\/local\/bin\/convert \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-*.jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.pdf\"; \/\/, null, $result ); \/\/ Thanks to https:\/\/stackoverflow.com\/questions\/8624886\/pdf-to-jpg-conversion-using-php<br \/>\n   }<br \/>\n    }<br \/>\n    return \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . str_replace(' ','+',urldecode($_POST['ipsuff']));<br \/>\n    }<br \/>\n    return \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma));<br \/>\n}<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; <font color=blue>called this way<\/font> before HTML is written for the stage 1 or stage 2 webpage &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n   <font color=blue>if ($zbit == \"\") {<br \/>\n     $zbit=\" \";<br \/>\n     server_remote_addr();<br \/>\n   }<\/font><br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; in  <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php--------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php--------------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-goes-per-day-tutorial\/'>Image and Text Multiple PDF Goes Per Day Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itmpdfbt'>Previous relevant <a target=_blank title='Image and Text Multiple PDF Book Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-book-tutorial\/'>Image and Text Multiple PDF Book Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text Multiple PDF Book Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_book.jpg\" title=\"Image and Text Multiple PDF Book Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text Multiple PDF Book Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Image and Text Multiple PDF Relative URL Tutorial' href='#itmpdfrurlt'>Image and Text Multiple PDF Relative URL Tutorial<\/a> paves the way for us to go from &#8230;<\/p>\n<ul>\n<li>single page Image and Text Nodes PDF creation &#8230; to start thinking of &#8230;<\/li>\n<li>book of related, and in order, set of single page Image and Text Nodes PDF creations<\/li>\n<\/ul>\n<p> &#8230; the major conduit <a href='#aimm'>again<\/a>, being, the great <a target=_blank title='ImageMagick' href='http:\/\/www.imagemagick.org'>ImageMagick<\/a> image and PDF functionality from the command line &#8220;convert&#8221; utility &#8230; thanks, and yay!!!!<\/p>\n<p>We prepare a PHP &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n exec($afterjpg);<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; <font color=blue>intervention via global variable $afterjpg<\/font> determination &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\nfunction server_remote_addr() {<br \/>\n    <font color=blue>global $afterjpg, $ourfname;<br \/>\n    $yourfname=$ourfname;<br \/>\n    if ($yourfname == \"\") { $yourfname=\"filename\"; }<br \/>\n    if (sizeof(explode(\"-\", $yourfname)) == 2) {<br \/>\n      $yourfname=explode('-', $yourfname)[0];<br \/>\n    } else if (sizeof(explode(\".\", $yourfname)) == 2) {<br \/>\n      $yourfname=explode('.', $yourfname)[0];<br \/>\n    }<\/font><br \/>\n    $rma = $_SERVER['REMOTE_ADDR'];<br \/>\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);<br \/>\n    \/\/ you can add different browsers with the same way ..<br \/>\n    if (1 == 2) {<br \/>\n    if(preg_match('\/(chromium)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '000000'.$rma;<br \/>\n    elseif(preg_match('\/(chrome)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '00000'.$rma;<br \/>\n    elseif(preg_match('\/(safari)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '0000'.$rma;<br \/>\n    elseif(preg_match('\/(opera)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '000'.$rma;<br \/>\n    elseif(preg_match('\/(msie)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '00'.$rma;<br \/>\n    elseif(preg_match('\/(mozilla)[ \\\/]([\\w.]+)\/', $ua))<br \/>\n            $rma = '0'.$rma;<br \/>\n    }<br \/>\n    <font color=blue>if (isset($_GET['ipsuff'])) {<br \/>\n    if ($yourfname == \"filename\") { $yourfname.=\"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)); }<br \/>\n    if (strlen($_GET['ipsuff']) &gt; 0) {<br \/>\n   if (strpos($_SERVER['SERVER_NAME'], 'rjmprogramming.com.au') !== false) {<br \/>\n   $afterjpg=\"cp  \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \".jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.jpg  ; \/usr\/local\/cpanel\/3rdparty\/bin\/convert \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-*.jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.pdf\"; \/\/, null, $result ); \/\/ Thanks to https:\/\/stackoverflow.com\/questions\/8624886\/pdf-to-jpg-conversion-using-php<br \/>\n   } else {<br \/>\n   $afterjpg=\"cp  \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \".jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.jpg  ; \/usr\/local\/bin\/convert \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-*.jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.pdf\"; \/\/, null, $result ); \/\/ Thanks to https:\/\/stackoverflow.com\/questions\/8624886\/pdf-to-jpg-conversion-using-php<br \/>\n   }<br \/>\n    }<\/font><br \/>\n    return \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . str_replace(' ','+',urldecode($_GET['ipsuff']));<br \/>\n    } else if (isset($_POST['ipsuff'])) {<br \/>\n    <font color=blue>if (strlen($_POST['ipsuff']) &gt; 0) {<br \/>\n    if ($yourfname == \"filename\") { $yourfname.=\"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)); }<br \/>\n   if (strpos($_SERVER['SERVER_NAME'], 'rjmprogramming.com.au') !== false) {<br \/>\n   $afterjpg=\"cp  \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \".jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.jpg  ; \/usr\/local\/cpanel\/3rdparty\/bin\/convert \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-*.jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.pdf\"; \/\/, null, $result ); \/\/ Thanks to https:\/\/stackoverflow.com\/questions\/8624886\/pdf-to-jpg-conversion-using-php<br \/>\n   } else {<br \/>\n   $afterjpg=\"cp  \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \".jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.jpg  ; \/usr\/local\/bin\/convert \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-*.jpg \" . dirname(__FILE__) . DIRECTORY_SEPARATOR . $yourfname . \"-0.pdf\"; \/\/, null, $result ); \/\/ Thanks to https:\/\/stackoverflow.com\/questions\/8624886\/pdf-to-jpg-conversion-using-php<br \/>\n   }<br \/>\n    }<\/font><br \/>\n    return \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . str_replace(' ','+',urldecode($_POST['ipsuff']));<br \/>\n    }<br \/>\n    return \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma));<br \/>\n}<br \/>\n<\/code><br \/>\n?&gt;  <\/p>\n<p>It&#8217;s typical of ImageMagick usage in PHP, that big steps happen with little effort!   See this in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-------------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-book-tutorial\/'>Image and Text Multiple PDF Book Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itmpdfrurlt'>Previous relevant <a target=_blank title='Image and Text Multiple PDF Relative URL Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-relative-url-tutorial\/'>Image and Text Multiple PDF Relative URL Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text Multiple PDF Relative URL Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_glob.jpg\" title=\"Image and Text Multiple PDF Relative URL Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text Multiple PDF Relative URL Tutorial<\/p><\/div>\n<p>There are two main ways with the Image and Text Nodes PDF Creator web application of yesterday&#8217;s <a title='Image and Text Multiple PDF Files Tutorial' href='#itmpdfft'>Image and Text Multiple PDF Files Tutorial<\/a>, to define the image part, those being &#8230;<\/p>\n<ul>\n<li>browse via the HTML5 File API methodologies &#8230; and &#8230;<\/li>\n<li>define a relative URL<\/li>\n<\/ul>\n<p> &#8230; and the natural follow up to that first way allowing for multiple PDF File creation(s), is to allow it for the relative URL way.  We do that by allowing the wildcards * or ? appear in the URL<font size=1>spec<\/font> and then call into play the brilliant PHP <a target=_blank title='PHP glob method information' href='http:\/\/php.net\/manual\/en\/function.glob.php'>glob<\/a> means by which that can be transformed into a list of relative URL single images, with their one to one correspondence as the base graphics for any of our PDF Single Page creations.<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\nif (isset($_GET['wildcard'])) {<br \/>\n  if (strlen($_GET['wildcard']) &gt; 0) {<br \/>\n    $htmlis='';<br \/>\n    foreach (glob(str_replace('+',' ',urldecode($_GET['wildcard']))) as $filename) {<br \/>\n     if ($htmlis == '') {<br \/>\n         $udirnameprebimg=$filename;<br \/>\n         $pjbit='data:image\/' . str_replace('jpg','jpeg',strtolower(explode('.',$udirnameprebimg)[-1 + sizeof(explode('.',$udirnameprebimg))])) . ';base64,' . base64_encode(file_get_contents($udirnameprebimg));<br \/>\n         $htmlis='&lt;html&gt;&lt;body onload=\" var j=0;   parent.predurip(' . \"'\" . $pjbit . \"'\" . '); if (1 == 1) {   j++; } parent.document.getElementById(' . \"'\" . 'iurl' . \"'\" . ').value=parent.document.getElementById(' . \"'\" . 'iurl' . \"'\" . ').value.replace(' . \"'\" . str_replace('+',' ',urldecode($_GET['wildcard'])) . \"'\" . ',' . \"'\" . $pjbit . \"'\" . '); parent.setjust(parent.document.getElementById(' . \"'\" . 'iurl' . \"'\" . ')); \"&gt;&lt;\/body&gt;&lt;\/html&gt;';<br \/>\n     } else {<br \/>\n         $udirnameprebimg=$filename;<br \/>\n         $pjbit='data:image\/' . str_replace('jpg','jpeg',strtolower(explode('.',$udirnameprebimg)[-1 + sizeof(explode('.',$udirnameprebimg))])) . ';base64,' . base64_encode(file_get_contents($udirnameprebimg));<br \/>\n         $htmlis=str_replace(\" j++;\", \" parent.durip('\" . $pjbit . \"'); j++;\", $htmlis);<br \/>\n     }<br \/>\n    }<br \/>\n    echo $htmlis;<br \/>\n  }<br \/>\n  exit;<br \/>\n}<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; for  <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-------------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-relative-url-tutorial\/'>Image and Text Multiple PDF Relative URL Tutorial<\/a>.<\/p>\n\n\n\n\n\n<hr>\n\n\n\n\n\n<p id='itmpdfft'>Previous relevant <a target=_blank title='Image and Text Multiple PDF Files Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-files-tutorial\/'>Image and Text Multiple PDF Files Tutorial<\/a> is shown below.<\/p>\n\n\n\n[caption id=\"\" align=\"alignnone\" width=\"220\" caption=\"Image and Text Multiple PDF Files Tutorial\"]<a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text Multiple PDF Files Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_multipage.jpg\" title=\"Image and Text Multiple PDF Files Tutorial\"  style=\"float:left;\" \/><\/a>[\/caption]\n\n\n\n<p>For more than a week now, up until the day before yesterday's <a title='Image and Text PDF CSS Colour Blending Tutorial' href='#itpdfcsscbt'>Image and Text PDF CSS Colour Blending Tutorial<\/a>, we've had an illogical supposition going.  When browsing for image files, we allowed you to select multiple files, and yet only processed the first image file browsed for.  Well, today, we're out to remedy this heinous situation.  And mind, while we take a <i>chill pill<\/i>!<\/p>\n\n\n\n\n\n<p>As a way to proceed here ...<\/p>\n\n\n\n\n\n<ol>\n\n\n<li>we got <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/client_browsing.html---------------------GETME\">the changed HTML and Javascript<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/client_browsing.html---------------------GETME\">client_browsing.htm<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/client_browsing.htm\">Client Browsing supervisor<\/a> to recognize when it is being supervised ...\n<code>\nvar lastis='';\n<br \/>\nif (!parent.document.getElementById('slideshow2') && parent.document.getElementById('slideshow')) {\n  \/\/ Image and Text Nodes PDF Creation logic can go here \n  if (lastis == '') {\n                   lastis=evt.target.result.replace('application\/octet-stream', tomt).replace('application\/octet-stream', tomt).replace('data:;', 'data:' + mfile.type + ';').replace('data:application\/octet-stream;', 'data:' + tomt + ';');\n                   if (eval(1 + ij) != eval('' + files.length)) {\n                   setTimeout(pfillit, 7000);\n                   return '';\n                   }\n  } else {\n                   <font color=blue>parent.durip(evt.target.result.replace('application\/octet-stream', tomt).replace('application\/octet-stream', tomt).replace('data:;', 'data:' + mfile.type + ';').replace('data:application\/octet-stream;', 'data:' + tomt + ';'));<\/font>\n  }\n}\n<\/code>\n ... by  <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php------------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> PHP web application you can also <a href='#trpdfit'>try below, in a pared down \"awkward interaction\" mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n\n \n<\/li>\n\n\n\n\n<li>and at that point, <font color=blue>at the right time<\/font> call a new parent Javascript function ...\n<code>\nvar datauris=[''];\n<br \/>\n function durip(indu) {\n   datauris.push(indu);\n }\n<\/code>\n<\/li>\n\n\n\n\n<li>used as the basis to <font color=blue>fire off window.open popup window executions representing second and on image corresponding to second and on PDF file creations<\/font> ...\n<code>\n if (('' + document.getElementById('myform').target) == '_top') { \n   <font color=blue>var woo=null;\n   if (datauris.length != 1) {\n    for (var ijk=1; ijk&lt;datauris.length; ijk++) {\n     woo=window.open('','_blank','top=50,left=50,width=500,height=500');\n     woo.document.write('&lt;html&gt;' + document.head.outerHTML + document.body.outerHTML.replace(' data-title=\\\"\\\" value=\\\"', ' data-title=\\\"\\\" value=\\\"-' + ijk).replace(datauris[0], datauris[ijk]).replace(datauris[0], datauris[ijk]).replace(datauris[0], datauris[ijk]) + '&lt;\/html&gt;');\n    }\n   }<\/font>\n } else { \n   alert(document.getElementById('myform').target); \n } \n<\/code>\n<\/li>\n\n\n\n\n<li>the download names of which are differentiated via a new navigational form hidden textbox ...\n&lt;?php echo \"\n<code>\n&lt;input type=hidden name=ipsuff data-title=\\\"\\\" value=\\\"\\\"&gt;&lt;\/input&gt;\n<\/code>\n\"; ?&gt;\n<\/li>\n\n\n\n\n<li><font color=blue>used<\/font> in ...\n&lt;?php \n<code>\nfunction server_remote_addr() {\n    $rma = $_SERVER['REMOTE_ADDR'];\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);\n    \/\/ you can add different browsers with the same way ..\n    if (1 == 2) {\n    if(preg_match('\/(chromium)[ \\\/]([\\w.]+)\/', $ua))\n            $rma = '000000'.$rma;\n    elseif(preg_match('\/(chrome)[ \\\/]([\\w.]+)\/', $ua))\n            $rma = '00000'.$rma;\n    elseif(preg_match('\/(safari)[ \\\/]([\\w.]+)\/', $ua))\n            $rma = '0000'.$rma;\n    elseif(preg_match('\/(opera)[ \\\/]([\\w.]+)\/', $ua))\n            $rma = '000'.$rma;\n    elseif(preg_match('\/(msie)[ \\\/]([\\w.]+)\/', $ua))\n            $rma = '00'.$rma;\n    elseif(preg_match('\/(mozilla)[ \\\/]([\\w.]+)\/', $ua))\n            $rma = '0'.$rma;\n    }\n    <font color=blue>if (isset($_GET['ipsuff'])) {\n    return \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . str_replace(' ','+',urldecode($_GET['ipsuff']));\n    } else if (isset($_POST['ipsuff'])) {\n    return \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma)) . str_replace(' ','+',urldecode($_POST['ipsuff']));\n    }<\/font>\n    return \"_\" . str_replace(\".\", \"_\", str_replace(\":\", \"_\", $rma));\n}\n<\/code>\n?&gt;\n<\/li>\n\n\n<\/ol>\n\n\n\n<!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-page-tutorial\/'>Image and Text Multiple PDF Page Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfcsscbt'>Previous relevant <a target=_blank title='Image and Text PDF CSS Colour Blending Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-css-colour-blending-tutorial\/'>Image and Text PDF CSS Colour Blending Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF CSS Colour Blending Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_colour_blending.jpg\" title=\"Image and Text PDF CSS Colour Blending Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF CSS Colour Blending Tutorial<\/p><\/div>\n<p>Around here our &#8230;<\/p>\n<ul>\n<li>desire not to rock &#8220;the apple cart&#8221; as far as having &#8220;things work&#8221; &#8230; on behalf of &#8230;<\/li>\n<li>making things be more aesthetically pleasing<\/li>\n<\/ul>\n<p> &#8230; <a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=ZBAijg5Betw'>does <strike>not<\/strike> compute<\/a>!  We, first and foremost, are interested in software working, rather than looking good.  And so, in our current Image and Text Nodes PDF Creator web application project, we are ready to persevere with the ugliness of the top left part of our web application design, and not mess around with the modular workings of the HTML iframe that handles our local file image browsing functionality.<\/p>\n<p>But, even so, there are mild CSS &#8220;colour blending&#8221; tweaks we can make to make this top left part of yesterday&#8217;s <a title='Image and Text PDF Reviewed Standing Order Tutorial' href='#itpdfrsot'>Image and Text PDF Reviewed Standing Order Tutorial<\/a>&#8216;s web application look more &#8220;designer&#8221;, involving &#8230;<\/p>\n<table>\n<tr>\n<th>Javascript DOM (document.body onload event logic) methodology to <font color=blue>overlay over<\/font> HTML iframe &#8220;framing&#8221; ugliness &#8230;<\/th>\n<\/tr>\n<tr>\n<td>\n<code><br \/>\n  function arectdivs() {<br \/>\n  if (document.getElementById('doverlay1')) {<br \/>\n    document.getElementById('doverlay1').style.position='absolute';<br \/>\n    document.getElementById('doverlay1').style.zIndex='999';<br \/>\n    document.getElementById('doverlay1').style.backgroundColor='#fefefe';<br \/>\n    document.getElementById('doverlay1').style.top='0px';<br \/>\n    document.getElementById('doverlay1').style.left='0px';<br \/>\n    document.getElementById('doverlay1').style.width='173px'; \/\/'' + eval(228 - eval('' + arect.width) + 'px';<br \/>\n    document.getElementById('doverlay1').style.height='' + eval(218 - eval('' + arect.top)) + 'px';<br \/>\n    \/\/alert(arect.top);<br \/>\n    document.getElementById('doverlay2').style.position='absolute';<br \/>\n    document.getElementById('doverlay2').style.zIndex='999';<br \/>\n    document.getElementById('doverlay2').style.backgroundColor='#fefefe';<br \/>\n    document.getElementById('doverlay2').style.top='' + eval(222 - eval('' + arect.top) + eval('' + arect.height)) + 'px';<br \/>\n    document.getElementById('doverlay2').style.left='0px';<br \/>\n    document.getElementById('doverlay2').style.width='173px'; \/\/'' + eval(228 - eval('' + arect.width)) + 'px';<br \/>\n    document.getElementById('doverlay2').style.height='14px'; \/\/'' + eval(228 - eval('' + arect.top) + eval('' + arect.height)) + 'px';<br \/>\n<br \/>\n    document.getElementById('doverlay3').style.position='absolute';<br \/>\n    \/\/document.getElementById('doverlay3').style.border='1px dotted red';<br \/>\n    document.getElementById('doverlay3').style.zIndex='999';<br \/>\n    document.getElementById('doverlay3').style.backgroundColor='#fefefe';<br \/>\n    document.getElementById('doverlay3').style.top='10px'<br \/>\n    document.getElementById('doverlay3').style.left='100px';<br \/>\n    document.getElementById('doverlay3').style.width='50px';<br \/>\n    document.getElementById('doverlay3').style.height='50px';<br \/>\n  }<br \/>\n  }<br \/>\n<\/code>\n<\/td>\n<tr>\n<tr>\n<th>CSS background colour blending via <font color=blue> <a target=_blank title='Linear gradients information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/linear-gradient'>linear-gradient<\/a> (inline HTML) CSS background-image property<\/font> &#8230;<\/th>\n<\/tr>\n<tr>\n<td>\n&lt;?php echo &#8221;<br \/>\n<code><br \/>\n&lt;body <font color=blue>style='background-image:linear-gradient(#fefefe,#fefefe,silver,#fefefe,#fefefe);'<\/font> id=mybody onload=\\\" lslook();  \" . $getit . \"  \\\"&gt;<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;\n<\/td>\n<\/tr>\n<\/table>\n<p> &#8230; in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php------------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php------------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;fourth draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-css-colour-blending-tutorial\/'>Image and Text PDF CSS Colour Blending Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfrsot'>Previous relevant <a target=_blank title='Image and Text PDF Reviewed Standing Order Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-reviewed-standing-order-tutorial\/'>Image and Text PDF Reviewed Standing Order Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Reviewed Standing Order Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_review.gif\" title=\"Image and Text PDF Reviewed Standing Order Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Reviewed Standing Order Tutorial<\/p><\/div>\n<p>With the same sentiment as yesterday&#8217;s <a title='Image and Text PDF Undo Tutorial' href='#itpdfut'>Image and Text PDF Undo Tutorial<\/a>, especially its &#8220;all but&#8221; scenario thinking for Undo functionality usefulness, we&#8217;ve realized there could be great improvements in functionality scope by combining &#8230;<\/p>\n<ul>\n<li>Standing Order PDF Creation &#8230; with &#8230;<\/li>\n<li>fully automated phase &#8230; with &#8230;<\/li>\n<li>additional &#8220;review&#8221; user interactions allowed at the end<\/li>\n<\/ul>\n<p>All of this being <a href='#stage2'>stage 2<\/a> functionality, this is not as hard to arrange as you might think.  It&#8217;s the same as <i>fully automated<\/i> mode <font color=blue>just with the last click ignored programmatically<\/font> &#8230;<\/p>\n<p><code><br \/>\n      lsnames=lsval.split('@!@');<br \/>\n      <font color=blue>if (sofarmode == 4) {<br \/>\n        if (eval('' + lsnames.length) &gt; 2) {<br \/>\n          if (lsnames[eval(-1 + lsnames.length)].indexOf('!!!') == 0) {<br \/>\n            lsval=lsval.replace('@!@' + lsnames[eval(-1 + lsnames.length)], '');<br \/>\n            lsnames=lsval.split('@!@');<br \/>\n          }<br \/>\n        }<br \/>\n        sofarmode=3;<br \/>\n      }<\/font><br \/>\n<\/code><\/p>\n<p> &#8230; to allow for the re-entry of default user interaction modus operandi, at the end.<\/p>\n<p>Additionally, we shore up some non DATE_ATOM date sequencing Standing Order weaknesses in  <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-----------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-----------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;fourth draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-reviewed-standing-order-tutorial\/'>Image and Text PDF Reviewed Standing Order Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfut'>Previous relevant <a target=_blank title='Image and Text PDF Undo Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-undo-tutorial\/'>Image and Text PDF Undo Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Undo Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_blob_click.jpg\" title=\"Image and Text PDF Undo Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Undo Tutorial<\/p><\/div>\n<p>There are lots of reasons &#8220;Undo&#8221; types of functionalities are good when human user interaction determines the content of the PDFs that get created in our current Image and Text Nodes PDF Creation project.  Some are &#8230;<\/p>\n<ul>\n<li>mistakes<\/li>\n<li>&#8220;all but&#8221; scenarios &#8230; now apt as we have some &#8220;repeated content&#8221; and\/or &#8220;datetime sequence&#8221; entry arrangements possible<\/li>\n<\/ul>\n<p>And so we add <font color=blue>&#8220;onclick&#8221; and &#8220;onmouseover&#8221; and &#8220;onmouseout&#8221;<\/font> event intelligence &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\n      document.getElementById('blob').innerHTML+='&lt;div<font color=blue> onmouseover=\\\" blobover(this); \\\" onmouseout=\\\" blobout(this);\\\" onclick=\\\" blobdel(this.id); \\\"<\/font> title=\\\"\\\" id=\\\"bpdftext' + coordn + '\\\" style=\\\"position:absolute;left:' + x + 'px;top:' + y + 'px;background-color:red;z-index:200;\\\"&gt;x&lt;\/div&gt;';<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p> &#8230; to those new <a href='#cpf'>click position flagging<\/a> div elements introduced yesterday &#8230;<\/p>\n<p><code><br \/>\nfunction blobover(ini) {<br \/>\n  event.target.style.backgroundColor='orange';<br \/>\n}<br \/>\n<br \/>\nfunction blobout(ini) {<br \/>\n  event.target.style.backgroundColor='red';<br \/>\n}<br \/>\n<br \/>\nfunction blobdel(inid) {<br \/>\n inid='' + event.target.id;<br \/>\n event.stopPropagation();<br \/>\n if (document.getElementById(inid).title.indexOf('Sorry') != 0) {<br \/>\n  document.getElementById(inid.substring(1)).value='';<br \/>\n  document.getElementById(inid).style.backgroundColor='cyan';<br \/>\n  document.getElementById(inid).title=document.getElementById(inid).title.replace('Delete ', 'Deleted ');<br \/>\n }<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Also adding to yesterday&#8217;s <a title='Image and Text PDF Standing Orders Tutorial' href='#itpdfsot'>Image and Text PDF Standing Orders Tutorial<\/a>&#8216;s progress we nuance that <a href='#dao'>DATE_ATOM type entry initial offset additional functionality<\/a> so in an example like the <font color=blue>Monday<\/font> one below &#8230;<\/p>\n<p><code><br \/>\nDATE_AToM-2<font color=blue>Monday<\/font> +=1 x 5<br \/>\n<\/code><\/p>\n<ol>\n<li>considers just the date part of a DateTime::ATOM timestamp for now in the current timezone<\/li>\n<li>subtract 2 days from that timestamp<\/li>\n<li>if not <font color=blue>Monday<\/font> subtract single days until a <font color=blue>Monday<\/font> DateTime::COOKIE timestamp is detected to determine<\/li>\n<li>clicked position filled with date part of DateTime::ATOM timestamp string<\/li>\n<li>next 4 clicks get that timestamp plus 1 day as the DateTime::ATOM timestamp string shown at the clicked position<\/li>\n<\/ol>\n<p>Why?  Well, it can free the user of this Image and Text Nodes PDF Creation web application using it to fill in a timesheet, for instance, from worrying <font size=1>(less)<\/font> about which day of the week they fill it out using a Standing Order arrangement they create and start using  in  <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php----------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php----------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;fourth draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/new-image-and-text-pdf-standing-orders-tutorial\/'>New Image and Text PDF Standing Orders Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfsot'>Previous relevant <a target=_blank title='Image and Text PDF Standing Orders Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-standing-orders-tutorial\/'>Image and Text PDF Standing Orders Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Standing Orders Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_standing_order.jpg\" title=\"Image and Text PDF Standing Orders Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Standing Orders Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='Image and Text PDF Multiline Tutorial' href='#itpdfmt'>Image and Text PDF Multiline Tutorial<\/a> work we have two functionality improvements &#8230;<\/p>\n<ul>\n<li>standing order PDF creations<\/li>\n<li id='cpf'>click position flagging (just during <a href='#stage2'>stage 2<\/a>)<\/li>\n<\/ul>\n<p> &#8230; both of which ask for a lot of <a target=_blank title='Javascript setTimeout() method information from w3schools' href='http:\/\/www.w3schools.com\/jsref\/met_win_settimeout.asp'>setTimeout<\/a> timer work.<\/p>\n<p>As far as Standing Orders go they work off dropdowns initiated as &#8230;<\/p>\n<p><span id=tablespan> &#8230; or &#8230; <select style=background-color:pink; onchange=lsnameget(this.value);><option value=>Optionally select a Standing Order PDF Creation below to step through &#8230;<\/option><\/select>&nbsp;<select style=background-color:magenta; onchange=lsnamefullauto(this.value);><option value=>Optionally select a Standing Order PDF Creation below to fully automate &#8230;<\/option><\/select>&nbsp;<select style=background-color:cyan; onchange=lsnamesemiauto(this.value);><option value=>Optionally select a Standing Order PDF Creation below to stop at sequence clicks and date clicks &#8230;<\/option><\/select>&nbsp;<select style=background-color:lightblue; onchange=lsnamedelete(this.value);><option value=>Optionally select a Standing Order PDF Creation to delete below &#8230;<\/option><\/select><\/p>\n<p> &#8230; and populated via various Javascript functions using window.<a target=_blank title='window.localStorage information from W3schools' href='https:\/\/www.w3schools.com\/jsref\/prop_win_localstorage.asp'>localStorage<\/a> ideas &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\nvar sofarso='\" . $newdts . $newdtssuffix . \"';<br \/>\nvar sofarsoatend='';<br \/>\nvar sofarsonext=1;<br \/>\nvar sofarmode=\" . $sfm . \";  \/\/ 1=step through and 2=stop at sequences and dates and 3=fully automate<br \/>\n<br \/>\nvar curone=2;<br \/>\nvar isokay=true;<br \/>\nvar xans='';<br \/>\nvar onlval='';<br \/>\nvar lsnames=[];<br \/>\nvar curls=-1;<br \/>\nvar origtz='';<br \/>\nvar lsname='';<br \/>\nvar newtz='';<br \/>\n<bnr><br \/>\nfunction lslook() {<br \/>\n  var lsstuff='', jj=1;<br \/>\n  if (('' + window.localStorage.getItem('pdftimesheet' + jj)).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n    if (decodeURIComponent('' + window.localStorage.getItem('pdftimesheet' + jj)).indexOf('@!@') != -1) {<br \/>\n      lsstuff='&lt;option value=\\\"' + 'pdftimesheet' + jj + '\\\"&gt;' + decodeURIComponent('' + window.localStorage.getItem('pdftimesheet' + jj)).split('@!@')[0].replace('_',' ') + '&lt;\/option&gt;';<br \/>\n    }<br \/>\n    jj++;<br \/>\n    while (('' + window.localStorage.getItem('pdftimesheet' + jj)).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n      if (decodeURIComponent('' + window.localStorage.getItem('pdftimesheet' + jj)).indexOf('@!@') != -1) {<br \/>\n        lsstuff+='&lt;option value=\\\"' + 'pdftimesheet' + jj + '\\\"&gt;' + decodeURIComponent('' + window.localStorage.getItem('pdftimesheet' + jj)).split('@!@')[0].replace('_',' ') + '&lt;\/option&gt;';<br \/>\n      }<br \/>\n      jj++;<br \/>\n    }<br \/>\n    sofarsonext=jj;<br \/>\n    document.getElementById('lstd').innerHTML='&lt;span id=tablespan&gt; ... or ... &lt;select style=background-color:pink; onchange=lsnameget(this.value);&gt;&lt;option value=&gt;Optionally select a Standing Order PDF Creation below to step through ...&lt;\/option&gt;' + lsstuff + '&lt;\/select&gt;&amp;nbsp;&lt;select style=background-color:magenta; onchange=lsnamefullauto(this.value);&gt;&lt;option value=&gt;Optionally select a Standing Order PDF Creation below to fully automate ...&lt;\/option&gt;' + lsstuff + '&lt;\/select&gt;&amp;nbsp;&lt;select style=background-color:cyan; onchange=lsnamesemiauto(this.value);&gt;&lt;option value=&gt;Optionally select a Standing Order PDF Creation below to stop at sequence clicks and date clicks ...&lt;\/option&gt;' + lsstuff + '&lt;\/select&gt;&amp;nbsp;' + '&lt;select style=background-color:lightblue; onchange=lsnamedelete(this.value);&gt;&lt;option value=&gt;Optionally select a Standing Order PDF Creation to delete below ...&lt;\/option&gt;' + lsstuff + '&lt;\/select&gt;';<br \/>\n  }<br \/>\n  onlval=location.search.split('myls3=')[1] ? decodeURIComponent(location.search.split('myls3=')[1].split('&')[0]) : '';<br \/>\n  if (onlval != '') {<br \/>\n    sofarmode=3;<br \/>\n  } else {<br \/>\n    onlval=location.search.split('myls2=')[1] ? decodeURIComponent(location.search.split('myls2=')[1].split('&')[0]) : '';<br \/>\n    if (onlval != '') {<br \/>\n      sofarmode=2;<br \/>\n      setTimeout(setupgn, 2000); \/\/document.getElementById('nextetc').innerHTML+='&lt;br&gt;&lt;button onclick=gonext();&gt;Next&lt;\/button&gt;';<br \/>\n    } else {<br \/>\n      onlval=location.search.split('myls1=')[1] ? decodeURIComponent(location.search.split('myls1=')[1].split('&')[0]) : '';<br \/>\n      if (onlval != '') {<br \/>\n        sofarmode=1;<br \/>\n        setTimeout(setupgn, 2000); \/\/document.getElementById('nextetc').innerHTML+='&lt;br&gt;&lt;button onclick=gonext();&gt;Next&lt;\/button&gt;';<br \/>\n      } else {<br \/>\n        onlval=location.search.split('myls=')[1] ? decodeURIComponent(location.search.split('myls=')[1].split('&')[0]) : '';<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n<br \/> <br \/>\n  if (onlval != '') {<br \/>\n    \/\/alert(onlval);<br \/>\n    if (onlval.indexOf('_') != -1 && onlval.indexOf('\/') != -1) { \/\/ && onlval.indexOf('\/') &gt; onlval.indexOf('_')) {<br \/>\n     if (onlval.indexOf('\/') &gt; onlval.indexOf('_')) {<br \/>\n      newtz=onlval.replace(onlval.split('_')[0] + '_', '');<br \/>\n      onlval=onlval.split('_')[0];<br \/>\n     }<br \/>\n    }<br \/>\n    \/\/alert('Onlval=' + onlval + ' ... ' + ('' + window.localStorage.getItem(onlval)));<br \/>\n    if (decodeURIComponent('' + window.localStorage.getItem(onlval)).indexOf('@!@') != -1) {<br \/>\n     lsval=decodeURIComponent(window.localStorage.getItem(onlval));<br \/>\n     \/\/alert('Lsval=' + lsval);<br \/>\n     if (lsval.indexOf('@!@') != -1) {<br \/>\n      lsnames=lsval.split('@!@');<br \/>\n      curls=0;<br \/>\n      lsname=lsval.split('@!@')[0];<br \/>\n      lsvaliname=lsval.split('@!@')[1];<br \/>\n      if (lsvaliname.indexOf('data:') == 0) {  lsvaliname=lsvaliname.replace(\/\" . \"\\\\\" . \" \/g,'+');  }<br \/>\n      if (eval('' + lsval.length) &gt; 2) {<br \/>\n        if (lsval[2].replace('#','').trim() != '' && ('' + lsval[1] + ' ').indexOf('#') == 0) {<br \/>\n           document.getElementById('iurl').value='#' + lsval[2];<br \/>\n           setjust(document.getElementById('iurl'));<br \/>\n           curone++;<br \/>\n        }<br \/>\n      }<br \/>\n      \/\/alert('onlval=' + onlval);<br \/>\n      document.getElementById('mytzn').value=maybels('' + Intl.DateTimeFormat().resolvedOptions().timeZone); \/\/maybels(document.getElementById('mytzn').value);<br \/>\n      sofarso=lsname + '@!@' + lsvaliname;<br \/>\n      document.getElementById('slideshow').value=lsvaliname;  \/\/ standing order image established<br \/>\n      \/\/alert('here');<br \/>\n      datauri='';<br \/>\n      lookfordatauri();<br \/>\n     }<br \/>\n    }<br \/>\n  } else {<br \/>\n     document.getElementById('mytzn').value=maybels('' + Intl.DateTimeFormat().resolvedOptions().timeZone);<br \/>\n     sofarso+='_' + document.getElementById('mytzn').value + '@!@';<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\n  function setupgn() {<br \/>\n    document.getElementById('nextetc').innerHTML+='&lt;br&gt;&lt;button onclick=gonext();&gt;Next&lt;\/button&gt;';<br \/>\n  }<br \/>\n<br \/>\nfunction lsnamefullauto(tv) {<br \/>\n  if (tv.trim() != '') {<br \/>\n   sofarmode=3;<br \/>\n   lsnameget(tv.split('_')[0]);<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nfunction lsnamesemiauto(tv) {<br \/>\n  if (tv.trim() != '') {<br \/>\n   sofarmode=2;<br \/>\n   lsnameget(tv.split('_')[0]);<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nfunction lsnameget(tv) {<br \/>\n  \/\/alert(98);<br \/>\n  if (tv.trim() != '') {<br \/>\n  \/\/alert(tv.split('_')[0]);<br \/>\n   if (('' + window.localStorage.getItem(tv.split('_')[0])).replace(\/^undefined\/g,'').replace(\/^null\/g,'') != '') {<br \/>\n  \/\/alert('2:' + tv.split('_')[0]);<br \/>\n    lsval=decodeURIComponent(window.localStorage.getItem(tv.split('_')[0]));<br \/>\n  \/\/alert('3:' + lsval);<br \/>\n    if (lsval.indexOf('@!@') == -1) {<br \/>\n     sofarmode=0;<br \/>\n    } else if (lsval.indexOf('@!@') != -1) {<br \/>\n     lsname=lsval.split('@!@')[0];<br \/>\n     lsvaliname=lsval.split('@!@')[1];<br \/>\n  \/\/alert('lsname:' + lsname);<br \/>\n     if (lsvaliname.indexOf('data:') == 0) {  lsvaliname=lsvaliname.replace(\/\" . \"\\\\\" . \" \/g,'+');  }<br \/>\n  \/\/alert('lsvaliname:' + lsvaliname);<br \/>\n     if (lsvaliname.trim() != '') {<br \/>\n        if (sofarmode == 0) { sofarmode=1; }<br \/>\n        if (lsname.indexOf('_') != -1 && lsname.indexOf('\/') != -1) {<br \/>\n        \/\/alert('lsname=' + lsname);<br \/>\n        if (document.URL.indexOf('?myls') != -1) {<br \/>\n  sofarmode=sofarmode; \/\/alert('lsvaliname:' + lsvaliname);<br \/>\n        } else {<br \/>\n        if (lsname.indexOf('\/') &gt; lsname.indexOf('_')) {<br \/>\n          location.href=document.URL.split('?')[0].split('#')[0] + '?myls' + sofarmode + '=' + encodeURIComponent(tv + '_' + lsname.replace(lsname.split('_')[0] + '_', '') + sofarsoatend);<br \/>\n        } else {<br \/>\n          location.href=document.URL.split('?')[0].split('#')[0] + '?myls' + sofarmode + '=' + encodeURIComponent(tv);<br \/>\n        }<br \/>\n        }<br \/>\n        }<br \/>\n     }<br \/>\n<br \/> <br \/>\n    }<br \/>\n   }<br \/>\n  }<br \/>\n}<br \/>\n<br \/>\nfunction gonext() {<br \/>\n  document.getElementById('mytextarea').value='';<br \/>\n  isokay=true;<br \/>\n  curls++;<br \/>\n}<br \/>\n<br \/>\nfunction lsnamedelete(tv) {<br \/>\n  window.localStorage.setItem(tv.split('_')[0], '');<br \/>\n}<br \/>\n<br \/>\nfunction lsnamesaveas() {<br \/>\n  if (sofarso.trim() != '') {<br \/>\n    \/\/alert('pdftimesheet' + sofarsonext + ' will get value ' + sofarso + sofarsoatend);<br \/>\n    window.localStorage.setItem('pdftimesheet' + sofarsonext, encodeURIComponent(sofarso + sofarsoatend));<br \/>\n    sofarsonext++;<br \/>\n  }<br \/>\n}<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p> &#8230; in  <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php---------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php---------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;fourth draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/new-image-and-text-pdf-standing-order-tutorial\/'>Image and Text PDF Standing Order Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfmt'>Previous relevant <a target=_blank title='Image and Text PDF Multiline Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-multiline-tutorial\/'>Image and Text PDF Multiline Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Multiline Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_lf.jpg\" title=\"Image and Text PDF Timesheet Multiline Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Multiline Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='Image and Text PDF Timesheet Emojis Tutorial' href='#itpdftet'>Image and Text PDF Timesheet Emojis Tutorial<\/a>&#8216;s progress with our Image and Text Nodes PDF Creator web application, today, we address &#8230;<\/p>\n<ul>\n<li>multiline entries<\/li>\n<li id='dao'>DATE_ATOM type entry initial offset additional functionality<\/li>\n<\/ul>\n<p>As far as &#8220;multiline entries&#8221; go we find a way to introduce, via the new HTML textarea (within the &#8220;toast&#8221; DIV) &#8230;<\/p>\n<p><code><br \/>\n&lt;details&gt;&lt;summary style=background-color:lightblue;&gt;For next click establish default text ...&lt;\/summary&gt;&lt;textarea id=mytextarea cols=40 rows=10 value=&gt;&lt;\/textarea&gt;&lt;\/details&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; as an optional means by which the <font color=blue>prompt window default value<\/font> can be managed via the <i>~~<\/i> equating to a <i>line feed<\/i> way &#8230;<\/p>\n<p><code><br \/>\nfunction askaway() {<br \/>\n  var ans=' ';<br \/>\n  if (startrecording && !showingc) {<br \/>\n  if (repeats &gt; 0) {<br \/>\n  ans=lastans;<br \/>\n  if (ans == null) { ans=''; }<br \/>\n  if (analyze(ans).trim() == '') { startrecording=false; if (1 == 11) {  alert(document.getElementById('coords').innerHTML);  } document.getElementById('myform').submit();  } else { addtoform(ans); setTimeout(askaway, 5000);   }<br \/>\n  } else {<br \/>\n  repeats=0;<br \/>\n  lastans='';<br \/>\n  <font color=blue>var indef='';<br \/>\n  if (document.getElementById('mytextarea')) {<br \/>\n    if (document.getElementById('mytextarea').value != '') {<br \/>\n      indef=document.getElementById('mytextarea').value;<br \/>\n      while (indef.indexOf(String.fromCharCode(10)) != -1) {<br \/>\n        indef=indef.replace(String.fromCharCode(10), '~~')<br \/>\n      }<br \/>\n      document.getElementById('mytextarea').value='';<br \/>\n    }<br \/>\n  }<\/font><br \/>\n  ans=prompt('Enter with nothing to proceed.  Else enter text number ' + coordn + ' to place where last click was made.  Can use a suffix such as x 5 to repeat value on the 4 clicks to follow.  Optionally prefix by text Font Family (for all text if Arial no good versus Courier or Helvetica or Arial or Times or Symbol or ZapfDingbats);Font Style (double semicolon delimit for all text default if Bold no good else single semicolon delimit for this text only versus Normal or Italic or Bold or Underline);Font Size in px (for this text if 16px no good) delimited by semicolon.  Line feed via ~~ anywhere.',<font color=blue>indef<\/font>);<br \/>\n  if (ans == null) { ans=''; }<br \/>\n  var rarris=ans.replace(' * ',' x ').split(' x 1');<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 2');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 3');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 4');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 5');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 6');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 7');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 8');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 9');  }<br \/>\n  if (rarris.length == 1) {  rarris=ans.replace(' * ',' x ').split(' x 0');  }<br \/>\n  if (rarris.length &gt; 1) { repeats=eval(0 + eval('' + ans.replace(' * ',' x ').split(' x ')[1])); lastans=ans.replace(' * ',' x ').split(' x ')[0];   } else if (1 == 3) { lastans=''; }<br \/>\n  if (analyze(ans).trim() == '') { startrecording=false; if (1 == 11) {  alert(document.getElementById('coords').innerHTML);  } document.getElementById('myform').submit();  } else { addtoform(ans); setTimeout(askaway, 5000);   }<br \/>\n  }<br \/>\n  }<br \/>\n}<br \/>\n<\/code><\/p>\n<p> &#8230; by which we set in play the new <font color=blue>for loop<\/font> method to place into the PDF individual line records &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n   <font color=blue>$str_is=explode(\"\\n\", $stris);<br \/>\n   $xfsz=0;<br \/>\n   $yfsz=floatval($fsz);<br \/>\n   for ($ii=0; $ii&lt;sizeof($str_is); $ii++) {<\/font><br \/>\n       if (isset($_POST['pdfdirectiontext' . $texti])) {<br \/>\n    \/\/file_put_contents('xxx.xxx',$_POST['pdfdirectiontext' . $texti]);<br \/>\n       if (('' . urldecode($_POST['pdfdirectiontext' . $texti])) == '') {<br \/>\n    \/\/file_put_contents('xx.xxx',$_POST['pdfdirectiontext' . $texti]);<br \/>\n       if (1 == 8 && strpos($str_is[$ii], \"\\n\") !== false) {<br \/>\n       $outputpdf-&gt;SetXY($ourx,$oury); \/\/,'');<br \/>\n       $outputpdf-&gt;Write(5, html_entity_decode(<font color=blue>$str_is[$ii]<\/font>));<br \/>\n       } else {<br \/>\n       $outputpdf-&gt;Text($ourx,$oury,<font color=blue>$str_is[$ii]<\/font>);<br \/>\n       }<br \/>\n       if (isset($_POST['pdfdirectiontext'])) {<br \/>\n         $_POST['pdfdirectiontext']=\"R\"; \/\/ because means \"from here on\"<br \/>\n       }<br \/>\n       } else {<br \/>\n    \/\/file_put_contents('xx.xx',$_POST['pdfdirectiontext' . $texti]);<br \/>\n       $outputpdf-&gt;TextWithDirection($ourx,$oury,<font color=blue>$str_is[$ii]<\/font>,$_POST['pdfdirectiontext' . $texti]);<br \/>\n       if (isset($_POST['pdfdirectiontext'])) {<br \/>\n         $_POST['pdfdirectiontext']=$_POST['pdfdirectiontext' . $texti]; \/\/ because means \"from here on\"<br \/>\n         <font color=blue>if ($_POST['pdfdirectiontext' . $texti] == \"U\") {<br \/>\n           $xfsz=floatval($fsz);<br \/>\n           $yfsz=0;<br \/>\n         } else if ($_POST['pdfdirectiontext' . $texti] == \"D\") {<br \/>\n           $xfsz=-floatval($fsz);<br \/>\n           $yfsz=0;<br \/>\n         }<\/font><br \/>\n       } else {<br \/>\n         $odir=$_POST['pdfdirectiontext' . $texti];<br \/>\n         <font color=blue>if ($odir == \"U\") {<br \/>\n           $xfsz=floatval($fsz);<br \/>\n           $yfsz=0;<br \/>\n         } else if ($odir == \"D\") {<br \/>\n           $xfsz=-floatval($fsz);<br \/>\n           $yfsz=0;<br \/>\n         }<\/font><br \/>\n       }<br \/>\n       }<br \/>\n       } else if (isset($_POST['pdfrotatetextdeg' . $texti])) {<br \/>\n       if (('' . urldecode($_POST['pdfrotatetextdeg' . $texti])) == '') {<br \/>\n       $outputpdf-&gt;Text($ourx,$oury,<font color=blue>$str_is[$ii]<\/font>);<br \/>\n       if (isset($_POST['pdfrotatetextdeg'])) {<br \/>\n         $_POST['pdfrotatetextdeg']=\"0\"; \/\/ because means \"from here on\"<br \/>\n       }<br \/>\n       } else {<br \/>\n       $outputpdf-&gt;TextWithRotation($ourx,$oury,<font color=blue>$str_is[$ii]<\/font>,$_POST['pdfrotatetextdeg' . $texti],0);<br \/>\n       if (isset($_POST['pdfrotatetextdeg'])) {<br \/>\n         $_POST['pdfrotatetextdeg']=$_POST['pdfrotatetextdeg' . $texti]; \/\/ bdecause means \"from here on\"<br \/>\n         <font color=blue>$xfsz=sin(floatval($_POST['pdfrotatetextdeg' . $texti]) * pi() \/ 180.0) * floatval($fsz);<br \/>\n         $yfsz=cos(floatval($_POST['pdfrotatetextdeg' . $texti]) * pi() \/ 180.0) * floatval($fsz);<\/font><br \/>\n       } else {<br \/>\n         $orot=$_POST['pdfrotatetextdeg' . $texti];<br \/>\n         <font color=blue>$str_is[$ii]<\/font>$xfsz=sin(floatval($orot) * pi() \/ 180.0) * floatval($fsz);<br \/>\n         $yfsz=cos(floatval($orot) * pi() \/ 180.0) * floatval($fsz);<\/font><br \/>\n       }<br \/>\n       }<br \/>\n       } else if ($odir != \"\") {<br \/>\n    \/\/file_put_contents('xxxx.xx',$odir . ' for ' . $texti);<br \/>\n       $outputpdf-&gt;TextWithDirection($ourx,$oury,<font color=blue>$str_is[$ii]<\/font>,$odir);<br \/>\n         <font color=blue>if ($odir == \"U\") {<br \/>\n           $xfsz=floatval($fsz);<br \/>\n           $yfsz=0;<br \/>\n         } else if ($odir == \"D\") {<br \/>\n           $xfsz=-floatval($fsz);<br \/>\n           $yfsz=0;<br \/>\n         }<\/font><br \/>\n       } else if (isset($_POST['pdfdirectiontext'])) {<br \/>\n    \/\/file_put_contents('xxxxx.xx',$_POST['pdfdirectiontext'] . ' For ' . $texti);<br \/>\n       $outputpdf-&gt;TextWithDirection($ourx,$oury,<font color=blue>$str_is[$ii]<\/font>,$_POST['pdfdirectiontext']);<br \/>\n         <font color=blue>if ($_POST['pdfdirectiontext'] == \"U\") {<br \/>\n           $xfsz=floatval($fsz);<br \/>\n           $yfsz=0;<br \/>\n         } else if ($_POST['pdfdirectiontext'] == \"D\") {<br \/>\n           $xfsz=-floatval($fsz);<br \/>\n           $yfsz=0;<br \/>\n         }<\/font><br \/>\n       } else if ($orot != \"\") {<br \/>\n       $outputpdf-&gt;TextWithRotation($ourx,$oury,<font color=blue>$str_is[$ii]<\/font>,$orot,0);<br \/>\n       } else if (isset($_POST['pdfrotatetextdeg'])) {<br \/>\n       $outputpdf-&gt;TextWithRotation($ourx,$oury,<font color=blue>$str_is[$ii]<\/font>,$_POST['pdfrotatetextdeg'],0);<br \/>\n       <font color=blue>$str_is[$ii]<\/font>$xfsz=sin(floatval($_POST['pdfrotatetextdeg']) * pi() \/ 180.0) * floatval($fsz);<br \/>\n       $yfsz=cos(floatval($_POST['pdfrotatetextdeg']) * pi() \/ 180.0) * floatval($fsz);<\/font><br \/>\n       } else {<br \/>\n       if (1 == 8 && strpos(<font color=blue>$str_is[$ii]<\/font>, \"\\n\") !== false) {<br \/>\n       $outputpdf-&gt;SetXY($ourx,$oury); \/\/,'');<br \/>\n       $outputpdf-&gt;Write($fsz, html_entity_decode(<font color=blue>$str_is[$ii]<\/font>));<br \/>\n       } else {<br \/>\n       $outputpdf-&gt;Text($ourx,$oury,<font color=blue>$str_is[$ii]<\/font>);<br \/>\n       }<br \/>\n       }<br \/>\n     <font color=blue>$ourx+=$xfsz;<br \/>\n     $oury+=$yfsz;<br \/>\n     }<\/font><br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p>Regarding <i>DATE_ATOM type entry initial offset additional functionality<\/i> we realized its importance when thinking about future &#8220;standing order&#8221; (maybe regarding timesheet) ideas into the future.  You may fill out the PDF days ahead of it being &#8220;apt&#8221;, and so, allowing for &#8220;offset steps in time&#8221; different to the time of execution might be vital for &#8220;automation ease&#8221; later on.<\/p>\n<p>Take a look at how this was achieved by examining <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php--------GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php--------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;fourth draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-multiline-tutorial\/'>New Image and Text PDF Multiline Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdftet'>Previous relevant <a target=_blank title='Image and Text PDF Timesheet Emojis Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-timesheet-emojis-tutorial\/'>Image and Text PDF Timesheet Emojis Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Timesheet Emojis Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfemoji_one.jpg\" title=\"Image and Text PDF Timesheet Emojis Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Timesheet Emojis Tutorial<\/p><\/div>\n<p>Are emojis &#8230;<\/p>\n<ul>\n<li>text &#8230; or &#8230;<\/li>\n<li>graphics&nbsp;&nbsp;<font size=1>?<\/font><\/li>\n<\/ul>\n<p>We normally think &#8220;text&#8221;, but today&#8217;s scenario, on top of the progress with yesterday&#8217;s <a title='Image and Text PDF Timesheet Value Sequences Tutorial' href='#itpdftvst'>Image and Text PDF Timesheet Value Sequences Tutorial<\/a> harkens back to software written before emojis were invented, that being the <a target=_blank title='FPDF library' href='HTTP:\/\/www.fpdf.org\/'>FPDF<\/a> PHP library.   No matter what anybody writes about PHP ways to try to get FPDF to create emojis in a PDF you need to involve a font that can handle unicode data, and that would involve a big ttf file to handle all the emoji characters in the woooooorrrrrllllldddd.   Quite an ask?!<\/p>\n<p>And yet, we revisited this old chestnut for half a day trying things until the solution dawned.  Start thinking of an emoji as &#8220;graphics&#8221;.  And so we can hook into the &#8220;Image&#8221; base for our PDF creation in thinking this way.  And what conduit can help place an &#8220;emoji graphic&#8221; into an &#8230;<\/p>\n<ul>\n<li>image&nbsp;&nbsp;<font size=1><sub>?<\/sub><\/font> &#8230; the best conduit since HTML5, we think is the HTML &#8230;<\/li>\n<li>canvas<\/li>\n<\/ul>\n<p>Once starting to think more clearly we developed this Javascript function to help here &#8230;<\/p>\n<p><code><br \/>\nfunction canvasize(inx, iny, inemojis) {<br \/>\n  var lineHeight=eval('' + document.getElementById('tsiz').value);<br \/>\n  if (document.getElementById('tdir').value.toUpperCase().substring(0,1) == 'U') {<br \/>\n  ctx.save();<br \/>\n  ctx.translate(inx, iny);<br \/>\n  ctx.rotate(-Math.PI \/ 2);<br \/>\n  ctx.textAlign = 'left';<br \/>\n  ctx.fillText(inemojis, 0, lineHeight \/ 2);<br \/>\n  ctx.restore();<br \/>\n  } else if (document.getElementById('tdir').value.toUpperCase().substring(0,1) == 'D') {<br \/>\n  ctx.save();<br \/>\n  ctx.translate(inx, iny);<br \/>\n  ctx.rotate(Math.PI \/ 2);<br \/>\n  ctx.textAlign = 'left';<br \/>\n  ctx.fillText(inemojis, 0, lineHeight \/ 2);<br \/>\n  ctx.restore();<br \/>\n  } else if (document.getElementById('tdir').value.toUpperCase().substring(0,1) == 'L') {<br \/>\n  ctx.save();<br \/>\n  ctx.translate(inx, iny);<br \/>\n  ctx.rotate(Math.PI \/ 1);<br \/>\n  ctx.textAlign = 'left';<br \/>\n  ctx.fillText(inemojis, 0, lineHeight \/ 2);<br \/>\n  ctx.restore();<br \/>\n  } else if (document.getElementById('trot').value.toUpperCase().substring(0,1) != '0') {<br \/>\n  ctx.save();<br \/>\n  ctx.translate(inx, iny);<br \/>\n  ctx.rotate(eval(eval('' + document.getElementById('trot').value) * Math.PI \/ 180.0));<br \/>\n  ctx.textAlign = 'left';<br \/>\n  ctx.fillText(inemojis, 0, lineHeight \/ 2);<br \/>\n  ctx.restore();<br \/>\n  } else if (document.getElementById('tdir').value.toUpperCase().substring(0,1) == 'R') {<br \/>\n  ctx.fillText(inemojis, inx, iny);<br \/>\n  } else {<br \/>\n  ctx.fillText(inemojis, inx, iny);<br \/>\n  }<br \/>\n  document.getElementById('slideshow').value=mycanvas.toDataURL('image\/jpeg');<br \/>\n  document.body.style.backgroundImage='url(' + document.getElementById('slideshow').value + ')';<br \/>\n}<br \/>\n<\/code><\/p>\n<p> &#8230; <font color=blue>conditionally called upon<\/font> via &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\n\/**<br \/>\n * Convert a string to HTML entities<br \/>\n *\/<br \/>\nString.prototype.toHtmlEntities = function() {  \/\/ Thanks to <a target=_blank title='https:\/\/zditect.com\/code\/javascript\/easy-solution-to-encode-html-entities-in-javascript.html' href='https:\/\/zditect.com\/code\/javascript\/easy-solution-to-encode-html-entities-in-javascript.html'>https:\/\/zditect.com\/code\/javascript\/easy-solution-to-encode-html-entities-in-javascript.html<\/a><br \/>\n    return this.replace(\/.\/gm, function(s) {<br \/>\n        return (s.match(\/[a-z0-9\" . \"\\\\\" . \"s]+\/i)) ? s : '&#' + s.charCodeAt(0) + ';';<br \/>\n    });<br \/>\n};<br \/>\n<br \/>\nfunction addtoform(withwhat) {<br \/>\n  if (withwhat.trim() != '') {<br \/>\n    if (x &gt;= 0 && y &gt;= 0) {<br \/>\n      document.getElementById('coords').innerHTML+='&lt;input type=hidden name=pdfx' + coordn + ' value=\\\"' + ('' + x).split('.')[0] + ontox + '\\\"&gt;&lt;\/input&gt;';<br \/>\n      document.getElementById('coords').innerHTML+='&lt;input type=hidden name=pdfy' + coordn + ' value=\\\"' + ('' + y).split('.')[0] + '\\\"&gt;&lt;\/input&gt;';<br \/>\n      <font color=blue>if (withwhat.toHtmlEntities().replace(\/\\\\&\\\\#[0-9][0-9][0-9]\\\\;\/g,'').replace(\/\\\\&\\\\#[0-9][0-9]\\\\;\/g,'').replace(\/\\\\&\\\\#[0-9]\\\\;\/g,'').indexOf('&#') &gt;= 0) {<br \/>\n      document.getElementById('coords').innerHTML+='&lt;input type=hidden name=pdftext' + coordn + ' value=\\\"\\\"&gt;&lt;\/input&gt;';<br \/>\n      canvasize(('' + x).split('.')[0], ('' + y).split('.')[0], withwhat);<br \/>\n      } else {<\/font><br \/>\n      document.getElementById('coords').innerHTML+='&lt;input type=hidden name=pdftext' + coordn + ' value=\\\"' + withwhat.toHtmlEntities() + '\\\"&gt;&lt;\/input&gt;';<br \/>\n      <font color=blue>}<\/font><br \/>\n      coordn++;<br \/>\n      document.getElementById('tnum').value='' + coordn;<br \/>\n      ontox='';<br \/>\n      startrecording=false;<br \/>\n    }<br \/>\n  }<br \/>\n}<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p> &#8230; in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-------GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;fourth draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/new-image-and-text-pdf-timesheet-emojis-tutorial\/'>Image and Text PDF Timesheet Emojis Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdftvst'>Previous relevant <a target=_blank title='Image and Text PDF Timesheet Value Sequences Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-timesheet-value-sequences-tutorial\/'>Image and Text PDF Timesheet Value Sequences Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Timesheet Value Sequences Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_date_sequence.jpg\" title=\"Image and Text PDF Timesheet Value Sequences Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Timesheet Value Sequences Tutorial<\/p><\/div>\n<p>To my mind the biggest bugbears with filling out timesheets are &#8230;<\/p>\n<ul>\n<li>totally repetitious value repeats<\/li>\n<li>date or datetime or time sequencing<\/li>\n<\/ul>\n<p> &#8230; but working off the progress up until yesterday&#8217;s <a title='Image and Text PDF More Toast Tutorial' href='#itpdfmtt'>Image and Text PDF More Toast Tutorial<\/a> we got some solace reading <a target=_blank href='https:\/\/www.w3schools.com\/php\/func_date_date_format.asp' title='PHP date_format() Function information from W3schools'>PHP date_format() Function<\/a>, particularly &#8230;<\/p>\n<blockquote cite='https:\/\/www.w3schools.com\/php\/func_date_date_format.asp'>\n<ul>\n<li>DATE_ATOM &#8211; Atom (example: 2013-04-12T15:52:01+00:00)<\/li>\n<li>DATE_COOKIE &#8211; HTTP Cookies (example: Friday, 12-Apr-13 15:52:01 UTC)<\/li>\n<li>DATE_ISO8601 &#8211; ISO-8601 (example: 2013-04-12T15:52:01+0000)<\/li>\n<li>DATE_RFC822 &#8211; RFC 822 (example: Fri, 12 Apr 13 15:52:01 +0000)<\/li>\n<li>DATE_RFC850 &#8211; RFC 850 (example: Friday, 12-Apr-13 15:52:01 UTC)<\/li>\n<li>DATE_RFC1036 &#8211; RFC 1036 (example: Fri, 12 Apr 13 15:52:01 +0000)<\/li>\n<li>DATE_RFC1123 &#8211; RFC 1123 (example: Fri, 12 Apr 2013 15:52:01 +0000)<\/li>\n<li>DATE_RFC2822 &#8211; RFC 2822 (Fri, 12 Apr 2013 15:52:01 +0000)<\/li>\n<li>DATE_RFC3339 &#8211; Same as DATE_ATOM (since PHP 5.1.3)<\/li>\n<li>DATE_RSS &#8211; RSS (Fri, 12 Aug 2013 15:52:01 +0000)<\/li>\n<li>DATE_W3C &#8211; World Wide Web Consortium (example: 2013-04-12T15:52:01+00:00)<\/li>\n<\/ul>\n<\/blockquote>\n<p> &#8230; as ideas for user entries not involving arcane timestamp formats (such as today&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_date_sequence.jpg\">tutorial picture&#8217;s<\/a> <i>DATE_AToM -=2 x 7<\/i> example) while allowing for many user date\/time timesheet requirements, teamed with our new <a href='#stage2'>stage 2<\/a> document.body &#8220;title&#8221; (ie. hover) advice &#8230;<\/p>\n<blockquote><p>\nClick where text is to be placed in your resultant PDF.   Can use a suffix such as x 5 to repeat value on the 4 clicks to follow.  As far as dates go consult https:\/\/www.w3schools.com\/php\/func_date_date_format.asp DATE_ATOM type entries where DATE_ followed by ymd lowercase character correspondence in second part means change just date via that ymd means whereas date_ followed by hms lowercase character correspondence in second part means change time via that hms means whereas uppercase second part preceeded by ymd lowercase character in first part means change datetime via that ymd means whereas datE_ followed by hms lowercase character correspondence in second part means change datetime via that hms means.  Incrementing scale can be defined via ++ or &#8212; or +=2 or -=4 types of strings before the x 5 repeat definitions.\n<\/p><\/blockquote>\n<p> &#8230;  in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php------GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php------GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;fourth draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-timesheet-value-sequences-tutorial\/'>Image and Text PDF Timesheet Value Sequences Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfmtt'>Previous relevant <a target=_blank title='Image and Text PDF More Toast Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-more-toast-tutorial\/'>Image and Text PDF More Toast Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF More Toast Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_more.gif\" title=\"Image and Text PDF More Toast Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF More Toast Tutorial<\/p><\/div>\n<p>In our current &#8220;Image and Text Nodes PDF Creator&#8221; PHP web application project, it is <a href='#stage2'>stage 2<\/a>, primarily, that we want to make more &#8220;feature<i>ful<\/i>&#8220;, shall we say!  It was as we were constructing yesterday&#8217;s <a title='Image and Text PDF Rotation and Direction Tutorial' href='#itpdfrdt'>Image and Text PDF Rotation and Direction Tutorial<\/a>&#8216;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\">animated GIF tutorial picture<\/a> we realized that it fell into that trap of &#8220;lack of reality&#8221; regarding its premise.  A background timesheet image with the hours already filled in?  This is not realistic.  And yet, regarding a &#8220;two pass&#8221; scenario, where a PDF&#8217;s JPEG could be called into play for a second pass, it is too much to ask users to put up with such complexity!   Better is to allow the user to change Text styling adequately enough, midstream, to allow this timesheet scenario &#8230;  <\/p>\n<ol>\n<li>start with no hours filled in (as the base image)<\/li>\n<li>user fills in the hours &#8230; then (courtesy of new &#8220;from then on&#8221; <i>more toast<\/i> functionality) &#8230;<\/li>\n<li>user (is able to) fill in the date strings<\/li>\n<\/ol>\n<p> &#8230; all in the one pass of execution of our &#8220;Image and Text Nodes PDF Creator&#8221; PHP web application.<\/p>\n<p>Again, the second of the <i>dual toast purposes<\/i> involves <i>position:fixed<\/i> but just in case users want to click for text nodes under it, we give 20 second periods where it is hidden, as you can see in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-----GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-----GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;third draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/new-image-and-text-pdf-rotation-and-direction-tutorial\/'>Image and Text PDF More Toast Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfrdt'>Previous relevant <a target=_blank title='Image and Text PDF Rotation and Direction Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-rotation-and-direction-tutorial\/'>Image and Text PDF Rotation and Direction Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Rotation and Direction Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_direction.gif\" title=\"Image and Text PDF Rotation and Direction Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Rotation and Direction Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Image and Text PDF Glowing Toast Tutorial' href='#itpdfgtt'>Image and Text PDF Glowing Toast Tutorial<\/a> allowed for text &#8230;<\/p>\n<ul>\n<li>where the size could be changed<\/li>\n<li>where the style could be changed<\/li>\n<li>where the font family could be changed<\/li>\n<\/ul>\n<p> &#8230; but users may want, particularly if they are infilling a timesheet, text &#8230;<\/p>\n<ul>\n<li>where colour can be changed<\/li>\n<li>where direction can be changed amongst Up Down Left Right<\/li>\n<li>where rotation can be changed<\/li>\n<\/ul>\n<p>To facilitate this, we appreciate the FPDF subclass developed <a target=_blank title='FPDF subclass' href='http:\/\/www.fpdf.org\/en\/script\/script31.php'>here, thanks<\/a>, and used it to improve the user selectable possibilities in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php----GETME\">our changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php----GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;third draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-rotation-and-direction-tutorial\/'>Image and Text PDF Rotation and Direction Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfgtt'>Previous relevant <a target=_blank title='Image and Text PDF Glowing Toast Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-glowing-toast-tutorial\/'>Image and Text PDF Glowing Toast Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Glowing Toast Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_glowing_toast.jpg\" title=\"Image and Text PDF Glowing Toast Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Glowing Toast Tutorial<\/p><\/div>\n<p><a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=tpwI7xk34bc'>Lemon curry<\/a>?  No, it&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_glowing_toast.jpg\">Glowing Toast<\/a> today!   Huh?!<\/p>\n<ul>\n<li><a target=_blank title='Glowing box' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/multiple-choice-quiz-with-glowing-box-tutorial\/'>Glowing<\/a><\/li>\n<li><a target=_blank href='https:\/\/developer.android.com\/guide\/topics\/ui\/notifiers\/toasts' title='Android toast dialog box'>Toast<\/a><\/li>\n<\/ul>\n<p>Well, it&#8217;s a way to temporarily show a very noticeable overlaid message box &#8230;<\/p>\n<p><code><br \/>\n&lt;style&gt;<br \/>\n<br \/>\n .custom-alert {<br \/>\n  display: inline-block;<br \/>\n  \/* visibility: visible; *\/<br \/>\n  background-color: rgba(102,102,102,0.8);<br \/>\n  color: #fff;<br \/>\n  text-align: enter;<br \/>\n  margin: 5% auto;<br \/>\n  padding: 12px 28px;<br \/>\n  opacity: 0.9;<br \/>\n  z-index: 200;<br \/>\n  -webkit-animation: glow 1s linear infinite alternate;<br \/>\n  -moz-animation: glow 1s linear infinite alternate;<br \/>\n  animation: glow 1s linear infinite alternate;<br \/>\n }<br \/>\n<br \/>\n \/* Thanks to https:\/\/www.w3schools.com\/howto\/tryit.asp?filename=tryhow_css_glowing_text *\/<br \/>\n<br \/>\n @-webkit-keyframes glow {<br \/>\n  from {<br \/>\n    box-shadow: 0 0 3px #fff, 0 0 5px #fff, 0 0 37px #e60073, 0 0 9px #e60073, 0 0 11px #e60073, 0 0 13px #e60073, 0 0 15px #e60073;<br \/>\n  }<br \/>\n<br \/>\n  to {<br \/>\n    box-shadow: 0 0 24px #fff, 0 0 6px #ff4da6, 0 0 8px #ff4da6, 0 0 10px #ff4da6, 0 0 12px #ff4da6, 0 0 14px #ff4da6, 0 0 16px #ff4da6;<br \/>\n  }<br \/>\n }<br \/>\n<br \/>\n&lt;\/style&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; over our &#8220;Image and Text Nodes PDF&#8221; in exact context in <a href='#stage2'>stage 2<\/a> in yesterday&#8217;s tutorial further below, better informing the user, especially mobile ones, what is required of them to add Text Nodes onto the Image to complete PDF creation, better than yesterday&#8217;s <a title='Image and Text PDF Interaction Tutorial' href='#itpdfit'>Image and Text PDF Interaction Tutorial<\/a> &#8230;<\/p>\n<p>Also in the mix below is the third &#8220;user interaction&#8221; mode of use below &#8230;<\/p>\n<ol>\n<li>browse for local device image files &#8230;<\/li>\n<li>enter an Image Relative URL (ie. relative to https:\/\/www.rjmprogramming.com.au\/ or RJM Programming&#8217;s Apache\/PHP\/MySql web server Document Root folder) &#8230;<\/li>\n<li>turn to <a target=_blank title='find_images_via_size.php' href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/find_images_via_size.php-------GETME'>a modified very apt<\/a> <a target=_blank title='find_images_via_size.php' href='http:\/\/www.rjmprogramming.com.au\/PHP\/find_images_via_size.php-------GETME'>find_images_via_size.php<\/a> <a target=_blank title='Helper' href='http:\/\/www.rjmprogramming.com.au\/PHP\/find_images_via_size.php'>web application<\/a> that adds a visual component to the Image Relative URL idea above<\/li>\n<\/ol>\n<p> &#8230; complimenting <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php---GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php---GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;second draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-glowing-toast-tutorial\/'>Image and Text PDF Glowing Toast Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfit'>Previous relevant <a target=_blank title='Image and Text PDF Interaction Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-interaction-tutorial\/'>Image and Text PDF Interaction Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Interaction Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_interaction.gif\" title=\"Image and Text PDF Interaction Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Interaction Tutorial<\/p><\/div>\n<p>Many web applications benefit from user interaction to make them dynamically useful.  The idea is you, as the programmer, set up the default scenario of there being &#8220;nothing to go on yet&#8221; with a reasonably easily understood way for the user to supply the web application with the information required, a phase often referred to as &#8220;user interaction&#8221;.<\/p>\n<p>And so, with our current &#8220;Image and Text Nodes PDF Creation&#8221; project of yesterday&#8217;s <a title='Image and Text PDF Sharing Tutorial' href='#itpdfst'>Image and Text PDF Sharing Tutorial<\/a> you might say we worked from the end of the workflow to the start of the workflow, today, with us adding a &#8220;user interaction&#8221; phase when the URL entered is just &#8230;<\/p>\n<p><code><br \/>\n<a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">https:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php<\/a><br \/>\n<\/code><\/p>\n<p>There is a proviso, though!  When you have a PHP web application and deal with $_POST[] arguments, as we steer you towards, today, with our sizeable data issue, you will see that same URL as above at various stages (all 1 and 2 and 3 below) of the PDF creation workflow &#8230;<\/p>\n<ol>\n<li>user enters <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">https:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php<\/a> at address bar of the web browser where user defines an image URL or browses for a local image file &#8230;<\/li>\n<li id=stage2>user sees that image and clicks\/taps where they want text node(s) placed, and can proceed to the next step by answering with a blank text node &#8230;<\/li>\n<li>user sees created PDF file consisting of an Image and Text Node(s)<\/li>\n<\/ol>\n<p>In other words, the use of serverside $_POST[] argument HTML form method=POST methodologies &#8230;<\/p>\n<p><code><br \/>\n&lt;form id=myform method=POST action=.\/pdfimageplustext.php style=display:none;&gt;<br \/>\n&lt;input type=hidden id=slideshow name=justiurl value=''&gt;&lt;\/input&gt;<br \/>\n&lt;div id=coords style=display:none;&gt;&lt;\/div&gt;<br \/>\n&lt;input type=submit id=isub style=display:none; value='Ask for Text'&gt;&lt;\/input&gt;<br \/>\n&lt;\/form&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; make the web application &#8220;look&#8221; be contextual, where $_GET[] argument usage would be more self explanatory, but, alas, is impractical when the length of character data exceeds about 800, as it would with any self respecting image data URL!<\/p>\n<p>A &#8220;first time that we can remember&#8221; curiosity about that HTML form usage above, used in two of the stages talked about above, is the &#8220;navigation $_POST[] argument renaming&#8221; <font color=blue>as per<\/font> &#8230;<\/p>\n<p><code><br \/>\nfunction redraw() {<br \/>\n  document.getElementById('cbi').style.display='none';<br \/>\n  document.getElementById('myp').style.display='none';<br \/>\n  document.getElementById('iurl').style.display='none';<br \/>\n  document.getElementById('myh1').style.display='none';<br \/>\n  document.getElementById('myh3').style.display='none';<br \/>\n  document.getElementById('mybody').style.background='url(' + datauri + ')';<br \/>\n  document.getElementById('mybody').style.backgroundRepeat='no-repeat';<br \/>\n  <font color=blue>document.getElementById('slideshow').name='pdfimage';<\/font><br \/>\n  if (document.body.outerHTML.indexOf('url(') != -1) {<br \/>\n    datauri=document.body.outerHTML.split('url(')[1].split(')')[0].replace(\/\\&quot\\;\/g,'');<br \/>\n  }<br \/>\n  document.getElementById('slideshow').value=datauri;<br \/>\n  \/\/alert(datauri.substring(0,100) + ' ... ' + document.body.outerHTML.substring(0,350));<br \/>\n  document.getElementById('coords').innerHTML+='&lt;input type=hidden name=pdfimageplustext value=y&gt;&lt;\/input&gt;';<br \/>\n  startrecording=true;<br \/>\n  document.getElementById('mybody').onclick=function(e){<br \/>\n    e = e || window.event;<br \/>\n    e.preventDefault();<br \/>\n       startrecording=true;<br \/>\n       if (e.touches) {<br \/>\n       if (e.touches[0].pageX) {<br \/>\n       x = e.touches[0].pageX;<br \/>\n       y = e.touches[0].pageY;<br \/>\n       askaway();<br \/>\n       } else {<br \/>\n       x = e.touches[0].clientX;<br \/>\n       y = e.touches[0].clientY;<br \/>\n       askaway();<br \/>\n       }<br \/>\n       \/\/console.log('pos3=' + pos3 + ',pos4=' + pos4);<br \/>\n       } else if (e.clientX || e.clientY) {<br \/>\n        x = e.clientX;<br \/>\n        y = e.clientY;<br \/>\n       askaway();<br \/>\n       } else {<br \/>\n        x = e.pageX;<br \/>\n        y = e.pageY;<br \/>\n       askaway();<br \/>\n       }<br \/>\n  };<br \/>\n  document.getElementById('mybody').title='Click where text is to be placed in your resultant PDF'; \/\/setTimeout(askaway, 5000); \/\/alert('am here');<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Somehow, we&#8217;ve always been shy to work things this way, but is fine to do!<\/p>\n<p>Again, see this in action with <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php--GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php--GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(now with &#8220;first draft&#8221; user interaction logic)<\/font> PHP web application you can also <a href='#trpdfit'>try below, in a pared down &#8220;awkward interaction&#8221; mode of use showing you that $_GET[] arguments are catered for but not used with the real user interaction code talked about above<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/new-image-and-text-pdf-sharing-tutorial\/'>New Image and Text PDF Sharing Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfst'>Previous relevant <a target=_blank title='Image and Text PDF Sharing Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-sharing-tutorial\/'>Image and Text PDF Sharing Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Sharing Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext_share.jpg\" title=\"Image and Text PDF Sharing Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Sharing Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='Image and Text PDF Primer Tutorial' href='#itpdfpt'>Image and Text PDF Primer Tutorial<\/a> &#8220;Image and Text PDF&#8221; creator start, today we wanted to link in with our previous <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/web-share-api-primer-tutorial\/' title='Web Share API Primer Tutorial'>Web Share API Primer Tutorial<\/a> work to offer <i>some of our users<\/i> the chance to share their work.  Yes, it&#8217;s <i>some of our users<\/i> here because the <a target=_blank title='Web Share API' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Navigator\/share'>Web Share API<\/a> interfacing does not work on all platforms and only works for <i>https:<\/i> protocol URLs.<\/p>\n<p>Also in the winds today is the <a target=_blank title='Unique identifier information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Unique_identifier'>&#8220;uniquifying&#8221;<\/a> of media filenames for their limited lifespan.<\/p>\n<p>And in a wind <font size=1>(<a target=_blank title='?' href='https:\/\/www.google.com\/search?q=wind+called+mariah+lyrics&#038;rlz=1C5CHFA_enAU973AU973&#038;oq=wind+called+&#038;aqs=chrome.0.69i59j69i57j46i67j46i512j46i10j0i15i22i30j0i22i30l4.16617j0j15&#038;sourceid=chrome&#038;ie=UTF-8'>called Mariah<\/a>)<\/font> we convert our PDF to a JPEG image via the great <a target=_blank title='ImageMagick' href='http:\/\/www.imagemagick.org' id=aimm>ImageMagick<\/a> &#8230;<\/p>\n<p><code><br \/>\nconvert -density 300 pdffilename.pdf pdffilename.jpg<br \/>\n<\/code><\/p>\n<p> &#8230; command line type of command (accessed via PHP <a target=_blank title='PHP exec() method information' href='http:\/\/php.net\/manual\/en\/function.exec.php'>exec<\/a> conduit) along the way, because that might come in handy down the line.<\/p>\n<p>And then, &#8220;down the line&#8221;, we realized that for Safari platform work where a PDF is shown within an HTML iframe scenario, that JPEG image can immediately help, it being that (onclick event) intermediary between the iframe and opening PDF in a new window (but not good in the iframe element).<\/p>\n<p>See this in action with <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php-GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(still a blank webpage without the user interaction, at this first draft)<\/font> PHP web application (helped out by <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html---GETME \">the changed HTML and Javascript<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html---GETME\">web_share_api_test.html<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/HTMLCSS\/web_share_api_test.html\">Web Share API supervisor<\/a>) you can also <a href='#trpdfit'>try below<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-sharing-tutorial\/'>Image and Text PDF Sharing Tutorial<\/a>.<\/p-->\n<hr>\n<p id='itpdfpt'>Previous relevant <a target=_blank title='Image and Text PDF Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-pdf-primer-tutorial\/'>Image and Text PDF Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.jpg\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Image and Text PDF Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.jpg\" title=\"Image and Text PDF Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Image and Text PDF Primer Tutorial<\/p><\/div>\n<p>We are restarting our interest in our &#8220;Timesheet Filling In Automator&#8221; web application long standing dream from another angle today.  We want to &#8230;<\/p>\n<ul>\n<li>create PDF data via the <a target=_blank title='FPDF library' href='HTTP:\/\/www.fpdf.org\/'>FPDF<\/a> PHP library &#8230; where we &#8230;<\/li>\n<li>base the PDF on a single image (at this stage) &#8230; and &#8230;<\/li>\n<li>allow for any number of x,y,text combinations placed on top of the image above &#8230; and &#8230;<\/li>\n<li>allow for Font Family and Font Style and Font Size (with a mantissa on x means to change the Font Size for individual text nodes)<\/li>\n<\/ul>\n<p> &#8230; for this early days &#8220;proof of concept&#8221; and &#8220;just the workings, not the user interaction&#8221; with our &#8220;first draft&#8221; <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php_GETME\">pdfimageplustext.php<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php\" title=\"Click picture\">Image and Text PDF<\/a> <font size=1>(blank webpage without the user interaction, at this first draft)<\/font> PHP web application you can see in the example usage below &#8230;<\/p>\n<table style='width:100%;'>\n<tr id='trpdfit'>\n<th><a target=_blank href='\/\/www.rjmprogramming.com.au\/pdfimageplustext.php?pdfimageplustext=y&#038;pdfimage=moodle.jpg&#038;pdftext1=Moodle%20Page&#038;pdfx1=230&#038;pdfy1=250'>Open Link of Content Below in New Window &#8230;<\/a> or change that URL just below &#8230;<br \/><a target=_blank style='padding: 3 3 3 3;' title='Can change URL or wait 8 seconds for navigation to occur' id=\"acelink\" data-ce='' onclick=\"if (this.getAttribute('data-ce').length == 0) {  this.style.textDecoration='none';  this.style.backgroundColor='#e0e0e0';  setTimeout(function(){ if (document.getElementById('acelink').getAttribute('data-ce').length == 0) { document.getElementById('acelink').setAttribute('data-ce','n');  document.getElementById('acelink').setAttribute('contenteditable', !document.getElementById('acelink').getAttribute('contenteditable')); document.getElementById('acelink').click();  } },8000); }\" onkeydown=\"this.setAttribute('data-ce','y'); this.title='Will navigate to your new URL.';\" href=\"https:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php?pdfimageplustext=y&#038;pdfimage=moodle.jpg&#038;pdftext1=Moodle%20Page&#038;pdfx1=230&#038;pdfy1=250\" \n onblur=\" this.style.textDecoration='underline';  this.style.backgroundColor='white'; \n this.href=this.innerHTML.replace(\/\\&#038;amp\\;\/g,'&#038;'); this.setAttribute('contenteditable', !this.getAttribute('contenteditable')); this.click();\" contenteditable=true>https:\/\/www.rjmprogramming.com.au\/pdfimageplustext.php?pdfimageplustext=y&#038;pdfimage=moodle.jpg&#038;pdftext1=Moodle%20Page&#038;pdfx1=230&#038;pdfy1=250<\/a>\n<\/th>\n<\/tr>\n<tr>\n<td><iframe id='ifpdfit' src='\/\/www.rjmprogramming.com.au\/pdfimageplustext.php?pdfimageplustext=y&#038;pdfimage=moodle.jpg&#038;pdftext1=Moodle%20Page&#038;pdfx1=230&#038;pdfy1=250' style='width:100%;height:900px;'><\/iframe><\/td>\n<\/tr>\n<\/table>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56693' onclick='var dv=document.getElementById(\"d56693\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/pdf\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56693' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56699' onclick='var dv=document.getElementById(\"d56699\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/api\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56699' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56720' onclick='var dv=document.getElementById(\"d56720\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/form\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56720' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56724' onclick='var dv=document.getElementById(\"d56724\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/glow\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56724' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56731' onclick='var dv=document.getElementById(\"d56731\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/rotation\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56731' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56736' onclick='var dv=document.getElementById(\"d56736\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/toast\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56736' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56742' onclick='var dv=document.getElementById(\"d56742\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/sequence\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56742' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56749' onclick='var dv=document.getElementById(\"d56749\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/emoji\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56749' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56756' onclick='var dv=document.getElementById(\"d56756\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/textarea\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56756' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56762' onclick='var dv=document.getElementById(\"d56762\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/dropdown\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56762' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56769' onclick='var dv=document.getElementById(\"d56769\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/undo\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56769' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56780' onclick='var dv=document.getElementById(\"d56780\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/review\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56780' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56786' onclick='var dv=document.getElementById(\"d56786\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/linear-gradient\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56786' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56792' onclick='var dv=document.getElementById(\"d56792\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/popup\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56792' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56796' onclick='var dv=document.getElementById(\"d56796\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/glob\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56796' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56802' onclick='var dv=document.getElementById(\"d56802\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/book\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56802' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56808' onclick='var dv=document.getElementById(\"d56808\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/placeholder\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56808' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56815' onclick='var dv=document.getElementById(\"d56815\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/variable\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56815' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>It would be nice to think that the day before yesterday&#8217;s Image and Text Multiple PDF Goes Per Day Tutorial code&#8217;s Standing Order logic would handle the PDF Book scenario, but that would be a big ask for all these &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/image-and-text-multiple-pdf-book-standing-order-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,12,14,29,37],"tags":[2914,2915,84,88,2682,2290,4075,156,1993,3531,184,1707,224,234,2650,281,1654,297,301,302,2310,1971,367,385,405,4072,452,2430,1615,3030,4073,4074,541,590,1658,609,3163,675,2020,2415,3241,830,861,1661,871,913,932,2643,967,997,2945,1045,1063,3595,1072,1083,1866,1895,1126,1133,1137,2228,1209,1212,2311,1254,1262,1279,2225,2834,1288,1319,1842,2231,1899,1345,1891,3214,1721,4031,3302,1433],"class_list":["post-56815","post","type-post","status-publish","format-standard","hentry","category-animation","category-elearning","category-event-driven-programming","category-operating-system","category-tutorials","tag-_get","tag-_post","tag-animation-2","tag-api","tag-background-colour","tag-blend","tag-blending","tag-book","tag-browse","tag-browsing","tag-canvas","tag-co-ordinates","tag-colour","tag-command-line","tag-convert","tag-css","tag-data-uri","tag-data-url","tag-date","tag-datetime","tag-details","tag-direction","tag-dropdown","tag-emoji","tag-exec","tag-filling-in","tag-form","tag-fpdf","tag-glob","tag-glow","tag-glowing","tag-glowing-toast","tag-graphics","tag-image","tag-imagemagick","tag-input","tag-interaction","tag-keyframes","tag-linear-gradient","tag-localstorage","tag-multiline","tag-navigation","tag-onclick","tag-onmouseout","tag-onmouseover","tag-pdf","tag-php","tag-placeholder","tag-popup","tag-programming","tag-relative","tag-relative-url","tag-reveal","tag-review","tag-rotation","tag-safari","tag-select","tag-sequence","tag-settimeout","tag-share","tag-sharing","tag-standing-order","tag-style","tag-styling","tag-summary","tag-text","tag-textarea","tag-time","tag-timesheet","tag-timestamp","tag-toast","tag-tutorial","tag-undo","tag-uniquifier","tag-units","tag-url","tag-user","tag-user-interaction","tag-variable","tag-web-share-api","tag-wildcard","tag-window-open"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/56815"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=56815"}],"version-history":[{"count":9,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/56815\/revisions"}],"predecessor-version":[{"id":56824,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/56815\/revisions\/56824"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=56815"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=56815"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=56815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}