正在尝试下载“Hello world”使用 JS 和 PHP

发布于 2024-10-14 05:02:03 字数 1676 浏览 7 评论 0原文

当我点击链接时,我正在尝试下载 pdf 文件。

这些是我的代码:

function issue_bill(order_id){
$.post('orders/issueBilll?id_order='+order_id,
        order_id,
        function()
        {
          $('example').replaceWith('Bill issued');
        }
      );
}


public function executeIssueBill(sfWebRequest $request)
{
  $pdf=new FPDF();
  $pdf->AddPage();
  $pdf->SetFont('Arial','B',16);
  $pdf->Cell(40,10,'Hello World!');
  $pdf->Output();
}  

当我点击链接时,它不会下载pdf文档。如果我去 Firebug 的检查员,我会在控制台的“响应”部分看到以下内容:

%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Filter /FlateDecode /Length 72>>
stream
x�3R��2�35W(�r
Q�w3T04�30PISp
    �Z*�[����(hx����+���(j*�d��
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj
5 0 obj
<</Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
>>
/XObject <<
>>
>>
endobj
6 0 obj
<<
/Producer (FPDF 1.53)
/CreationDate (D:20110126103602)
>>
endobj
7 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 8
0000000000 65535 f 
0000000228 00000 n 
0000000416 00000 n 
0000000009 00000 n 
0000000087 00000 n 
0000000315 00000 n 
0000000520 00000 n 
0000000596 00000 n 
trailer
<<
/Size 8
/Root 7 0 R
/Info 6 0 R
>>
startxref
699
%%EOF

我应该如何下载该文档?如果我直接调用 issueBill() 方法,下载 pdf 没有任何问题。

I'm trying to download a pdf when i click a link.

These are my codes:

function issue_bill(order_id){
$.post('orders/issueBilll?id_order='+order_id,
        order_id,
        function()
        {
          $('example').replaceWith('Bill issued');
        }
      );
}


public function executeIssueBill(sfWebRequest $request)
{
  $pdf=new FPDF();
  $pdf->AddPage();
  $pdf->SetFont('Arial','B',16);
  $pdf->Cell(40,10,'Hello World!');
  $pdf->Output();
}  

When i click on the link, it doesn't download the pdf document. If i go the inspector of Firebug i get this below in the "Response" section of the Console:

%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Filter /FlateDecode /Length 72>>
stream
x�3R��2�35W(�r
Q�w3T04�30PISp
    �Z*�[����(hx����+���(j*�d��
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj
5 0 obj
<</Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
>>
/XObject <<
>>
>>
endobj
6 0 obj
<<
/Producer (FPDF 1.53)
/CreationDate (D:20110126103602)
>>
endobj
7 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 8
0000000000 65535 f 
0000000228 00000 n 
0000000416 00000 n 
0000000009 00000 n 
0000000087 00000 n 
0000000315 00000 n 
0000000520 00000 n 
0000000596 00000 n 
trailer
<<
/Size 8
/Root 7 0 R
/Info 6 0 R
>>
startxref
699
%%EOF

What should i do to download the document? I don't have any problem to download the pdf if i call directly issueBill() method.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哆啦不做梦 2024-10-21 05:02:03

您不想发出 AJAX 请求(其中响应存储在 JavaScript 变量中),您想要发出普通的 HTTP 请求 - 当有人单击链接或在浏览器地址栏中键入 URL 时发出的请求。

使用 JavaScript 中的 window.location 将用户发送到 PDF 生成器的 URL。

如果您想尝试诱骗浏览器在执行此操作时停留在您的页面上,请通过创建指向 PDF 生成器 URL 的 iframe 来发出请求。您还必须伪造内容类型标题,以不告诉浏览器它是 PDF,否则它可能会尝试在窗口中显示它而不是强制下载。

You don't want to make an AJAX request, where the response is stored in a JavaScript variable, you want to make a normal HTTP request -- the kind made when someone clicks a link or types a URL in the browser address bar.

Send the user to the URL of your PDF generator with window.location in JavaScript.

If you want to try to trick the browser into staying on your page while it does it, make the request by creating an iframe pointing to the URL of your PDF generator. You'll also have to fudge the content-type header to NOT tell the browser it's a PDF, otherwise it might attempt to display it in the window instead of forcing a download.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文