Solved

open pdf within browser via php code

Posted on 2013-06-25
9
2,300 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
  • 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 34

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
Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

 
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 250 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

Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

Question has a verified solution.

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

Suggested Solutions

This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
Learn the basics of while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

820 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