phpparsingpdfpdf-rendering

How do I render a pdf data into an actual pdf file? (Using PHP)


The return that I am getting is like the actual content of the pdf, but when I try to like just create a pdf file and paste this data on a text editor and just save it as a pdf, when I try to open it, it just says like the file cannot be opened.

Here is the sample data that I am trying to create the pdf file of:

%PDF-1.2
%âãÏÓ
1 0 obj
<<
/Type /XObject
/Subtype /Image
/Name /Im1
/Width 195
/Height 114
/BitsPerComponent 8
/ColorSpace /DeviceRGB
/Length 27065
/Filter [/ASCII85Decode /FlateDecode]
>>
stream
8;Z,gH#-71)TI[R>H3E->-63kC9"#[HuOqQpQS50ind<:+n:mApBkAg0goK2+c%;h
CCELjp]hBc,j)'u:">P1>Fj@DSc,'sA`']Fl^i'C4`A($XM)?Uf&#l%TD*Wgf9l#E
"U,'791he`$O\i`n`*-B]$8LEc-O^KOI_re[CEa!0#R8No%(!OcW.Fl)&`:;1UW-N
90]]R,W!E"I:M/`G:R[WI>_#mNYrAKDr/,]%RddEh]=[l(g$YDe6LJNd`d2.UdMkP
V!j]Jp%07nJ5;3I6/s+-f:8?N#-"T$Ch*S,TV.q[#7g6i[_I1`mf!%Wg@b:5k7Wj/
a*Bsf-O'9hG5(_h)^)YVmhh6KNb)g7eu;Rq0JK_SmFpJi0YVu4<kGZCZ@;"ArtZ8&
Uc.WY09\jk$pen#g9ihUg)N;(psc9AIXZ`EVG+i#f\"hfbEckU32S\3U1p%//b[h@
G4u6/]JGSb1PR[gh5aV\+sS>+&Ej9#"Ea(eq8J7.X<@d"Sa=@R@`3kb'Y"k[N[\2s
MJMJ@kmX;]UT7J"*ZQ0TTgOSR2/3*s1\^=n6]ju*U,7Qrs7OY8nduNW5(*-u@)Uts
BP8f71htMgDPp3u#'qk)[((MZ1+T&dZC>s[EiGf&8hZ#@l'pBh/o<>7m"XI>@gI_a
0ekE0WGUCu2/Cb_4*I]Fpa-IE;RWm`ncu%RbY8(V"'DO!hnFMu,P<21Y@#%ZeZ)&+
6jPUWSN?h"4S:3uGY.!Jj/J/O[]WXkbqf)c,&?)MID't"RQ#.k[r,L"**d7*TY\?j
qqQs*#&%D.=6]"kpWLYXb=X."97Y'D+-X.S@Lst;.EQgd8/eXV:drpjm>T9`;0'Dm
m=X/IjQ'h\.#l.e/RH/=GuR`W'%F!cZadM)`XH%ZC`*iu!YeS2:?<$RcdlCg!m*dL
)!DMSXHd$@KP5jpfm'b9P2h5PZY.UQ1hd"Zj2R'7N]LI\IN;_*F6ARn1ihYJb9_AG
+d@AE8B);T=@,?kL(,)p%Bk3HfJ+itnNh2[Oca'7W[lVg2fBate$VKAnF1CZ62XRn
VlN^hnf7hoI3G]WSa.AP91=lo:/,Wcp%.@mWJc:b/7tD3@R_isW)4e*OW%=[GjsW@
<N6$J<B!@#[ccf8CAait/'enhWdd'Qm"f#>3d'H,M2V6'l\dHuTiNukP)+AL6CM"P
j$lpV0p=F=d^2-WN!$/!#t[GJ<GV+Uj+s:tY7O`0O2.PV:hIa*Zj>on7h^fb#7hmJ
n)'a6D:PX$@0l#!?bb1KJHH./C4(EA5_DD38se,^%bCrT'V+92rqq%H:d\*fC/t*9
!)Zr-UPKKdWkHrm+jhZ4S1kFK.(R%:"9eO9*7!3rlKZp##7hk$NG=l]:$CYRR$;ON
1nj]cJ9"1:=0>f%Op'DlA&`2urVQ=t%Yu:gW\>m.5o[NeXG.6-c?aZII/22MQntpJ
0!!:qrZ;(MK*,SFEB:MLP:,B)db;$?:OH<L?ifkTY[&eWP&$L[8P-1b#sDLqlX]M4
!%<$Xg-lj!nrP"^`$Go#Kp+.ins/A*VqglEEg[0,7un^R\aVO40i8>,daDf&66.;Y
U&6So/1_4R@q&mm4oe-6@i+ecnS>s<de$6X),Kd4*1g"%d>Qs(oeXDs(`7MV_?J?&
$7o$?h7In!gpqLgbX#Gc?+Rt!d@s&7%NIHTp?^5(9-Km[MlRJ\N:h^R_Mb5u(G5gn
pB'`^&6;\`)5fC4&a5IJRYohWl%B?V[#6E&lp`C#%"N<W`f6ZjFEDVk/mU`36kC:V
/"?q2&L0c,(W^STDVWT^>:,V(A)FP.gU>Y4<Jr!:4.Lmni,J,>3U%':6?7hfPq,qu
p?pbK,0$$,B0aeh0pI(Ib*BDq1*0_qI"Gl"kKcZ-M*V2^d\KIS@B]3WR#fj_DC^W9
@M+X<))<"*#p7(pPdu/8mQf:5F_aUHDV_l]D;#]$;-q\qOkS_%^f%.8k4Irh9D-_s
-Vr7&kg:k5IB#XH6Ym8jA&\q5dB6ceL(,(k7RdF_A,6Jki<.8dPETY)S2krim#)Z5
Y#qr<il$\S=0JK'JqWc9kfg/5[uA36((3M"9%&LY5u@u>WDf^0)9>c"/X!Zd;sZ99
I^BB7WDoi0[C"NF?q<fo]Rid%XPi#E`agolFm[lt1]d^[cmY"70=XCf5j5Hb^4AN&
Kgls3QNB*=/KZ^WA36Xt)`A6/\.!j`?qA7RNugI&#;mb"UB?s]$:[%8S'i'o7b+p:
E7Kj8o]ah5.Cen!!0IUgXHq,@La;s6H&S/\2fHPT(]oH3JI=CM&e\"^&fKaR4:rn!
P[Xq+0kN0%2mC(D_"[TtVgL6pbmBP)8P+:5,R_CfSVfkE[e'`U#tch]U.?OME8]!m
X]l#J6jtfBQ`$Z[4_`)+j.V>5#M8%3EQTb8ag7+@1q>jVDT(AKLC^dd6>\2aZ0at*
EY)3$$):"OG*d[qBaZPUbE*Nt#Dg;`="n&!`8aJc"TFL?PnGB^)`i)>E[!2(-X_/M
9>:oppI6+p;@1XXIu13g:4LAm2h?H1eQC,#YfN&rm*)R1IJS[W%1?t"[!"^m]RTq(
3+Qu$QLRe3P;TT5?oc,N[t8=PaO[7b+2B-IWTT7r3OSr>a'TPcp*jh:E6CKm'_<>[
Xg2[b+c0QP0f_R+'[iX_,sT/?^\ho*97ZYWg8f`$mI(qWmhn?9n1[&/F+\f3,F_-/
MN2Bd(*;;+AQ32]!,p7IMF$"JD43s_eu]V(!;p!NV/uR4m$tr="`-uug5V;qVUWZ.
;jkVXrRtW=RR09K.R/mTF)\![+hk-C9cE67,#J^`IEMK'Hh'7ar9q_2n=\KXg;gX;
=MI.sL*=R53UZ/BSu;e?;-@%)bXe]aS[=_g:CucDe#-!*mKkr8B\'7f`aOQae"68%
YN;t4Wcf79((*X-"lu.T=Y*HXB&a7hW*ol>)WY89b+Ls0b^?#`Se(9S@*I4Es4;8$
3M2[anN7P2Rl504VH%E7&;_K;b:b]J;3TAHgd3Ip0FEF%(#Vu=DI1W/m"5/]M'GKa
9*5A,5g8n+7Bn<FMi$&p0#ogmT9bdTl]^u5F:hNF>O@&cdjsK2'n?%8H(Res;82)Q
JA+7un?7]o/YcM-Bk>%OqJ^a28o&0U*ooKlSp6MZqO4.`Pt*rbqXc4_:?b=7V#$gI
0Fg5sn_>nZ(&5d91H9*DO.Hpe0TI,M9,L/@oYb[8,0Q)nj1qeu*<[gJY<6k#LpsSF
!%,pHle!Yj<WLnTa^.,V()7PSj0,I_r1T=QdQ47*9ZuYP2Jib,W5Xf8pk'PP/VL0:
obq,r]>.+MoZK030Rsj/6'[UrU1-]7D/4'n2_<iD[iu\;n2G4<FRnKaTk\^VUachT
:+138mmFN4/ERBpS39rmcS$iV0bPBE<#7US55j*YSN@W==:c;daOg0-/28l!qtBDm
euYQ>gTtN'A"HHU[X7adR^aS4NbmCSA]KfO)`MZi]6E_;6\e^F>ff>\9q"HfM&_ZV
l"Z35T8KUTjjEaUijkdiTqMmHqJ"46`J_ct+"t07SjnQJ?9J6gk,+4lMI<X%!a8!N
d%f!<V7h*[Qle)iWqf^BMim8>1EsILWG9r/8Z=/bq%m)I0aWu`__Qf[C,(6`:l?T$
YAQ$cJU(?&Qh!?%ZBoK(:Zpp%3;%9EO/aP#A7,+IS?cuY+D\cJj)E89$/uIsG:)uD
5sup)($4TLL>=o2f;_mM:L1OE$V2e^F,c*9leT2Ik09B(`W#i5QRl:V(^_9GG]<!"
XmcSLbaC9Mkg?0p9r(t(F=AlLG4"#Da,dQ7eZ)U`n8md<NK9-uWf2gmi]Reo5&<?8
%@X/7lT_K&$&k/")$XI`=_<4&L;b$<(79g/#D'/p"U0i](.T4-BN,ND9rLl)=uWJ2
#*ZJm@r**b/\s]G+gE2F`-jotCb!RG(!o9W<Dp5*7=j3+maq7j)$GrikN:p^F3f?%
n%@QT^0bX[99LTH;D#IlI%5)nMA<"/hGpUW"e87'ShREdVt"J\U=P]]n\l<p;r"e7
[^lE_CB$Bmc6%%4\#t#L[<7:2(q%bLoUJ-ihFAZ8(okV$_2/3#eMZjVUCBY*$@#C8
f.g;'`(QbWlN/5ch23"UI.;!U]b]?.3bl"[D`ptgMPp`[]2kb>FS[rg+rT'GcIUFp
9Lm-$9:,R>W)].KT3GCc#ked"lsJr$SS-06!@MdMaX<\pZkm%n@JTKU)`DNb\om=[
cTR&hB$He;fOKuUo[6AoGOBkWp"-C\p0*osET9M5T6]Q:,@>`X'eGT7PuU[Y+`kiM
b7>XV(cEV(VUO)tG7%MK%McBF.U<8[Xbm<ARRAu-*P*?`,X=tPmHts)`/#!n9tJ;H
E"Q.R3V"mT,818(!="XEGk+MVVD\J'OY</e[q#:FX>M2rCZ3&t*hide5^``$"%!:C
%VIujr/hsA5@YX7>om,h(&Rfd5WUcgi]&9D@;ipZ[Yuo0&lMNdAu`gX8&GA^9Ud<Z
=.aoTrpT0AX\j(0J*BeVbFT`hi1,0"[oEcEHtHt;nf_aoi*k<EAYVbV-@%Y/)R;\4
e^`4FMQYnd3i`JtrU)VZrU=/9#UpZ.1%o"$e$P56W,(B+k/$4KbX4Gt`W"m%W>c$D
f?5h^*!]q\jtg,bM8H'Zp88@]m)g'A5Vk/N"=06jU37i),RF[J!\X`-n2u4H![H#Q
+-n6JR!@u`UWP<R!?jW*&oF!j9]X#]O4qi(nY/#E$0o[Ub$mU!=2=WkNZC3Y>,n8S
=8Z?SPY/Oq#Vk;EcTWk<$Pk:TSuYqr%d?*=IZh/A2W(acYuFIf<d4H-gCK0dUaT*2
U>;5MdBX^/\A=)e-;F'Um4;PSo]DW](.R:p&l_,!*e4*-D&]^U,tjQneSEd>^%9N2
U&*`'rcDQ*I^'Ls&/C;m(]6+@c2SAu4;A'n\^#'b=OGZL%HeB/.3VnX%'C<<M'nn1
RC4qgfJ(],^5_qQ>u)C^J[$+f>$Z6t7BtD;hKr$/50#$M.B5*$#:eXTC,F5"QPPS#
ad9r^hq`cIB7MAb28+o_/fH&K\#=fcnF.B)'59==e0q[dE8Wu<V6dRN51qBJFpNYT
V:%g@EpOkYm+o9thnFLl^\kBl>AbJ-i;CNL7O)g3]HP2(Ap)*^7D4#b&mh<^5tA:$
,Y43PB@!/dn0<uV@bYtec35IQ1!d^j$ce;M%o/G&k*g(EWMuj?A0S[,j[tdA+ROF6
bt'l,jW!=>V]UC4L9bjcjt03Z:)uA&Q_64ceYBV[;7J[sWbo^SRYZ=np81QR@PbLM
HL"9ah#tCl\Q$/Aqqa;Ho.r'6;2Sa.!>O^j6\gE%,f&PHoSD6\IN/n9E,p2;!L_A\
BgTmi!XZ(3%j;<fA6@cIl=h3am'qB7'&MTbLBh+0E)aGmmIZ(kMc+Tg-g&p85Ve(m
q8oHE'OI,!E>DFEZ_XBBn7,S=5NZKL,Yfhkk4G4MUSE9dMX%6Xb"DN%e#dt:mljK`
_iFHV?erDDqt@(n]#sfiP:)QQYk21sSm-*C7:<5TA]g7^RlBY9]Qc0kjCWIREn\!@
:Yd_T++O:q71*`BV8t`#)EW8hcPA,G>H?t@=PjMh)Dj[l\Eg<0>ZTpPU`2=7A/K-<
V;Si?IQL\(V+ZcH;l:fEVpf_^nDQ@kGH"`Z,ET:iJ,fK2j<+$8rVlcmX3mRgcn<V"
660KQT]1#:ODn0cm*<M(%YG"a^@[RXc5@f&&3*c)JIjd_XCW6DV(H-f(aU5F\_3^O
,2T`;\2`/YI=8d3+#%(f,3t!o*D3_Y`MnD&@iRm_!p!pZ>pfO#;lR.#+#@M&%+^h=
$Y[I(iA$a9-[Bu_k\*du"&Z,_=5"%iQBjO_X:^H9:)WZdcY%pD%N#j,:;fnMF`i4V
_$(YM$&W=^8nc.<8DBXpF'SQq(LB(Bk"J'0N,)IsqT&R;mER[Y4d__p=`'P^.AL6I
0er'`f*qt"2q)/[7Gks+@'6T4m+Sith01aNhg`E:9kZ!`%SKP_8q8L2OP=tW2CSr-
;QcTD+9e1RKRPs;'WIH>5H<!2#7`RK2IZt9ne_#hBalFDnA-^8U4[+PmbS%.._&h:
rjg&-%mPA]q]![=DG'h8B#rmP)5[uP.)k[9A&&cbO]uehr,sbJIW-OK66-,#^`SQr
/^MOhU_*psVu&7LNZC4RCtlDCKQ.1;K9Qd;BO>^4TjdXn>uo?L<KiW3?.6P$Q7C?q
0D<^@i>1M4Pn"fqW7n8OW[thsd3@pIWQjHi<GI?G%Z)2>"`+U:/*9/5V^qcEQZq??
#H6!YIV>^]WeOUtYc4ehNrp7UD1?9lm+ITWJYg6#6As]Fj,FnkcW&V)\m1o9F$CCl
/p-I4Z&U/Krf,9q=MObF+JmMDAe1lJ&Q3'D[G29<4*U`EKZ_^RW$GJ[%4%d?^rjp.
cY=8:`Xn.IraY;JT8t'WQ=q7PA$k`K]ShJg,\#B,C\\.>3'TXb*q0/Enh]f)MT7>T
\knff,>VkHac76(&i>?o>O0kB__=J(_MaWi>mu@Xh7IldZ3M1+\2]BNKJ]T&8I8ZQ
l.(PTEkcM@FUNd1c^6WHcHY%le>3)\&#PV<m]Ic4W8K4dKhQj4'j&20)XY-%XqOK2
U3FVhl__Zpf</G4OU?F,Zq>1HPuY%b6VX\j!`#'4+5_[&ImAg@A@H@t9H$t(%9Ioh
Rq0o\e##j,0L<V5[VXV0$N@`2;ZJ6Z&6A=3U?qE+Th`,g%Je/Fej*uPES*`.J,&hP
s7Q3Qb9IFh:4E;jbiposgj_N`PRRVdYYkU!3l@,C)O.D8K'Ukj,E^C1]mEs9.k@[5
]NfDb5OO6F;$9'C0^u20MKYe.Bk]#;&etjNi%Fd<NMi@o.S_#^bY.`&2/ALZXCsi$
!/gXH/jr)RI0u*(9cE_c9Xt+Jn;r5M2`FgDK8OjpI.0GjWo34`@d,4JoaRPm-"e,'
^$P*%#CQOHk7n&J>P6T24*L>]RKk+OccKh>-lVSsbK8;cM2:`7pV94.c7iZm8qR<W
i[Q81i5(&JaNV\M5o4-b+#[rfi*-[tH0(=$4dBUf2C=]To$[slc;rpq,&._m.%3k6
h1`F@phshZ?ki`-JYgqi%VN6UN3GZ>^A.7Hj2SPio.9jb[\p&@QDQT8$W>]bCH$l?
'EX&3+i.&4^rjjV#\efn3Eo<VJ.q9$f[rB'CMQ@4+u>5!><O>9P0go=lDlVLCY,^Z
++;WRa'YL\+ZoSM:HpGhDnYgE/.l;n^OEk0a<M;$,r\iWYH51,&qo&G3uq.%LK>9t
^G$./#.o3>JHoGG74eZ3='pB`2KAf%,tjOPkQ:cmb<r?u?I]Y2+*r1d`_H&;cXFh6
1UDGjk,B$co=C.8o&@@eh0KX`+Thq7'pVa`QBr@&7sr7thXD/V$Q<_hK[^TQ@V/`*
44]iZD][XNA/eX.-ZnNn!Qd8_F4[?GQ)5o",Nm:p9_mo3"Oh8Ue'<Sq&hG1S+52t,
Z'0E]o'_X#Ie@i*!lhGf6]GNk0bqQ6`<0

I'm not sure if I still need to like parse the data or encode it or is there a tool of some sort in php to render this type of response?

Any help would be really appreciated. Thanks


Solution

  • What you've posted here is a small part of a PDF file indeed. What you have pasted here is the beginning of the file (which looks legal) and the first part of an XObject - which is PDF speak and is used to represent an image in this case. Two remarks if you want to do something useful with this file:

    1) What you have here is only a very small part - you need the complete PDF file in order to do anything with it.

    2) Line endings are important in PDF because the file format works with objects and a cross reference table at the end of the file that contains byte offsets for all objects. So if you screw up the line endings, none of the offsets are still going to work and you have yourself a broken PDF file. If you treat the incoming data as binary data and write it to a file unchanged, normally you should end up with a good PDF file (assuming they send you the complete file and not the fragment you're showing here).