將此類代碼渲染爲pdf的最佳方式是什麼?我已經看過不同的圖書館,但我不認爲他們中的任何一個對我而言都是有用的。我詳細研究了TCPDF庫,但是在我的情況下,這太複雜了,因爲我的代碼涉及大量的css,html和php條件。因此,我在這裏想知道在哪裏可以找到這方面有用的東西。以下是我的代碼,並從我的代碼:將HTML渲染爲PDF文件
<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>
輸出
我期待直接呈現這種輸出成PDF。或者,我在想我應該首先捕捉圖像,然後將該圖像渲染爲PDF,但這將是雙重工作。
因此,如果您有任何想法可以幫助我,請在此分享。
謝謝。
去與TCPDF,這肯定會解決您的問題。 – 2014-09-26 05:58:00
[將HTML + CSS轉換爲PDF格式的PDF?](http://stackoverflow.com/questions/391005/convert-html-css-to-pdf-with-php) – user1914292 2014-09-26 11:00:38