Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

open pdf within browser via php code

Posted on 2013-06-25
9
Medium Priority
?
2,418 Views
Last Modified: 2013-06-25
Using PHP code I have created a pdf document and stored it as a file on our server.

I can open the pdf file within the browser if I access it via it's url
I can email it as an attachment and successfully open

However
I can't open the pdf in the browser window via a php call.

I get the following error "File doesn't begin with '%PDF-'

I have tried the following options   ($file is a variable)

option 1      
        header('Content-Disposition: inline; filename="'.$file.'"');
      header('Content-Type: application/pdf');
      header('Content-Length: '.filesize($file));
      readfile($file);

option 2
       header("Content-type: application/pdf");
       header("Content-Disposition: inline; filename=".$file);
       readfile($file);

option 3
       header("Content-Type: application/pdf");
       header("Cache-Control: no-cache");
       header("Accept-Ranges: none");
       header("Content-Disposition: attachment; filename=\"".$file."\"");

I have also attempted to use absolute references rather than the variable '$file' but I haven't been successful

thanks
0
Comment
Question by:joomla
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
9 Comments
 
LVL 58

Expert Comment

by:Gary
ID: 39276491
Tested your first option and it works as it should.
Check you are not using an old version of pdf reader.
Assuming you have nothing else in the php page...?
0
 

Author Comment

by:joomla
ID: 39276509
Is there a way to make it version irrelevant ?
0
 
LVL 35

Expert Comment

by:gr8gonzo
ID: 39276515
I'm guessing that it's probably a missing file / path issue. To confirm that, add this before the first header() in option 1:

if(!file_exists($file))
{
  echo "{$file} does not exist!";
  die();
}
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
LVL 58

Expert Comment

by:Gary
ID: 39276520
What browser are you using? What version of PDF reader?
Assuming gr8gonzo is wrong and you do have the correct file path....
0
 

Author Comment

by:joomla
ID: 39276535
Hi
thanks gr8gonzo, but the path is correct, however I appreciate the feedback.

application:  DOMPDF
version:   PDF 1.3   (acrobat 4.x)

I should point out, it opens if sent as an attachment and or if I click on the link

regards
0
 
LVL 58

Expert Comment

by:Gary
ID: 39276558
1.3 - are you sure?
That's 13 years old, and probably the reason. Earlier version of PDF reader had problems with IE's ActiveX
0
 

Author Comment

by:joomla
ID: 39276633
sorry for the slow response
using adobe acrobat professional seems to give the same result

I tried downloading/installing latest version of reader but Kasparskey locked my machine and I had to restart

Can anyone recommend a better anti-virus as I'm running out of tolerance for K.

Can you confirm that the following code block works for you ?

      header('Content-Disposition: inline; filename="'.$file.'"');
      header('Content-Type: application/pdf');
      header('Content-Length: '.filesize($file));
      readfile($file);
0
 
LVL 58

Accepted Solution

by:
Gary earned 1000 total points
ID: 39276645
Microsoft Security Essentials - been using it over a year and never an infection and its free (I know what you mean about Kaspersky - and McAfee)
Also AVG - has a free version.
Depends how much you want to spend or not spend.

Yep that code works fine - but I'm on PDF 10
0
 

Author Closing Comment

by:joomla
ID: 39276648
thanks for your help
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Many old projects have bad code, but the budget doesn't exist to rewrite the codebase. You can update this code to be safer by introducing contemporary input validation, sanitation, and safer database queries.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

670 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question