6,294d5 < < < < //Based on HTML2PDF by Clément Lavoillotte < //Thanks to http://www.fpdf.org/en/script/script50.php < < if (is_file('MarkItUp/fpdf17/fpdf.php')) { < require('MarkItUp/fpdf17/fpdf.php'); < } else { < require('../MarkItUp/fpdf17/fpdf.php'); < } < < //function hex2dec < //returns an associative array (keys: R,G,B) from a hex html code (e.g. #3FE5AA) < function hex2dec($couleur = "#000000") { < $R = substr($couleur, 1, 2); < $rouge = hexdec($R); < $V = substr($couleur, 3, 2); < $vert = hexdec($V); < $B = substr($couleur, 5, 2); < $bleu = hexdec($B); < $tbl_couleur = array(); < $tbl_couleur['R']=$rouge; < $tbl_couleur['G']=$vert; < $tbl_couleur['B']=$bleu; < return $tbl_couleur; < } < < //conversion pixel -> millimeter in 72 dpi < function px2mm($px) { < return $px*25.4/72; < } < < function txtentities($html) { < $trans = get_html_translation_table(HTML_ENTITIES); < $trans = array_flip($trans); < return strtr($html, $trans); < } < //////////////////////////////////// < < class PDF extends FPDF { < //variables of html parser < protected $B; < protected $I; < protected $U; < protected $HREF; < protected $fontList; < protected $issetfont; < protected $issetcolor; < < function __construct($orientation='P', $unit='mm', $format='A4') { < //Call parent constructor < parent::__construct($orientation,$unit,$format); < < //Initialization < $this->B=0; < $this->I=0; < $this->U=0; < $this->HREF=''; < < $this->tableborder=0; < $this->tdbegin=false; < $this->tdwidth=0; < $this->tdheight=0; < $this->tdalign="L"; < $this->tdbgcolor=false; < < $this->oldx=0; < $this->oldy=0; < < $this->fontlist=array("arial","times","courier","helvetica","symbol"); < $this->issetfont=false; < $this->issetcolor=false; < } < < ////////////////////////////////////// < //html parser < < function WriteHTML($html) { < $html=strip_tags($html,"



