在Classic ASP中使用FPDF包含图像时,文件不以'%PDF-'开头

时间:2011-10-24 08:47:50

标签: image pdf asp-classic fpdf

我一直坚持这个问题一段时间,做了很多搜索并尝试了其他人报告工作的各种解决方案,但我仍然陷入困境。所以任何建议都非常感谢。如果我不清楚,请告诉我。非常感谢提前!!

我正在尝试使用FPDF v.1.01(可从http://www.aspxnet.it/public/Default.asp?page=172获得)在Classic ASP(我知道....)中生成PDF。但是当我填充PDF时,我不断收到消息“文件不以'%PDF-'开头”。我在Firefox 7.0.1,IE9中试过这个,这是我们在工作中使用的两个浏览器。如果我从代码中删除此行,那么一切都按预期工作。所以我所知道的是这条线是麻烦制造者(也许?)

this.Image('bg_logo_small.jpg',10,8,213,46);

我有一个名为report.asp的文件。文件的组织如下所示:

./rpt/report.asp
./rpt/fpdf.asp
./rpt/bg_logo_small.jpg

./rpt/fpdf/ - this directory contains all the files extracted from fpdf1.01.zip
./rpt/fpdf/extends/
./rpt/fpdf/fonts/
./rpt/fpdf/includes/
./rpt/fpdf/models/

和report.asp看起来像这样,这几乎直接来自aspxnet.it网站上的示例,除了我正在使用自己的jpg:

<%@LANGUAGE="javascript" CODEPAGE="65001"%>
<!--#include file="fpdf.asp" -->
<%
var pdf=new FPDF();

pdf.Header=function Header()
{
    this.Image('bg_logo_small.jpg',10,8,213,46);
    this.SetFont('Arial','B',15);
    this.Cell(80);
    this.Cell(30,10,'Title',1,0,'C');
    this.Ln(20);
}

pdf.Footer=function Footer()
{
    this.SetY(-15);
    this.SetFont('Arial','I',8);
    this.Cell(0,10,'Page '+ this.PageNo()+ '/{nb}',0,0,'C');
}

pdf.CreatePDF();
pdf.SetPath("fpdf/");
pdf.SetFont("Arial","",16);
pdf.Open();
pdf.AddPage();
pdf.Cell(40,10,"Hello Word!");
pdf.Close();
pdf.Output();
%>

我在VBScript中用

尝试了同样的事情
pdf.LoadModels("bgimg")

和函数Header()和函数Footer()放在bgimg.mod中,保存在

./rpt/fpdf/models/

上面的代码都是report.asp包含 - 里面没有HTML。

2 个答案:

答案 0 :(得分:1)

我不确定,如果你还没有解决问题,但无论如何我回答,因为它可以帮助其他人。

我遇到了同样的问题,我正在浏览并长时间寻找解决方案。

最后我找到了解决方案。 进入fpdf.asp文件,查找代码行:

xfile=Server.MapPath(lib.fso.GetTempName())

您可以更改代码,例如像这样:

xfile=Server.MapPath("Temp/"+lib.fso.GetTempName())

其中“Temp /”是创建PDF文件期间临时文件并稍后删除的文件夹名称。主要技巧是为文件夹Temp。

分配“修改”访问权限

出现错误“文件不以'%PDF-'开头”,因为没有访问权限来创建然后删除最终PDF文件的临时文件。因此,您可以选择将“修改”访问权限分配给根文件夹,或者在文件夹Temp中传输PDF的临时文件,并仅将“修改”分配给文件夹Temp(这样更安全)。

答案 1 :(得分:0)

尝试使用<%@LANGUAGE="javascript" %> 而不是<%@LANGUAGE="javascript" CODEPAGE="65001"%>

只需删除CODEPAGE="65001"

即可