将HTML代码嵌入PHP变量

5

我不常用PHP,现在遇到了一个问题:需要将网页保存为PDF格式。我目前使用的是mPDF(在stackoverflow的维基上推荐),它似乎工作得很好(我只需要简单地将一小段HTML代码写入PHP变量然后创建PDF即可)。

但是现在,我必须获取浏览器中实际网站的HTML代码,然后将其保存到PHP变量中。我该怎么做?


好的,我需要添加更多细节。该网站是由 PHP 代码生成的。因此,如果我将该代码提供给打印机,那么它将会很混乱。此外,它必须是用户友好的,这意味着用户只需按保存按钮,然后 PDF 就会生成。(用户会看到确认 HTML 页面,并希望将该确认页面保存为 PDF) - mkn
3个回答

8
如果我理解你的意思正确,你可以像这样将页面内容存储到php变量中:
ob_start();

// your html code goes here

$contents = ob_get_contents();
ob_end_clean();

// see the contents now
echo $contents;

2
$contents = ob_get_clean(); 这一行代码就足以完成任务,因为 ob_get_clean() 函数既返回缓冲区的值,又清空了它。 - Peeech

7

问题在于在整个过程中链接未改变。例如,您的订单包含两个页面。第一页=选择产品,第二页=确认。现在我只想将确认页面保存为pdf。当我使用您的解决方案时,我得到的是一个pdf文件,其中包含第一页,该页也是空的(因为您没有进行选择),因为使用file_get_contents('')加载了新页面... - mkn
好的,我明白问题了。问题是服务器不能(或不应该)使用客户端的会话来获取网站的相同视图。我认为您可能需要ob_*函数来捕获要放入PDF中的页面的输出。操作方式如下:如果用户使用打印参数(由您的打印链接提供)调用页面,则像Sarfraz建议的那样正常打印页面。但是在打印页面之前使用ob_start(),在之后使用ob_get_contents()接收输出。ob_end_clean()可以防止PHP发送输出。 - jwueller
“按照平常的方式打印您的页面”是什么意思?该页面是用PHP编写的,这意味着它包含了HTML和PHP代码的混合。现在,打印按钮只是调用另一个.php文件(action='printpdf.php'),而该文件有一小段代码,可以打印我提供的PHP变量的内容。 - mkn
不要链接到新页面。相反,链接到当前页面并提供一个参数,如 ?print=true,以指示页面是否应输出为 PDF。如果设置了该参数,请调用 ob_* 函数:在顶部(在导致输出的所有内容之上)使用 ob_start(),在底部使用 ob_get_contents()ob_end_clean() - jwueller

1

这可能有点过度,但你可以尝试使用SimpleHTML DOM,它可以加载远程网站并提取其HTML。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接