PHP 7 FPDF Example to Create Double Sided Pages Inside PDF Document in Browser Using Javascript

We hope you find the ideas you need in the PHP 7 FPDF Example to Create Double Sided Pages Inside PDF Document in Browser Using Javascript article. Let’s go into the article.

PHP 7 FPDF Example to Create Double Sided Pages Inside PDF Document in Browser Using Javascript

PHP 7 FPDF Example to Create Double Sided Pages Inside PDF Document in Browser Using Javascript

<?php
require('fpdf.php');
 
class DoubleSided_PDF extends FPDF
{
    protected $doubleSided;    // layout like books?
    protected $outerMargin;
    protected $innerMargin;
    protected $xDelta;         // if double-sided, difference between outer and inner
 
    function __construct($orientation='P', $unit='mm', $format='A4')
    {
        parent::__construct($orientation,$unit,$format);
        $this->doubleSided=false;
        $this->xDelta=0;
        $this->innerMargin=10;
        $this->outerMargin=10;
    }
 
    function SetDoubleSided($inner=7, $outer=13)
    {
        if($outer != $inner) {
            $this->doubleSided=true;
            $this->outerMargin=$outer;
            $this->innerMargin=$inner;
        }
    }
 
    function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='')
    {
        //Output a cell
        $k=$this->k;
        if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
        {
            //Automatic page break
            $x=$this->x;
            $ws=$this->ws;
            if($ws>0)
            {
                $this->ws=0;
                $this->_out('0 Tw');
            }
            $this->AddPage($this->CurOrientation,$this->CurPageSize);
            $this->x=$x+$this->xDelta;
            if($ws>0)
            {
                $this->ws=$ws;
                $this->_out(sprintf('%.3F Tw',$ws*$k));
            }
        }
        if($w==0)
            $w=$this->w-$this->rMargin-$this->x;
        $s='';
        if($fill || $border==1)
        {
            if($fill)
                $op=($border==1) ? 'B' : 'f';
            else
                $op='S';
            $s=sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op);
        }
        if(is_string($border))
        {
            $x=$this->x;
            $y=$this->y;
            if(strpos($border,'L')!==false)
                $s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k);
            if(strpos($border,'T')!==false)
                $s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k);
            if(strpos($border,'R')!==false)
                $s.=sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
            if(strpos($border,'B')!==false)
                $s.=sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
        }
        if($txt!=='')
        {
            if($align=='R')
                $dx=$w-$this->cMargin-$this->GetStringWidth($txt);
            elseif($align=='C')
                $dx=($w-$this->GetStringWidth($txt))/2;
            else
                $dx=$this->cMargin;
            if($this->ColorFlag)
                $s.='q '.$this->TextColor.' ';
            $txt2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
            $s.=sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);
            if($this->underline)
                $s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
            if($this->ColorFlag)
                $s.=' Q';
            if($link)
                $this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link);
        }
        if($s)
            $this->_out($s);
        $this->lasth=$h;
        if($ln>0)
        {
            //Go to next line
            $this->y+=$h;
            if($ln==1)
                $this->x=$this->lMargin;
        }
        else
            $this->x+=$w;
    }
 
    function _beginpage($orientation, $format, $rotation)
    {
        parent::_beginpage($orientation,$format,$rotation);
        if ( $this->doubleSided ) {
            if( $this->page % 2 == 0 ) {
                $this->xDelta=$this->outerMargin - $this->innerMargin;
                $this->SetLeftMargin($this->outerMargin);
                $this->SetRightMargin($this->innerMargin);
            } else {
                $this->xDelta=$this->innerMargin - $this->outerMargin;
                $this->SetLeftMargin($this->innerMargin);
                $this->SetRightMargin($this->outerMargin);
            }
            $this->x=$this->lMargin;
            $this->y=$this->tMargin;
        }
    }
}
?>

<?php
require('doublesided.php');
 
class PDF extends DoubleSided_PDF
{
    function Header()
    {
        if ( $this->PageNo() % 2 == 0 ) {
            $this->Cell(30,0,$this->PageNo(),0,0,'L');
            $this->Cell(0,0,'This chapter has a title',0,0,'R');
        }
        else {
            $this->Cell(160,0,'Topic of this chapter',0,0,'L');
            $this->Cell(0,0,$this->PageNo(),0,2,'R');
        }
        //Line break
        $this->SetY(20);
        $this->SetLineWidth(0.01);
        $this->Line($this->lMargin, 18, 210 - $this->rMargin, 18);
        $this->Ln(15);
    }
 
    function Footer()
    {
        //Position at 1.5 cm from bottom
        $this->SetLineWidth(0.01);
        $this->Line($this->lMargin, 281.2, 210 - $this->rMargin, 281.2);
        $this->SetY(-10);
        //Page number
        $this->Cell(0,3,'Page '.$this->PageNo().'/{nb}',0,0,'C');
    }
}
 
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->SetDoubleSided(20,10);
$pdf->SetFont('Arial','',12);
$pdf->AddPage();
for ($i=0; $i < 60; $i++ )
    $pdf->MultiCell(0, 10, str_repeat('a lot of text ',30)."...\n");
$pdf->SetDisplayMode('fullpage', 'single');
$pdf->Output();
?>

Final Words

We hope you enjoy the article PHP 7 FPDF Example to Create Double Sided Pages Inside PDF Document in Browser Using Javascript. The reason for that is that we hope that all your doubts and all doubts will be resolved through this article. Thanks

Hi, I'm Selva a full-time Blogger, YouTuber, Affiliate Marketer, & founder of Coding Deekshi. Here, I post about programming to help developers.

Share on:

Leave a Comment