使用ckeditor编辑页面上的许多div,然后将HTML保存到文件

时间:2012-09-24 17:43:06

标签: php javascript codeigniter ckeditor wkhtmltopdf

嘿伙计我正在实现一个页面上有大约9个单独的div,我希望每个div都可以使用ckeditor单独编辑。该页面是通过带有codeigniter的php动态生成的,但我希望用户能够在最终确定之前对HTML进行更改。我目前已经实现了ckeditor来编辑div,如下所示:http://nightly.ckeditor.com/7614/_samples/divreplace.html

然而,在用户完成后,我希望能够在我的服务器上保存HTML,因为我将使用wkhtmltopdf将页面转换为PDF。正如您在单击任何div时所看到的那样,它会打开一个新的编辑器。我需要一种方法来在用户完成编辑页面时提交更改,因为我试图pdf生成的HTML我不能包含按钮或类似的元素。我也担心,因为在这个例子中你无法隐藏所有的编辑器,你只能打开一个PDF将显示ckeditor框的新编辑器。我以为我可以抓住javascript事件上的文件并通过ajax请求发送到php函数,将其保存到文件然后PDF文件,但我不确定如何触发html提交事件或替换剩下的编辑框。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

为什么不制作第二页并将数据发布到它?

您可以免费获得预览和返回编辑选项。

答案 1 :(得分:2)

您可以直接将要转换为PDF的内容包装到div中,并在提交表单时将其序列化为隐藏字段:

<form id="yourForm" method="post" action="foo">
    <!-- This DIV will be serialized... -->
    <div id="yourContentToBeSaved">
        <!-- Your editors go here... -->
        <div class="editable">
            Foo
        </div>
        <div class="editable">
            Bar
        </div>
        ...
    </div>
    <input id="hidden" type="hidden" />
    <button type="submit">Serialize the DIV, then save the form</button>
</form>

jQuery代码:

$( '#yourForm' ).submit(function() {
    // Destroy all the editors.
    for( var instance in CKEDITOR.instances )
        CKEDITOR.instances[ instance ].destroy();

    // Store #yourContentToBeSaved HTML in a hidden field. You can 
    // retrieve these data with PHP on the server-side once the form is submitted.
    $( '#hidden' ).val( $( '#yourContentToBeSaved' ).html() );
});

瞧!