我长期以来一直是堆栈溢出的常用用户,但直到今天才开始创建帐户。
我用我的编码打了一堵砖墙。我目前的工作项目是创建一个表格规划器或座位规划器,其中包含打印表格计划的功能(另存为pdf)。
页面上的我的HTML元素是由jquery动态生成的,它们都被附加到一个名为" table-planner-container"的容器中。或$("#table-planner-container")。这些表基本上是div元素,形状为圆形或矩形表,周围有座位,允许将名称放入座位。
在任何时候,我都希望用户能够保存此表计划,但将$("#table-planner-container")的HTML内容转换为pdf。我尝试过使用DOMPDF,但似乎无法将特定的HTML内容传递给方法。它基本上应该是表格在浏览器中的位置和css的快照,直接写为PDF。
非常感谢任何想法/提示。
我们将Symfony 1.4用于我们的项目,因此它遵循MVC风格
这是页面上的HTML代码(indexSucess.php):
<div id="table-planner-container">
<!-- jQuery appends div elements here -->
</div>
tableplan.js:
function Add_Table(){
var tableContainer = $("<div id=\"table" + numTables + "\" tabletype=\" + tableType + "\"></div>");
var table = $("<div id=\"t"+ numTables + "\"></div>");
var tableLabel = $("<div id=\"table_label\" class=\"table_label\">" + tablename + "</div>");
$("#table-planner-container").append(tableContainer);
// more code that does seat appending
}
function Create_Guest_Element(){
var guest = $("<span id=\"" + guestid + "\" class=\"guest\" gender=\"" + gender + "\">"+ fname + " "+ lname +"</span>");
$("#table-planner-container").append(guest);
// More code that does stuff
}
function Create_PDF(){
var html = $("#table-planner-container").html;
$.ajax({
url : "/table_planner/CreatePdf",
data : {html:html},
type : 'POST',
error : function (xhr, ajaxOptions, thrownError){
console.log(xhr.status);
console.log(thrownError);
}
});
}
action.class.php:
public function executeCreatePdf(sfWebRequest $request)
{
$html = $_POST['html'];
$this->getResponse()->setContentType('application/pdf');
// instantiate and use the dompdf class
$dompdf = new Dompdf();
$dompdf->load_html($html);
// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser
return $dompdf->stream("tableplan.pdf");
}
每当我尝试将一些数据发布到这个php函数时,它表示它不包含HTML数据,部分我认为DOMPDF不想通过特定的HTML元素生成。
还有其他替代方案吗?