Error When Redirecting to a PDF file

Discussion in 'ASP General' started by mansb2002@yahoo.com, Jun 7, 2007.

  1. Guest

    Hi,

    We recently moved our webserver from Win2K to Win2003. The application
    works fine. Only problem is that when user views a report as a PDF, IE
    does not show it. The following code is used to redirect:

    Response.Redirect("/website/pdffiles/myreport.pdf");
    Response.End;

    IE opens a "File Download" box and if you click the "open" button then
    nothing happens. If you click the "Save" button the following error
    comes up:

    "Internet Explorer cannot download "myreport.pdf" from "website".
    Internet Explorer was not able to open this Internet site. The
    requested site is either unavialable or cannot be found. Please try
    again later."

    if I use the following code:
    <%
    pdfFile = "myreport.pdf";
    Response.Clear;
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Type", "application/pdf");
    Response.AddHeader("content-disposition", "inline;filename=" +
    pdfFile);
    Response.BinaryWrite("/website/pdffiles/" + pdfFile);
    Response.End;
    %>

    Acrobat open and displays the following error "File does not begin
    with '%PDF-'".

    Any help would be greatly appreciated.
     
    , Jun 7, 2007
    #1
    1. Advertising

  2. wrote on Wed, 06 Jun 2007 16:10:48 -0700:

    > Hi,
    >
    > We recently moved our webserver from Win2K to Win2003. The application
    > works fine. Only problem is that when user views a report as a PDF, IE
    > does not show it. The following code is used to redirect:
    >
    > Response.Redirect("/website/pdffiles/myreport.pdf");
    > Response.End;
    >
    > IE opens a "File Download" box and if you click the "open" button then
    > nothing happens. If you click the "Save" button the following error
    > comes up:
    >
    > "Internet Explorer cannot download "myreport.pdf" from "website".
    > Internet Explorer was not able to open this Internet site. The
    > requested site is either unavialable or cannot be found. Please try
    > again later."


    Can you turn off show friendly error messages in IE and try again? What does
    the address URL show in IE?

    Did you add PDF to the list of allowed MIME types to IIS? Out of the box
    IIS6 allows very little, it's a more secure model and you need to enable any
    file extensions that you want to allow to be downloaded.

    > if I use the following code:
    > <%
    > pdfFile = "myreport.pdf";
    > Response.Clear;
    > Response.ContentType = "application/pdf";
    > Response.AddHeader("Content-Type", "application/pdf");
    > Response.AddHeader("content-disposition", "inline;filename=" +
    > pdfFile);
    > Response.BinaryWrite("/website/pdffiles/" + pdfFile);
    > Response.End;
    > %>
    >
    > Acrobat open and displays the following error "File does not begin
    > with '%PDF-'".


    BinaryWrite sends raw binary data. In this case, you are sending the string
    /website/pdffiles/myreport.pdf as the data. To use BinaryWrite to send the
    data in the file, you need to open the file, read it's content, and then
    pass that into BinaryWrite. If you sort out the redirection to work you
    won't need to do this.

    Dan
     
    Daniel Crichton, Jun 7, 2007
    #2
    1. Advertising

  3. Guest

    Hi Dan,

    I added the PDF MIME to the server. It made no difference. I still get
    the same error when I click the open or save button. The URL in the
    window is of the original ASP page that redirects to PDF file. The PDF
    file ("/webserver/pdffiles/myreport.pdf") URL is NOT displayed.

    Oh, I left out a line by mistake. I have a com object that reads the
    file and send the file content to BinaryWrite. I any ideas?

    Thanks for your help.
     
    , Jun 8, 2007
    #3
  4. wrote:
    > if I use the following code:
    > <%
    > pdfFile = "myreport.pdf";
    > Response.Clear;
    > Response.ContentType = "application/pdf";
    > Response.AddHeader("Content-Type", "application/pdf");
    > Response.AddHeader("content-disposition", "inline;filename=" +
    > pdfFile);
    > Response.BinaryWrite("/website/pdffiles/" + pdfFile);
    > Response.End;
    > %>
    >
    > Acrobat open and displays the following error "File does not begin
    > with '%PDF-'".


    Response.BinaryWrite does not take a string argument. You must put a byte
    array in there. This could come from an ADODB.Stream, recordset, or similar.

    http://msdn.microsoft.com/library/en-us/ado270/htm/mdmscadoobjects.asp

    Typical uses would look like:

    Response.BinaryWrite(adoStream.Read())
    Response.BinaryWrite(adoRecordset.Fields("FileData").Value)
    Response.BinaryWrite(adoField.GetChunk(size))


    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
     
    Dave Anderson, Jun 8, 2007
    #4
  5. Guest

    Hi Dave,

    I left out a line of code by mistake. Here is my code:

    <%
    pdfFile = "myreport.pdf";
    Response.Clear;
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Type", "application/pdf");
    Response.AddHeader("content-disposition", "inline;filename=" +
    pdfFile);
    var oPDF = oProcess.FileToStr(pdfFile);
    Response.BinaryWrite(oPDF);
    Response.End;
    %>

    Yes I am sending the correct data to BinaryWrite. I used the plain
    text page to see if the content was right.
     
    , Jun 8, 2007
    #5
  6. wrote:
    > I left out a line of code by mistake. Here is my code:
    >
    > <%
    > pdfFile = "myreport.pdf";
    > Response.Clear;
    > Response.ContentType = "application/pdf";
    > Response.AddHeader("Content-Type", "application/pdf");
    > Response.AddHeader("content-disposition", "inline;filename=" +
    > pdfFile);
    > var oPDF = oProcess.FileToStr(pdfFile);
    > Response.BinaryWrite(oPDF);
    > Response.End;
    > %>
    >
    > Yes I am sending the correct data to BinaryWrite. I used the plain
    > text page to see if the content was right.


    OK. That leaves me with a couple of questions. First, this appears to be
    JScript, but you are not calling Response.Clear() and Response.End() as
    methods. Does it change anything to do so?

    Second, your error states that "File does not begin with '%PDF-'". If you
    change the content-type to "text/plain", does the output have anything
    before those characters?

    I am also curious to know why you use both of these lines when they do the
    same thing:

    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Type", "application/pdf");



    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
     
    Dave Anderson, Jun 8, 2007
    #6
  7. wrote:
    >>> The following code is used to redirect:
    >>>
    >>> Response.Redirect("/website/pdffiles/myreport.pdf");
    >>> Response.End;

    >
    > pdfFile = "myreport.pdf";
    > Response.Clear;
    > Response.ContentType = "application/pdf";
    > Response.AddHeader("Content-Type", "application/pdf");
    > Response.AddHeader("content-disposition", "inline;filename=" +
    > pdfFile);
    > var oPDF = oProcess.FileToStr(pdfFile);
    > Response.BinaryWrite(oPDF);
    > Response.End;


    I am a bit confused. On one hand, you say you are redirecting to a .pdf
    file, but on the other hand, this looks like a .asp script. Have you set up
    IIS to parse .pdf files with asp.dll?



    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
     
    Dave Anderson, Jun 8, 2007
    #7
  8. Guest

    On Jun 8, 5:08 pm, "Dave Anderson" <> wrote:
    > wrote:
    > >>> The following code is used to redirect:

    >
    > >>> Response.Redirect("/website/pdffiles/myreport.pdf");
    > >>> Response.End;

    >
    > > pdfFile = "myreport.pdf";
    > > Response.Clear;
    > > Response.ContentType = "application/pdf";
    > > Response.AddHeader("Content-Type", "application/pdf");
    > > Response.AddHeader("content-disposition", "inline;filename=" +
    > > pdfFile);
    > > var oPDF = oProcess.FileToStr(pdfFile);
    > > Response.BinaryWrite(oPDF);
    > > Response.End;

    >
    > I am a bit confused. On one hand, you say you are redirecting to a .pdf
    > file, but on the other hand, this looks like a .asp script. Have you set up
    > IIS to parse .pdf files with asp.dll?
    >
    > --
    > Dave Anderson
    >
    > Unsolicited commercial email will be read at a cost of $500 per message. Use
    > of this email address implies consent to these terms.


    Yes, I am using JScript.

    I thought Response.Clear() and Response.End() was for ASP.NET!

    When I changed to "text/plain" the file I get back starts with
    "%PDF-1.3".

    I don't know why I have both lines in there. I saw an example on the
    net and I thought it might help. I am new to this and as you can see
    desperate as well.

    No I have not setup IIS to parse PDF files with asp.dll. Is that only
    if you are posting data to the server? Would you please give me some
    direction as how setup this? I set IIS6 identical to IIS5 which works
    just fine.

    Thanks again.
     
    , Jun 8, 2007
    #8
  9. Guest

    On Jun 8, 5:08 pm, "Dave Anderson" <> wrote:
    > wrote:
    > >>> The following code is used to redirect:

    >
    > >>> Response.Redirect("/website/pdffiles/myreport.pdf");
    > >>> Response.End;

    >
    > > pdfFile = "myreport.pdf";
    > > Response.Clear;
    > > Response.ContentType = "application/pdf";
    > > Response.AddHeader("Content-Type", "application/pdf");
    > > Response.AddHeader("content-disposition", "inline;filename=" +
    > > pdfFile);
    > > var oPDF = oProcess.FileToStr(pdfFile);
    > > Response.BinaryWrite(oPDF);
    > > Response.End;

    >
    > I am a bit confused. On one hand, you say you are redirecting to a .pdf
    > file, but on the other hand, this looks like a .asp script. Have you set up
    > IIS to parse .pdf files with asp.dll?
    >
    > --
    > Dave Anderson
    >
    > Unsolicited commercial email will be read at a cost of $500 per message. Use
    > of this email address implies consent to these terms.


    Yes, I am using JScript.

    I thought Response.Clear() and Response.End() was for ASP.NET!

    When I changed to "text/plain" the file I get back starts with
    "%PDF-1.3".

    I don't know why I have both lines in there. I saw an example on the
    net and I thought it might help. I am new to this and as you can see
    desperate as well.

    No I have not setup IIS to parse PDF files with asp.dll. Is that only
    if you are posting data to the server? Would you please give me some
    direction as how setup this? I set IIS6 identical to IIS5 which works
    just fine.

    Thanks again.
     
    , Jun 8, 2007
    #9
  10. wrote:
    >>>>> The following code is used to redirect:

    >>
    >>>>> Response.Redirect("/website/pdffiles/myreport.pdf");


    I no longer believe this. It appears you are redirecting to an ASP script,
    not to a PDF flie.


    > When I changed to "text/plain" the file I get back starts with
    > "%PDF-1.3".


    Which means your ASP script is being parsed, since the browser behavior
    changed.


    > I don't know why I have both lines in there. I saw an example on
    > the net and I thought it might help.


    It wouldn't be a bad idea to quote the passage to which you are responding.
    I'll assume this is about two different ways of setting the content-type
    header. I would not dare to guess how the browser deals with mulitple
    content-type headers. In my opinion, you should get rid of one.


    > No I have not setup IIS to parse PDF files with asp.dll. Is that
    > only if you are posting data to the server? Would you please give
    > me some direction as how setup this? I set IIS6 identical to IIS5
    > which works just fine.


    That does not appear to be required, based on your further description of
    the issue. When you asserted that you were redirecting to a .pdf file, you
    implied that myreport.pdf was actually an ASP script. So, either you are
    already set up to parse .pdf that way, or you are not redirecting to a
    resource called myreport.pdf.




    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
     
    Dave Anderson, Jun 11, 2007
    #10
  11. Guest

    > Response.Redirect("/website/pdffiles/myreport.pdf");

    > That does not appear to be required, based on your further description of
    > the issue. When you asserted that you were redirecting to a .pdf file, you
    > implied that myreport.pdf was actually an ASP script. So, either you are
    > already set up to parse .pdf that way, or you are not redirecting to a
    > resource called myreport.pdf.


    "myreport.pdf" is actual PDF file NOT an ASP page.
     
    , Jun 11, 2007
    #11
  12. wrote:
    > "myreport.pdf" is actual PDF file NOT an ASP page.


    There is a huge inconsistency in your description of the problem. If you
    are, in fact, redirecting directly to the PDF file, then your ASP script is
    irrelevant. So which is it, an ASP script that reads a PDF document and uses
    BinaryWrite(), or a PDF document that is sent directly?



    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
     
    Dave Anderson, Jun 12, 2007
    #12
  13. Guest

    First I would like to apologize for the confusion. Originally, I was
    using:

    Response.Redirect("/website/pdffiles/myreport.pdf");

    To direct the user to the PDF file. Every thing was working ok until I
    switched to Win2003 server. At that time the above command no longer
    worked. So, I tried the second method which was to read in the PDF
    file. This is what I have:

    Original.ASP file:
    Some code....
    ....
    ....
    Response.Redirect("/website/html/showpdf.asp");
    Response.End;


    ShowPDF.ASP file:

    <html>
    <body>
    <% @ LANGUAGE="JScript" CODEPAGE="932" %>
    <%
    Response.Buffer = true;
    Response.Expires = 0;
    pdfFile = "myreport.pdf";
    Response.Clear;
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "inline;filename=" +
    pdfFile);
    var oPDF = oProcess.FileToStr(pdfFile);
    Response.BinaryWrite(oPDF);
    Response.End;
    %>
    </body>
    </html>

    I hope this will clear some confusion. Again I apologize for getting
    all the things mixed up. Thanks for your help.
     
    , Jun 12, 2007
    #13
  14. wrote:
    > First I would like to apologize for the confusion. Originally,
    > I was using:
    >
    > Response.Redirect("/website/pdffiles/myreport.pdf");
    >
    > To direct the user to the PDF file. Every thing was working ok
    > until I switched to Win2003 server. At that time the above command
    > no longer worked.


    OK. In that case, you can probably just revert to the old redirection to the
    PDF file if you enable PDF in IIS6. Open the properties for your web site
    and click on the HTTP Headers tab. Click on the [MIME Types...] button, and
    add the PDF extension with MIME type "application/pdf".

    If this does not work, and you need to resume the ASP approach, let me know
    in this thread.




    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
     
    Dave Anderson, Jun 12, 2007
    #14
  15. Guest

    On Jun 12, 4:19 pm, "Dave Anderson" <>
    wrote:
    > wrote:
    > > First I would like to apologize for the confusion. Originally,
    > > I was using:

    >
    > > Response.Redirect("/website/pdffiles/myreport.pdf");

    >
    > > To direct the user to the PDF file. Every thing was working ok
    > > until I switched to Win2003 server. At that time the above command
    > > no longer worked.

    >
    > OK. In that case, you can probably just revert to the old redirection to the
    > PDF file if you enable PDF in IIS6. Open the properties for your web site
    > and click on the HTTP Headers tab. Click on the [MIME Types...] button, and
    > add the PDF extension with MIME type "application/pdf".
    >
    > If this does not work, and you need to resume the ASP approach, let me know
    > in this thread.
    >
    > --
    > Dave Anderson


    Sorry, I was away.

    I just tried your suggestion and guess what? No change. I still get
    the same error. IE opens a "File Download" box and if you click the
    "open" button then nothing happens. If you click the "Save" button the
    following error comes up:

    "Internet Explorer cannot download "myreport.pdf" from "website".
    Internet Explorer was not able to open this Internet site. The
    requested site is either unavailable or cannot be found. Please try
    again later."
    Any other ideas
     
    , Jun 15, 2007
    #15
  16. Guest

    On Jun 16, 11:00 am, "Dave Anderson" <>
    wrote:
    > <> wrote:
    > > I just tried your suggestion and guess what? No change.

    >
    > Which change? You are now pointing the browser directly to PDF file?
    >
    > > I still get the same error. IE opens a "File Download" box and if
    > > you click the "open" button then nothing happens. If you click the
    > > "Save" button the following error comes up:

    >
    > > "Internet Explorer cannot download "myreport.pdf" from "website".
    > > Internet Explorer was not able to open this Internet site. The
    > > requested site is either unavailable or cannot be found. Please
    > > try again later."

    >
    > I would have long ago tested this with Firefox and the LiveHTTPHeaders
    > extension. You should, too. That way, you can show the response headers
    > instead of the dumbed down consumer-grade message IE provides.
    >
    > --
    > Dave Anderson
    >
    > Unsolicited commercial email will be read at a cost of $500 per message. Use
    > of this email address implies consent to these terms.


    Hi Dave,

    FireFox has no problem showing the PDF file. Most of our users only
    use IE. :)
     
    , Jun 18, 2007
    #16
  17. wrote:
    >> I would have long ago tested this with Firefox and the
    >> LiveHTTPHeaders extension. You should, too. That way, you
    >> can show the response headers instead of the dumbed down
    >> consumer-grade message IE provides.

    >
    > FireFox has no problem showing the PDF file. Most of our
    > users only use IE. :)


    While that's good information, it ignores the salient point, which is that
    you can use the LiveHTTPHeaders extension to view the response headers.
    Since you do not have this problem with IIS5, but do have the problem with
    IIS6, I suggest you compare the headers. The headers direct disposition
    (browser behavior), after all.




    --
    Dave Anderson

    Unsolicited commercial email will be read at a cost of $500 per message. Use
    of this email address implies consent to these terms.
     
    Dave Anderson, Jun 18, 2007
    #17
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Leslie McGann
    Replies:
    0
    Views:
    2,123
    Leslie McGann
    Jul 3, 2003
  2. Carl Prothman [MVP]

    Re: Open linked PDF-Files from a PDF-File

    Carl Prothman [MVP], Aug 9, 2003, in forum: ASP .Net
    Replies:
    4
    Views:
    493
    Paul Kuebler
    Aug 12, 2003
  3. Ricardo Pog
    Replies:
    1
    Views:
    487
    Austin Ziegler
    Mar 26, 2008
  4. Sean Nakasone
    Replies:
    1
    Views:
    427
    Farrel Lifson
    Apr 14, 2008
Loading...

Share This Page