"); //remove all unsupported tags < $html=str_replace("\n",'',$html); //replace carriage returns with spaces < $html=str_replace("\t",'',$html); //replace carriage returns with spaces < $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); //explode the string < foreach($a as $i=>$e) < { < if($i%2==0) < { < //Text < if($this->HREF) < $this->PutLink($this->HREF,$e); < elseif($this->tdbegin) { < if(trim($e)!='' && $e!=" ") { < $this->Cell($this->tdwidth,$this->tdheight,$e,$this->tableborder,'',$this->tdalign,$this->tdbgcolor); < } < elseif($e==" ") { < $this->Cell($this->tdwidth,$this->tdheight,'',$this->tableborder,'',$this->tdalign,$this->tdbgcolor); < } < } < else < $this->Write(5,stripslashes(txtentities($e))); < } < else < { < //Tag < if($e[0]=='/') < $this->CloseTag(strtoupper(substr($e,1))); < else < { < //Extract attributes < $a2=explode(' ',$e); < $tag=strtoupper(array_shift($a2)); < $attr=array(); < foreach($a2 as $v) < { < if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3)) < $attr[strtoupper($a3[1])]=$a3[2]; < } < $this->OpenTag($tag,$attr); < } < } < } < } < < function OpenTag($tag, $attr) { < //Opening tag < switch($tag){ < < case 'SUP': < if( !empty($attr['SUP']) ) { < //Set current font to 6pt < $this->SetFont('','',6); < //Start 125cm plus width of cell to the right of left margin < //Superscript "1" < $this->Cell(2,2,$attr['SUP'],0,0,'L'); < } < break; < < case 'TABLE': // TABLE-BEGIN < if( !empty($attr['BORDER']) ) $this->tableborder=$attr['BORDER']; < else $this->tableborder=0; < break; < case 'TR': //TR-BEGIN < break; < case 'TD': // TD-BEGIN < if( !empty($attr['WIDTH']) ) $this->tdwidth=($attr['WIDTH']/4); < else $this->tdwidth=40; // Set to your own width if you need bigger fixed cells < if( !empty($attr['HEIGHT']) ) $this->tdheight=($attr['HEIGHT']/6); < else $this->tdheight=6; // Set to your own height if you need bigger fixed cells < if( !empty($attr['ALIGN']) ) { < $align=$attr['ALIGN']; < if($align=='LEFT') $this->tdalign='L'; < if($align=='CENTER') $this->tdalign='C'; < if($align=='RIGHT') $this->tdalign='R'; < } < else $this->tdalign='L'; // Set to your own < if( !empty($attr['BGCOLOR']) ) { < $coul=hex2dec($attr['BGCOLOR']); < $this->SetFillColor($coul['R'],$coul['G'],$coul['B']); < $this->tdbgcolor=true; < } < $this->tdbegin=true; < break; < < case 'HR': < if( !empty($attr['WIDTH']) ) < $Width = $attr['WIDTH']; < else < $Width = $this->w - $this->lMargin-$this->rMargin; < $x = $this->GetX(); < $y = $this->GetY(); < $this->SetLineWidth(0.2); < $this->Line($x,$y,$x+$Width,$y); < $this->SetLineWidth(0.2); < $this->Ln(1); < break; < case 'STRONG': < $this->SetStyle('B',true); < break; < case 'EM': < $this->SetStyle('I',true); < break; < case 'B': < case 'I': < case 'U': < $this->SetStyle($tag,true); < break; < case 'A': < $this->HREF=$attr['HREF']; < break; < case 'IMG': < if(isset($attr['SRC']) && (isset($attr['WIDTH']) || isset($attr['HEIGHT']))) { < if(!isset($attr['WIDTH'])) < $attr['WIDTH'] = 0; < if(!isset($attr['HEIGHT'])) < $attr['HEIGHT'] = 0; < $this->Image($attr['SRC'], $this->GetX(), $this->GetY(), px2mm($attr['WIDTH']), px2mm($attr['HEIGHT'])); < } < break; < case 'BLOCKQUOTE': < case 'BR': < $this->Ln(5); < break; < case 'P': < $this->Ln(10); < break; < case 'FONT': < if (isset($attr['COLOR']) && $attr['COLOR']!='') { < $coul=hex2dec($attr['COLOR']); < $this->SetTextColor($coul['R'],$coul['G'],$coul['B']); < $this->issetcolor=true; < } < if (isset($attr['FACE']) && in_array(strtolower($attr['FACE']), $this->fontlist)) { < $this->SetFont(strtolower($attr['FACE'])); < $this->issetfont=true; < } < if (isset($attr['FACE']) && in_array(strtolower($attr['FACE']), $this->fontlist) && isset($attr['SIZE']) && $attr['SIZE']!='') { < $this->SetFont(strtolower($attr['FACE']),'',$attr['SIZE']); < $this->issetfont=true; < } < break; < } < } < < function CloseTag($tag) { < //Closing tag < if($tag=='SUP') { < } < < if($tag=='TD') { // TD-END < $this->tdbegin=false; < $this->tdwidth=0; < $this->tdheight=0; < $this->tdalign="L"; < $this->tdbgcolor=false; < } < if($tag=='TR') { // TR-END < $this->Ln(); < } < if($tag=='TABLE') { // TABLE-END < $this->tableborder=0; < } < < if($tag=='STRONG') < $tag='B'; < if($tag=='EM') < $tag='I'; < if($tag=='B' || $tag=='I' || $tag=='U') < $this->SetStyle($tag,false); < if($tag=='A') < $this->HREF=''; < if($tag=='FONT'){ < if ($this->issetcolor==true) { < $this->SetTextColor(0); < } < if ($this->issetfont) { < $this->SetFont('arial'); < $this->issetfont=false; < } < } < } < < function SetStyle($tag, $enable) { < //Modify style and select corresponding font < $this->$tag+=($enable ? 1 : -1); < $style=''; < foreach(array('B','I','U') as $s) { < if($this->$s>0) < $style.=$s; < } < $this->SetFont('',$style); < } < < function PutLink($URL, $txt) { < //Put a hyperlink < $this->SetTextColor(0,0,255); < $this->SetStyle('U',true); < $this->Write(5,$txt,$URL); < $this->SetStyle('U',false); < $this->SetTextColor(0); < } < < } //end of class < < $conversers=[]; < $iconverser=0; < $trow=''; < $thtml='
cell 1cell 2
'; < $phpcont=''; < 304d14 < $aspdf=""; 311,323d20 < if (strpos($one, "<") !== false) { < $inf=explode("<", $one)[0]; < $xinf=explode("<", $one)[1]; < if ($inf != '') { < $conversers=explode(" ", trim($inf)); < } < $one=explode(">", $xinf)[0]; < } < if ($one != strtoupper($one) && $one != strtolower($one)) { < $aspdf="y"; < $emailto=strtolower($one); < } else if (sizeof($conversers) > 0) { < $aspdf="Y"; 325,327d21 < } else { < $emailto=$one; < } 339c33 < $gats.=" You can email to an entered email address what you have so far, and mixing the case here also outputs a PDF form of the conversation. A pseudo email address of a form like Leo Max would email rmetcalfe15@gmail.com HTML and PDF attachments, the PDF tabular look indicating that the conversation was between Leo and Max. "; --- > $gats.=" You can email to an entered email address what you have so far."; 354,362c48 < } < if ($aspdf != "") { < if (sizeof($conversers) > 0) { < $thtml=str_replace('',str_replace('cell 2', $fields[$ii], str_replace('cell 1', $conversers[($iconverser % sizeof($conversers))] . ' says ...', $trow)) . '', $thtml); < $iconverser++; < } else { < $thtml=str_replace('',str_replace('cell 2', $fields[$ii], str_replace('cell 1', $nextone, $trow)) . '', $thtml); < } < } --- > } 367,376d52 < < if ($aspdf != "") { < $pdf=new PDF(); < $pdf->AddPage(); < $pdf->SetFont('Arial','',12); < $pdf->WriteHTML($thtml); < if (strpos($emailto, "@") !== false) { < $phpcont=$pdf->Output('','S'); < } < } 438d113 < 518d192 < var aspdf='" . $aspdf . "'; 523,527c197 < if (aspdf == '') { < alert('Emailed to " . $emailto . " this webpage contents as an HTML attachment.'); < } else { < alert('Emailed to " . $emailto . " this webpage converted to PDF as attachment.'); < } --- > alert('Emailed to " . $emailto . " this webpage contents as an HTML attachment.'); 538c208 < gats+=' You can email to an entered email address what you have so far, and mixing the case here also outputs a PDF form of the conversation. A pseudo email address of a form like Leo Max would email rmetcalfe15@gmail.com HTML and PDF attachments, the PDF tabular look indicating that the conversation was between Leo and Max. '; --- > gats+=' You can email to an entered email address what you have so far.'; 569c239 < if (nextsb.indexOf('@') != -1 && (nextsb.indexOf(' ') == -1 || nextsb.indexOf('<') != -1) && document.title.indexOf('|') != -1) { emailto=nextsb; if (emailto.indexOf(' ') != -1 && emailto.indexOf('<') != -1 && 1 == 7) { emailto=emailto.replace(/\ /g, '_'); } level++; nextsb=''; } --- > if (nextsb.indexOf('@') != -1 && nextsb.indexOf(' ') == -1 && document.title.indexOf('|') != -1) { emailto=nextsb; level++; nextsb=''; } 572c242 < emailto=prompt('Email to? A mixing of case here also outputs a PDF form of the conversation. A pseudo email address of a form like Leo Max would email rmetcalfe15@gmail.com HTML and PDF attachments, the PDF tabular look indicating that the conversation was between Leo and Max. ', ''); --- > emailto=prompt('Email to?', ''); 575d244 < if (emailto.indexOf(' ') != -1 && emailto.indexOf('<') != -1 && 1 == 7) { emailto=emailto.replace(/\ /g, '_'); } 581c250 < if (emailto == '') { emailto=prompt('Email to? A mixing of case here also outputs a PDF form of the conversation. A pseudo email address of a form like Leo Max would email rmetcalfe15@gmail.com HTML and PDF attachments, the PDF tabular look indicating that the conversation was between Leo and Max. ', ''); } --- > if (emailto == '') { emailto=prompt('Email to?', ''); } 599,666d267 < < if ($aspdf != "" && $emailto != "") { < if (strpos($emailto, "@") !== false) { < $filename="htmlattachment.pdf"; < $fns=["htmlattachment.pdf", "htmlattachment.html"]; < //header('Content-type: application/pdf'); < $fnc=[chunk_split(base64_encode($phpcont)), chunk_split(base64_encode(explode(""))]; < //$phpcont=$pdf->Output('S'); < $body=""; < < $subject = "Speech Bubbles"; < $eol = PHP_EOL; < $headers = 'From: ' . 'rmetcalfe@rjmprogramming.com.au' . $eol; < $headers .= 'Reply-To: ' . 'rmetcalfe@rjmprogramming.com.au' . $eol; < < //$uid = md5(uniqid(time())); < < // a random hash will be necessary to send mixed content < $separator = md5(time()); < < $headers .= "MIME-Version: 1.0" . $eol; < $headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol . $eol; < $headers .= "Content-Transfer-Encoding: 7bit" . $eol; < $headers .= "This is a MIME encoded message." . $eol . $eol; < < // message < $headers .= "--" . $separator . $eol; < $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . $eol; < $headers .= "Content-Transfer-Encoding: 8bit" . $eol . $eol; < < if ($phpcont != "" || sizeof($fns) > 1) { < if (sizeof($fns) > 1) { < $headers .= "Please see attachments created via HTTP://www.rjmprogramming.com.au/PHP/no_body.php below:" . $eol . $eol; < } else { < $headers .= "Please see attachment created via HTTP://www.rjmprogramming.com.au/PHP/no_body.php below:" . $eol . $eol; < } < < for ($ic=0; $ic","\n",$body))); < $headers .= $body . $eol . $eol; < } < < $headers .= "--" . $separator . "--"; < < mail($emailto, $subject, "", $headers); < $emailto=""; < //exit; < if ($aspdf == "Y") { < header('Content-type: application/pdf'); < echo $phpcont; < exit; < } < } < < } else if ($aspdf != "") { < header('Content-type: application/pdf'); < $pdf->Output(); < exit; < }