【问题标题】:Sending variables from jQuery to FPDF将变量从 jQuery 发送到 FPDF
【发布时间】:2011-09-21 12:22:51
【问题描述】:

我正在尝试使用 jQuery 将表单的内容发送到 FPDF。变量没有显示,但 pdf 也没有给出错误;它只是空白。为简洁起见,到目前为止我只有一个变量。有什么猜测吗?

表格

    <form id="contact">
<input type="hidden" name="front_finish_name_field" id="front_finish_name_field" value="Mirror" />
<input type="hidden" name="front_finish_price_field" id="front_finish_price_field" value="15" />
<input type="hidden" name="front_pattern_name_field" id="front_pattern_name_field" value="Tiger" />
<input type="hidden" name="front_pattern_price_field" id="front_pattern_price_field" value="5" /><br />
<input type="hidden" name="back_finish_name_field" id="back_finish_name_field" value="Mirror" />
<input type="hidden" name="back_finish_price_field" id="back_finish_price_field" value="15" />
<input type="hidden" name="back_pattern_name_field" id="back_pattern_name_field" value="Tiger" />
<input type="hidden" name="back_pattern_price_field" id="back_pattern_price_field" value="5" /><br />
<input type="hidden" name="glass_total" id="glass_total" value="40" />
<br />
<h2>Send Quote</h2><br />
Select agent: <select name="agents" id="agents">
    <option value="1">Jill Smith</option>
    <option value="2">John Smith</option>
    <option value="3">Jack Smith</option>
</select>
<input type="submit" id="submit" value="Send" />
</form>

jQuery

    <script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
                    $("#submit").click(function(){
            var data = $("#contact").serialize();
                $.ajax
                    ({
                    type: "POST",
                    url: "generate_pdf.php",
                    data: data,
                    cache: false,
                    success: function()
                        {
                            alert("Thank you");
                        }
                    });
                return false;
        });
    });
</script>

FPDF php

    <?php
require('fpdf.php');

$front_finish_name_field = $_POST['front_finish_name_field'];
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,$front_finish_name_field);
$pdf->Output( "sample.pdf", "I" );
?>

编辑

看起来问题在于将生成的 pdf 返回给用户。如果我将 pdf 设置为保存在服务器上,则字段值会显示在文档中。

【问题讨论】:

  • 您可以暂时禁用 PDF 生成并输出 print_r($_POST) 吗?这将显示发布请求的所有实际数据。
  • 您的意思是它发送的内容吗?如果是这样,我已经更新了 OP。
  • 这不是print_r($_POST)的输出,不是吗?
  • 抱歉,我不确定您的意思或如何获取该信息。
  • 这是 PHP 端,PHP 脚本。将它放在require('fpdf.php'); 行下方,写:print_r($_POST); die;

标签: php jquery pdf-generation fpdf


【解决方案1】:

生成的 PDF 输出是否是有效的 PDF?如果您在 PDF 序言之前不小心写了空格,文件可能会显示为空白(因为读者不会首先看到 PDF 魔术字符)。

我会非常仔细地检查 PHP 文件,并确保文件中的第一个字符是 &lt;php&lt;?,在此之前绝对没有空格(新行、制表符、空格)并且那里输出 PDF 数据后绝对没有空格(之后尝试输入exit();)。

【讨论】:

  • 刚刚确认,没有空格。
【解决方案2】:

像这样将 PDF 内容粘贴到 SO 中通常不是一个好主意,但它确实向我展示了一些重要的东西:

该文件中唯一的字体是“Helvetica”,而不是“Arial”……哎呀。根据 FPDF 文档,就他们而言,Arial 只是 Helvetica 的同义词。它是“Helvetica-Bold”。好的。因此,您的 SetFont 调用并没有被简单地忽略。这是个好消息。

页面内容流的压缩长度足以让我觉得里面有东西,可能是你的文字(以你看不到的方式绘制)。

您能给我们一个 PDF 的链接吗?明显有效的文本不可见的原因有很多。

【讨论】:

  • 我得到的只是一个空白页。保存那个“空白页面”(在 FF4 中)给了我一些带有空正文的 html。请记住,PDF 文件是二进制格式,因此必须这样处理。
  • 查看我的编辑。事实证明一切正常,但它没有向用户返回任何东西。如果我将 FPDF 设置为保存表单提交到服务器的内容,则该 pdf 具有正确填充的字段。
  • 那也行不通。我想我只是要将变量更改为 GET 并生成一个带有查询字符串的 url 放弃 ajax 提交。这工作得很好,我不会有超过 10 个变量,所以它并不慢。
猜你喜欢
  • 2016-05-17
  • 2016-08-20
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多