What is the best way to render this kind of code into pdf. I have looked into different libraries but I do not think any of them is useful in my case. I have detailed looked into TCPDF library but that one is too complicated in my case as my code involves lots of css, html and php conditions. Therefore, I am here to get some hint to know where can I find the something useful in this regard. Following is my code and out of my code:
<div class="box-container" id="week<?php print $w; ?>" >
<div class="roster">
<div style="text-align: right;" class="dontprint">
<div style="display:inline;">
<label><strong>Dispatch All</strong> <input type="checkbox" name="dispatch-<?php print $w; ?>" value="<?php print $w; ?>"></label>
</div>
<div style="display:inline;">
<a href="#" class="site-roster" rel="week<?php print $w; ?>">
<img src="<?php print base_url('images/icon-screenshot.png'); ?>" />
</a>
</div>
</div>
<?php $shiftStr = array(); foreach ($schedule['sites'] as $site): ?>
<?php if ($site['weekf'] == 'Week '.$w) : ?>
<?php $isDispatched[$w][$site["sid"]] = true; ?>
<div class="box printr" id="r<?php print $w.'-'.$site["sid"]; ?>">
<h4 class="white" align="center"><?php print $site["title"]; ?> - <?php print $site["address"]; ?></h4>
<div class="box-container links" style="border:1px solid #CCC">
<table style="width:100%">
<thead>
<tr>
<td style="width:140px;"></td>
<?php
$dateForRoster = ($w == 1) ? $startDate : strtotime("+7 day", $startDate);
?>
<?php for ($i = 0; $i < 7; $i++) : ?>
<td><?php print date('d-M-y', strtotime("+".$i." day", $dateForRoster)); ?></td>
<?php endfor; ?>
<td colspan="2"></td>
</tr>
<tr>
<td class="col-left"><?php print $site['job_type'] == 1 ? 'CSO' : 'Guard';?></td>
<td>Monday</td>
<td>Tuesday</td>
<td>Wednesday</td>
<td>Thursday</td>
<td>Friday</td>
<td>Saturday</td>
<td>Sunday</td>
<td>Contact</td>
<td>License</td>
</tr>
<tr>
<td colspan="10"><div style="border-bottom:2px solid #ccc; margin:5px 0"></div></td>
</tr>
</thead>
<?php foreach($schedule['guards'] as $guard): ?>
<?php if ($guard['weekf'] == 'Week '.$w && $site['sid'] == $guard['sid']) : ?>
<tr><?php $tot = 0;?>
<td style="max-width: 140px; overflow: hidden; white-space: nowrap;" class="col-left"><?php print ($guard["guard_name"] != '') ? $guard["guard_name"] : 'Click on each shift to assign guard'; ?></td>
<?php for ($s = 0; $s < 7; $s++) : ?>
<td>
<?php
if (isset ($schedule['week'][str_replace(' ', '-', $guard['weekf']).'-'.$site['sid'].'-'.$guard['gid']][$s])) {
$shifts = $schedule['week'][str_replace(' ', '-', $guard['weekf']).'-'.$site['sid'].'-'.$guard['gid']][$s];
$noOfShifts = count($shifts);
if ($noOfShifts == 0) { print '-'; }
else {
foreach($shifts as $shift) {
$shiftStr[] = array($shift['shift']['shid'], $shift['shift']['dispatched']);
$allShifts[] = array($shift['shift']['shid'], $shift['shift']['dispatched']);
//print $tot += dateDifference1($shift['shift']['actual_sign_in'], $shift['shift']['actual_sign_out']);
$class = $shift['shift']['job_type'];
$difference = dateDifference(date('Y-m-d'), $shift['shift']['advised_sign_in']);
if ($shift['shift']['gid'] == "") {
$class = "unassigned";
} else {
if ($shift['shift']['training'] == 1) $class = "training";
if ($difference == 0 &&
date("Y-m-d", strtotime($shift['shift']['actual_sign_in'])) == "1970-01-01") {
$class = "notime";
}
if (
($shift['shift']['actual_sign_in'] != "" && $shift['shift']['actual_sign_out'] == "") ||
($shift['shift']['actual_sign_in'] == "" && $shift['shift']['actual_sign_out'] != "")
)
{
$class = "onlyone";
}
if (
($shift['shift']['actual_sign_in'] != "" && ($shift['shift']['advised_sign_in'] != $shift['shift']['actual_sign_in'])) ||
($shift['shift']['actual_sign_out'] != "" && ($shift['shift']['advised_sign_out'] != $shift['shift']['actual_sign_out']))
) {
$class = "altertime";
}
}
if ($shift['shift']['dispatched'] == "0") $isDispatched[$w][$site["sid"]] = false;
?>
<a href="#"
class = "shift-detail <?php print $class; ?>"
shid = "<?php print $shift['shift']['shid'];?>"
date = "<?php print date('Y-m-d', strtotime("+".$s." day", $dateForRoster)); ?>"
jid = "<?php print $shift['shift']['jid']; ?>"
sid = "<?php print $site['sid']; ?>"
gid = "<?php print $guard['gid']; ?>">
<?php
if (/*$difference > 0 &&*/ $shift['shift']['actual_sign_in'] != "" && $shift['shift']['actual_sign_out'] != "" && date("Y-m-d", strtotime($shift['shift']['actual_sign_in'])) != "1970-01-01")
print date('H:i', strtotime($shift['shift']['actual_sign_in'])).' - '.date('H:i', strtotime($shift['shift']['actual_sign_out'])) ;
else
print date('H:i', strtotime($shift['shift']['advised_sign_in'])).' - '.date('H:i', strtotime($shift['shift']['advised_sign_out'])) ;
?></a>
<?php
}
}
} else {
?>
<a href="#"
class="shift-detail"
shid = "0"
date = "<?php print date('Y-m-d', strtotime("+".$s." day", $dateForRoster)); ?>"
jid = "0"
sid = "<?php print $site['sid']; ?>"
gid = "<?php print $guard['gid']; ?>">
-
</a>
<?php
}
?>
</td>
<?php endfor; ?>
<td><a href="#" class="contact"><?php print $guard['mobile_number']; ?></a></td>
<td><a href="#" class="license"><?php print ($guard['license_number'] != 0) ? $guard['license_number'] : 'N/A'; ?></a></td>
</tr> <?php //print $tot;?>
<?php endif; ?>
<?php endforeach; ?>
</table>
<div style="text-align: right; margin-top:4px; padding-top: 8px; color: #50575A; font-weight:bold; border-top:1px dotted" class="dontprint">
<div style="display:inline; ">
<label>Dispatch <?php print $site["title"]; ?> shifts <input type="checkbox" name="dispatch-<?php print $w.'-'.$site["sid"]; ?>" id="dispatch-<?php print $w.'-'.$site["sid"]; ?>" <?php print ($isDispatched[$w][$site["sid"]]) ? 'checked="checked"' : '' ;?> value='<?php print json_encode($shiftStr);?>'></label>
</div>
<div style="display:inline;">
<a href="#" class="site-roster" rel="r<?php print $w.'-'.$site["sid"]; ?>">
<img src="<?php print base_url('images/icon-screenshot.png'); ?>" />
</a>
</div>
</div>
</div>
<!-- end of div.box-container -->
</div>
<?php unset($shiftStr); endif; ?>
<?php endforeach; ?>
</div>
</div>
<input type="hidden" name="allshifts-<?php print $w;?>" id="allshifts-<?php print $w;?>" value='<?php print json_encode($allShifts); ?>' />
<?php endfor; ?>
<?php endif; ?>
</div>
Output
I am looking to directly render this kind of output into pdf. Alternatively, what I am thinking that I should capture the image first then render that image into PDF but that would be double work.
Thus, If you have any idea that could help me in any way please share here.
Thank you.