Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将ColdFusion页面转换为PDF下载?_Pdf_Coldfusion - Fatal编程技术网

如何将ColdFusion页面转换为PDF下载?

如何将ColdFusion页面转换为PDF下载?,pdf,coldfusion,Pdf,Coldfusion,我想将CFM页面生成的HTML转换为PDF格式,并在导航到我的页面时让用户使用标准的“另存为”提示。我对ColdFusion不太熟悉,但当用户请求将页面的内容类型设置为application/octet stream时,您需要做的是设置页面的内容类型。这将提示他们每次下载 希望这有帮助 您应该使用cfdocument标记(with format=“PDF”)将其放置在正在生成的页面周围,从而生成PDF。您需要指定一个filename属性,否则文档将直接流到您的浏览器 将内容保存为PDF后,结合使

我想将CFM页面生成的HTML转换为PDF格式,并在导航到我的页面时让用户使用标准的“另存为”提示。

我对ColdFusion不太熟悉,但当用户请求将页面的内容类型设置为application/octet stream时,您需要做的是设置页面的内容类型。这将提示他们每次下载


希望这有帮助

您应该使用cfdocument标记(with format=“PDF”)将其放置在正在生成的页面周围,从而生成PDF。您需要指定一个filename属性,否则文档将直接流到您的浏览器

将内容保存为PDF后,结合使用cfheader和cfcontent将PDF输出为附件(“另存为”),并将文件添加到响应流中。我还在cfcontent标记上添加了deletefile=“Yes”,以保持文件系统中的文件干净

<cfdocument format="PDF" filename="file.pdf" overwrite="Yes">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Hello World</title>
</head>
<body>
    Hello World
</body>
</html>
</cfdocument>
<cfheader name="Content-Disposition" value="attachment;filename=file.pdf">
<cfcontent type="application/octet-stream" file="#expandPath('.')#\file.pdf" deletefile="Yes">

你好,世界
你好,世界

顺便说一句:在下面的示例中,我只是使用file.pdf作为文件名,但您可能希望使用一些随机或会话生成的字符串作为文件名,以避免因竞争条件而导致的问题。

如果您希望完全避免存储pdf,则使用不带文件名的cfdocument将发送pdf(属于flashpaper)无需使用cfheader和cfcontent即可直接访问浏览器

警告:与使用cfheader/cfcontent一样,您需要在缓存刷新到浏览器之前执行此操作,因为它基本上执行相同的操作,而不必存储文件

为了获取内容,我可能会使用cfsavecontent来包装生成页面的相同调用/includes/等,但有两个主要的例外。cfdocument似乎与外部样式表有问题,因此使用include将样式直接放入文档中可能是一个好主意。您可以尝试改用@import——它适用于某些人。此外,我会小心与图像的相对链接,因为它们有时会断开

这种
方法是经过批准的方法,但是它并没有提供所有可能的方法来处理现有的PDF文档。我有一个项目,需要使用预先设计的打印分辨率PDF模板生成优惠券<代码>可以让我近似输出,但只能使用嵌入HTML的位图图像。没错,我可以通过制作一个大图像并用HTML缩放来伪造打印分辨率,但原始图像是一个漂亮、干净的矢量图像文件,我想用它来代替

最后我用了一份
来完成这项工作。(,)它是一个围绕Java PDF库的CF包装器,允许您操作现有的PDF文档,包括填写PDF表单、设置权限、合并文件、绘制矢量图形、表格和文本、使用自定义字体等。如果您愿意使用它,您可以获得一些非常出色的结果

一个缺点是,开发人员似乎已经将该产品长期搁置一旁。开发者网站仍然拥有2003年的版权,没有提及任何超过ColdFusion MX 6.1的内容。我最终不得不破坏一些加密的模板,以修复一些bug,并使其按我需要的方式工作。尽管如此,它还是一个强大的工具