在浏览器中打开PDF

时间:2009-08-27 06:55:12

标签: pdf coldfusion cfdocument

我想在浏览器中打开PDF,以便我编写下面的代码,但我发生了错误:“文件不以%PDF开头”。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>

    <div style="width:358px;height:206px;">
        <img src="http://www.pcsamerica.net/mp/images/reloimages/upload/home_home_image_117713.jpg"  border="2" width="358" height="206" />
        <img src="http://www.pcsamerica.net/mp/images/reloimages/upload/home_mug_image_117713.jpg" border="1" width="68" height="68" style="position:absolute; top:190px; left:25px; z-index:2"/>
        <font style="position:absolute; top:15px; left:15px; z-index:2; border:1px; color:FFFFFF;font-family:impact;font-size:14px;">

        </font>
    </div>
    <div style="width:425px;height:206px;padding-top:5px; padding-left:75px; text-align:center; border:1px;font-family:Arial;font-size:9px;">

    </div>
</body>
</html>

<cfheader name="Content-Disposition" value="inline; filename=Test.pdf">
<cfcontent type="application/pdf">

6 个答案:

答案 0 :(得分:8)

<!--- TAKES YOUR HTML AND SAVES IT TO A LOCAL VARIABLE --->
<cfsavecontent variable="PDFhtml">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
</head>
<body>
  <div style="width:358px;height:206px;">
    <img src="http://www.pcsamerica.net/mp/images/reloimages/upload/home_home_image_117713.jpg"  border="2" width="358" height="206" />
    <img src="http://www.pcsamerica.net/mp/images/reloimages/upload/home_mug_image_117713.jpg" border="1" width="68" height="68" style="position:absolute; top:190px; left:25px; z-index:2"/>
    <font style="position:absolute; top:15px; left:15px; z-index:2; border:1px; color:FFFFFF;font-family:impact;font-size:14px;">
    </font>
  </div>
  <div style="width:425px;height:206px;padding-top:5px; padding-left:75px; text-align:center; border:1px;font-family:Arial;font-size:9px;">
  </div>
</body>
</html>
</cfsavecontent>

<!--- USES THE VARIABLE DEFINED ABOVE TO CREATE THE PDF USING CF TAGS --->
<cfheader name="Content-Disposition" value="inline; filename=Test.pdf">
<cfdocument format="pdf">
  <cfoutput>
    #variables.PDFhtml#
  </cfoutput>
</cfdocument>

只是一点不是,你不能在Coldfusion的浏览器中进行PDF显示;你只是用Colfusion生成PDF。 PDF打开的位置是默认阅读器的选项,最常见的是Adobe Reader。如果PDF未在浏览器中打开,则可能会关闭“在浏览器中显示PDF”。要修复打开的Adobe Reader并转到Edit-&gt; Preference,在“Categories:”下单击“Internet”。在右侧,您会看到一个复选框,对于“在浏览器中显示PDF”标签,请确保单击它。

答案 1 :(得分:6)

<cfheader name="Content-Disposition" value="inline; filename=Test.pdf">
<cfcontent type="application/pdf">

不知道coldfusion,但这看起来好像是在向浏览器发送HTML并假装其PDF。那不行。

答案 2 :(得分:2)

认为你应该尝试以下方式:

<cfsavecontent variable="htmlContent">
here goes your HTML
</cfsavecontent>

<cfheader name="Content-Disposition" value="inline; filename=Test.pdf">

<cfdocument format="PDF"><cfoutput>#htmlContent#</cfoutput></cfdocument>

P.S。还没有真正测试过代码,只是一个简单的例子。

答案 3 :(得分:1)

从我的一些代码:

<!--- Force a download, don't cache --->
<cfheader name="Content-disposition" value="inline; filename=#arguments.name#" />
<cfheader name="Cache-control" value="max-age=10" /><!--- No cache doesn't work with IE6 due to bug --->
<cfcontent file="#my.safe_path#" type="#arguments.mime#" />

它必须是唯一输出的东西。这里的区别是与cfcontent一起使用的文件属性

答案 4 :(得分:0)

我同意derobert的回答。您获得的错误消息意味着浏览器通过在收到的文件开头查找字符%PDF (十六进制:25 50 44 46)来检查文件是否是有效的pdf文件。由于您没有发送pdf文件,因此签名不存在,因此出现错误消息。

答案 5 :(得分:0)

将html包装在cfdocument标签中,如此

<cfdocument format="pdf">html content</cfdoument>

应该做的伎俩