FPDF没有显示多个图像

时间:2014-02-27 13:14:16

标签: javascript pdf vbscript asp-classic fpdf

下面是一个工作正常的小片段,它显示了一个PDF文件,但只有我设置的最后一个图像。

我的代码有什么问题? 我没有找到ASP FPDF的文档,仅用于PHP。 任何帮助都是相关的。谢谢!

<%@language=vbscript%>
<!--#include file="fpdf.asp"-->
<%Response.ContentType="application/pdf"%>

<%
imgCat = "..\fc_img\cat.jpg"
imgDog = "..\fc_img\dog.jpg"
Set pdf=CreateJsObject("FPDF")
pdf.CreatePDF "L", "mm", "A4"
pdf.SetPath("fpdf/")
pdf.Open()

pdf.AddPage()

pdf.SetTitle "Life is a b1tch"
pdf.Image imgDog , 10, 10, 20, 20
pdf.Image imgCat , 40, 40, 20, 20

pdf.Close()
pdf.Output()
%>

1 个答案:

答案 0 :(得分:1)

在研究了一下之后,我得出的结论是,FPDF的ASP组件版本有一个导致这种行为的错误。

FPDF Library - PDF Generator网站论坛上有一个有趣的帖子 - [ASP] Pb avec PDF de 2 pages,它描述了你的确切问题和结论,他们发现FPDF组件的ASP版本有一个导致问题的错误。< / p>

也许如果你向我们展示你的fpdf.asp包含文件,我们可以提供更多帮助,作为提到的帖子中的OP

  

“我解决了。我不知道怎么做,但我解决了。”

建议可以修复。


修改

我认为这可能就是您使用的ASP FPDF,它已超过10年以上并且似乎无法维护。

/****************************************************************************
*                                                                           *
* Software              : FPDF for Asp                                      *
* Version               : 1.01 beta                                         *
* Date                  : 2003/11/15                                        *
* Author                : Lorenzo Abbati                                    *
* License               : Freeware                                          *
* Site                  : http://www.aspxnet.it                             *
*                                                                           *
*****************************************************************************
*                                                                           *
* Author (PHP Class)    : Olivier Plathey                                   *
* Site (PHP Class)      : http://www.fpdf.org                               *
*                                                                           *
*****************************************************************************
*                                                                           *
* You may use and modify this software as you wish.                         *
*                                                                           *
****************************************************************************/

最新下载似乎是v1.01

引用的网站http://www.aspxnet.it似乎没有任何用处。


在过去谈到Classic ASP时,我发现AspPDF by Persits Software inc在动态构建PDF时非常宝贵。它不像ASP FPDF那样免费,但它确实有效并且不断更新和支持。可能值得一看,而不是试图挖掘fpdf.asp以查找.Image错误的原因。


<强>更新

认为问题在于this._out以及缓冲区的构建方式,因为这可以解释为什么输出一个图像而另一个图像不输出。例如,如果缓冲区被重置。不幸的是,解决这个问题的唯一方法就是深入挖掘源代码。

this.Image=function Image(xfile , xx , xy , xw , xh , xtype , xlink)
{
  if (arguments.length<5){xh=0};
  if (arguments.length<6){xtype=""};
  if (arguments.length<7){xlink=""};

  if(!lib.isset(this.images[xfile]))
  {
    if(xtype=="")
    {
      xpos=lib.strrpos(xfile,".");
      if(!xpos)this.Error("Image file has no extension and no type was specified: " + xfile);
      xtype=lib.substr(xfile,xpos+1);
    }
    xtype=xtype.toLowerCase();
    if(xtype=="jpg" || xtype=="jpeg") xinfo=this._parsejpg(xfile);
    else this.Error("Unsupported image file type: " + xtype);

    xinfo["i"]=lib.count(this.images)+1;
    this.images[xfile]=xinfo;
  }
  else
    xinfo=this.images[xfile];

  if(xw==0)xw=xh*xinfo["w"]/xinfo["h"];
  if(xh==0)xh=xw*xinfo["h"]/xinfo["w"];

  this._out(lib.sprintf("q %.2f 0 0 %.2f %.2f %.2f cm /I%d Do Q",xw*this.k,xh*this.k,xx*this.k,(this.h-(xy+xh))*this.k,xinfo["i"]));
  if(xlink)this.Link(xx,xy,xw,xh,xlink);
}