【问题标题】:Saving page as PDF or as HTML but with all entries将页面另存为 PDF 或 HTML,但包含所有条目
【发布时间】:2010-03-23 19:55:55
【问题描述】:

我不会从我的页面上的表单创建 pdf,但问题是,我需要它就像带有表单的页面一样,全部。

所以我有例子

2 个输入字段,7 个单选框,2 个复选框,因此我需要一个具有相同结构的 PDF,但如果有人选中该复选框,则必须将其保存为 pdf。

我尝试在提交时保存页面的html内容,并先将其保存在html文件中,但问题是,我的选择没有保存。

结果必须与我打印表单的结果相同。

希望有人能帮忙。

我用来保存页面内容的代码。

> $(document).ready(function(){
>       $('input[type=submit]').click( function()   {           
> var formname = $("body").find("form").attr("name");
> var htmldata = $("form[name="+formname+"]").html();
> var enchtmldata = ncodeURIComponent(htmldata);
> $.ajax({  
> type: "post",             
> data: "data="+enchtmldata,
> url: "makepdf.php",           
> success: function()
>   {
>   alert("success");           },
> error: function()             {
>   alert("error");             }           });
> 
> }); });

PS:我使用 PHP 和 jQuery

添加:我认为最好先尝试将表单页面保存为 html,但要保留其中的条目。之后尝试转换它。但问题是,将其与所有数据一起保存。

添加:如何将选定的属性添加到选项字段?

【问题讨论】:

  • 你能概括一下为什么你需要它吗?这解决了什么问题?
  • 我需要为我的客户保存此表格并通过电子邮件自动发送。表单非常大,我们有大约 7 种不同的表单,脚本必须能够处理所有这些。

标签: php javascript html pdf


【解决方案1】:

在浏览器的 javascript 命令行中运行,将结果复制粘贴到文本编辑器并保存为 html 文件。

$('body').text($('html').html())

根据您的浏览器,复制粘贴到地址栏时也可以使用:

javascript:$('body').text($('html').html())

输出是“动态”页面源,即渲染成文本的 DOM 树。

【讨论】:

  • 问题是,如果我在该领域写了一些想法,使用 .html() 或 .text() 将无法保存...复选框也是如此:(跨度>
【解决方案2】:

您使用什么将 HTML 转换为 PDF?我可以为这项工作推荐 TCPDF:http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf

它可以将带有 CSS 的 HTML 转换为 PDF 表单。我自己没有测试过,但我很确定它甚至会保留选中的选项。但可以肯定的是,您必须使用 PHP 创建 HTML 才能选中该复选框。

<input type="checkbox"<?php echo ($_REQUEST['checkbox_name'])? ' checked="checked"' : '' ?> />

您应该能够使用 TCPDF 类创建正确的 PDF 表单。

【讨论】:

  • 嗯,这个类很有用。但首先,我需要保存 html 页面 ast、txt 或 thml 这所有输入,然后转换它。我使用这个 jquery 代码,但我得到的只是没有条目的表单
  • 但是,如果您将表单发送给自身并将 $_REQUEST 数组中的所有值添加到 input 和 textare 的值属性并选择/检查所有其他元素,您将获得正确的表单HTML 源代码中的状态。或者试试我的新建议。
  • 我有一个问题,无法更改表格:/
  • 您无权访问表单源代码?那很糟。您能否将表单源代码复制为 PDF 模板并将表单数据添加到该模板?这可能会让事情变得容易得多。
【解决方案3】:

好的,我认为问题在于,在浏览器中选中复选框不会更改 HTML 源代码。因此,如果您想通过 AJAX 传输 HTML,则必须将浏览器中的选中状态“转换”为真正的源检查状态。

我不是 jQuery 专家,但你应该选择所有 input[type="checkbox"] 并测试它们是否被选中。如果是,则将值为“checked”的属性“checked”添加到复选框。否则删除选中的属性(如果存在)。

源 HTML 将具有所有正确的检查状态。如果没有这个方法,你可能会得到一些已经被 PHP 预选但被用户取消选中的复选框。

我希望我的回答足够清楚,对不起我的英语:)

【讨论】:

  • 正如我已经提到的,我的 jQeury 知识仅限于基础知识。我可以用 Prototype 给你一个解决方案。但这就是你必须做的:选择所有输入、文本区域和选择元素。对于不是复选框或单选按钮的所有输入,设置 value 属性。对于复选框和单选按钮和选择,检查“选中”或“选中”状态并向它们添加选中或选中属性。对于 textarea,将值作为文本子节点附加到 textarea。但是如何使用 jQuery 来解决这个问题,你可能需要咨询 jQuery 专家。
【解决方案4】:

您是否尝试过将页面作为背景并将变量作为条件叠加层?我过去使用 FPDF 实现了这一点。单选按钮可以作为图像放置在现有屏幕转储的顶部。您也可以将文本放在正确的位置。

【讨论】:

    【解决方案5】:

    您是否有任何理由不能只获取表单数据并将其发送到将表单数据存储在数据库中的服务器进程?从那里填充 HTML 表单并从数据库生成 PDF 表单应该是一个相对简单的过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 2016-01-24
      相关资源
      最近更新 更多