diff --git a/d3/d3.min.js b/d3/d3.min.js new file mode 100644 index 0000000..2856dd2 --- /dev/null +++ b/d3/d3.min.js @@ -0,0 +1,5 @@ +!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function u(n){return!isNaN(n)}function i(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function a(n){return n.length}function o(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function s(n){return(n+="")===xa||n[0]===ba?ba+n:n}function f(n){return(n+="")[0]===ba?n.slice(1):n}function h(n){return s(n)in this._}function g(n){return(n=s(n))in this._&&delete this._[n]}function p(){var n=[];for(var t in this._)n.push(f(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function m(){this._=Object.create(null)}function y(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=_a.length;r>e;++e){var u=_a[e]+t;if(u in n)return u}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],a=0,o=i.length;o>a;a++)(u=i[a])&&t(u,a,e);return n}function Z(n){return Sa(n,La),n}function V(n){var t,e;return function(r,u,i){var a,o=n[i].update,l=o.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(a=o[t])&&++t0&&(n=n.slice(0,o));var c=qa.get(n);return c&&(n=c,l=B),o?t?u:r:t?b:i}function $(n,t){return function(e){var r=oa.event;oa.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{oa.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Ra,u="click"+r,i=oa.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ta&&(Ta="onselectstart"in e?!1:x(e.style,"userSelect")),Ta){var a=n(e).style,o=a[Ta];a[Ta]="none"}return function(n){if(i.on(r,null),Ta&&(a[Ta]=o),n){var t=function(){i.on(u,null)};i.on(u,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var u=r.createSVGPoint();if(0>Da){var i=t(n);if(i.scrollX||i.scrollY){r=oa.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=r[0][0].getScreenCTM();Da=!(a.f||a.e),r.remove()}}return Da?(u.x=e.pageX,u.y=e.pageY):(u.x=e.clientX,u.y=e.clientY),u=u.matrixTransform(n.getScreenCTM().inverse()),[u.x,u.y]}var o=n.getBoundingClientRect();return[e.clientX-o.left-n.clientLeft,e.clientY-o.top-n.clientTop]}function G(){return oa.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?ja:Math.acos(n)}function tn(n){return n>1?Oa:-1>n?-Oa:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function an(n){return(n=Math.sin(n/2))*n}function on(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(a-i)*n/60:180>n?a:240>n?i+(a-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,a;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,a=.5>=e?e*(1+t):e+t-e*t,i=2*e-a,new yn(u(n+120),u(n),u(n-120))}function sn(n,t,e){return this instanceof sn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof sn?new sn(n.h,n.c,n.l):n instanceof hn?pn(n.l,n.a,n.b):pn((n=Sn((n=oa.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new sn(n,t,e)}function fn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Ia)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof sn?fn(n.h,n.c,n.l):Sn((n=yn(n)).r,n.g,n.b):new hn(n,t,e)}function gn(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=vn(u)*Qa,r=vn(r)*no,i=vn(i)*to,new yn(mn(3.2404542*u-1.5371385*r-.4985314*i),mn(-.969266*u+1.8760108*r+.041556*i),mn(.0556434*u-.2040259*r+1.0572252*i))}function pn(n,t,e){return n>0?new sn(Math.atan2(e,t)*Ya,Math.sqrt(t*t+e*e),n):new sn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function mn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function yn(n,t,e){return this instanceof yn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof yn?new yn(n.r,n.g,n.b):_n(""+n,yn,cn):new yn(n,t,e)}function Mn(n){return new yn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,u,i,a=0,o=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(Nn(u[0]),Nn(u[1]),Nn(u[2]))}return(i=uo.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(a=(3840&i)>>4,a=a>>4|a,o=240&i,o=o>>4|o,l=15&i,l=l<<4|l):7===n.length&&(a=(16711680&i)>>16,o=(65280&i)>>8,l=255&i)),t(a,o,l))}function wn(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),a=Math.max(n,t,e),o=a-i,l=(a+i)/2;return o?(u=.5>l?o/(a+i):o/(2-a-i),r=n==a?(t-e)/o+(e>t?6:0):t==a?(e-n)/o+2:(n-t)/o+4,r*=60):(r=NaN,u=l>0&&1>l?0:r),new ln(r,u,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/Qa),u=dn((.2126729*n+.7151522*t+.072175*e)/no),i=dn((.0193339*n+.119192*t+.9503041*e)/to);return hn(116*u-16,500*(r-u),200*(u-i))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function u(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(i,l)}catch(r){return void a.error.call(i,r)}a.load.call(i,n)}else a.error.call(i,l)}var i={},a=oa.dispatch("beforesend","progress","load","error"),o={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=u:l.onreadystatechange=function(){l.readyState>3&&u()},l.onprogress=function(n){var t=oa.event;oa.event=n;try{a.progress.call(i,l)}finally{oa.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?o[n]:(null==t?delete o[n]:o[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(c=n,i):c},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ca(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),l.open(e,n,!0),null==t||"accept"in o||(o.accept=t+",*/*"),l.setRequestHeader)for(var s in o)l.setRequestHeader(s,o[s]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),a.beforesend.call(i,l),l.send(null==r?null:r),i},i.abort=function(){return l.abort(),i},oa.rebind(i,a,"on"),null==r?i:i.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,n:null};return ao?ao.n=i:io=i,ao=i,oo||(lo=clearTimeout(lo),oo=1,co(Tn)),i}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(lo),lo=setTimeout(Tn,t)),oo=0):(oo=1,co(Tn))}function Rn(){for(var n=Date.now(),t=io;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=io,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function jn(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],a=0,o=r[0],l=0;u>0&&o>0&&(l+o+1>t&&(o=Math.max(1,t-l)),i.push(n.substring(u-=o,u+o)),!((l+=o+1)>t));)o=r[a=(a+1)%r.length];return i.reverse().join(e)}:y;return function(n){var e=fo.exec(n),r=e[1]||" ",a=e[2]||">",o=e[3]||"-",l=e[4]||"",c=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===a)&&(c=r="0",a="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===l&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=ho.get(g)||Fn;var M=c&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===o?"":o;if(0>p){var l=oa.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===a?u+n+k:">"===a?k+u+n:"^"===a?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new po(e-1)),1),e}function i(n,e){return t(n=new po(+n),e),n}function a(n,r,i){var a=u(n),o=[];if(i>1)for(;r>a;)e(a)%i||o.push(new Date(+a)),t(a,1);else for(;r>a;)o.push(new Date(+a)),t(a,1);return o}function o(n,t,e){try{po=Hn;var r=new Hn;return r._=n,a(r,t,e)}finally{po=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=a;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(u),l.offset=In(i),l.range=o,n}function In(n){return function(t,e){try{po=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{po=Date}}}function Yn(n){function t(n){function t(t){for(var e,u,i,a=[],o=-1,l=0;++oo;){if(r>=c)return-1;if(u=t.charCodeAt(o++),37===u){if(a=t.charAt(o++),i=C[a in mo?t.charAt(o++):a],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{po=Hn;var t=new po;return t._=n,r(t)}finally{po=Date}}var r=t(n);return e.parse=function(n){try{po=Hn;var t=r.parse(n);return t&&t._}finally{po=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=oa.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(m),k=Xn(m),N=Vn(y),E=Xn(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+go.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(go.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(go.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:ot,"%":function(){return"%"}},C={a:r,A:u,b:i,B:a,c:o,d:tt,e:tt,H:rt,I:rt,j:et,L:at,m:nt,M:ut,p:s,S:it,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Vn(n){return new RegExp("^(?:"+n.map(oa.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function nt(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ut(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function it(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function at(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ot(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=Ma(t)/60|0,u=Ma(t)%60;return e+Zn(r,"0",2)+Zn(u,"0",2)}function lt(n,t,e){Mo.lastIndex=0;var r=Mo.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,o=a*e,l=Math.cos(t),c=Math.sin(t),s=i*c,f=u*l+s*Math.cos(o),h=s*a*Math.sin(o);ko.add(Math.atan2(h,f)),r=n,u=l,i=c}var t,e,r,u,i;No.point=function(a,o){No.point=n,r=(t=a)*Ia,u=Math.cos(o=(e=o)*Ia/2+ja/4),i=Math.sin(o)},No.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function mt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function yt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return Ma(n[0]-t[0])o;++o)u.point((e=n[o])[0],e[1]);return void u.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,i.push(l),a.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,i.push(l),a.push(c)}}),a.sort(t),qt(i),qt(a),i.length){for(var o=0,l=e,c=a.length;c>o;++o)a[o].e=l=!l;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var o=0,c=s.length;c>o;++o)u.point((f=s[o])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var o=s.length-1;o>=0;--o)u.point((f=s[o])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r0){for(b||(i.polygonStart(),b=!0),i.lineStart();++a1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Dt))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:a,lineStart:l,lineEnd:c,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=a,y.lineStart=l,y.lineEnd=c,g=oa.merge(g);var n=Ot(m,p);g.length?(b||(i.polygonStart(),b=!0),Lt(g,Ut,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Pt(),x=t(M),b=!1;return y}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Oa-Pa:Oa-n[1])-((t=t.x)[0]<0?t[1]-Oa-Pa:Oa-t[1])}function jt(n){var t,e=NaN,r=NaN,u=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(i,a){var o=i>0?ja:-ja,l=Ma(i-e);Ma(l-ja)0?Oa:-Oa),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(o,r),n.point(i,r),t=0):u!==o&&l>=ja&&(Ma(e-u)Pa?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*a)):(t+r)/2}function Ht(n,t,e,r){var u;if(null==n)u=e*Oa,r.point(-ja,u),r.point(0,u),r.point(ja,u),r.point(ja,0),r.point(ja,-u),r.point(0,-u),r.point(-ja,-u),r.point(-ja,0),r.point(-ja,u);else if(Ma(n[0]-t[0])>Pa){var i=n[0]o;++o){var c=t[o],s=c.length;if(s)for(var f=c[0],h=f[0],g=f[1]/2+ja/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=c[d];var m=n[0],y=n[1]/2+ja/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>ja,k=p*M;if(ko.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Fa:b,S^h>=e^m>=e){var N=yt(dt(f),dt(n));bt(N);var E=yt(u,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(a+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Pa>i||Pa>i&&0>ko)^1&a}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,l,c,s;return{lineStart:function(){c=l=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=a?v?0:u(f,h):v?u(f+(0>f?ja:-ja),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(g=r(e,p),(wt(e,g)||wt(p,g))&&(p[0]+=Pa,p[1]+=Pa,v=t(p[0],p[1]))),v!==l)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(o&&e&&a^v){var m;d&i||!(m=r(p,e,!0))||(s=0,a?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&wt(e,p)||n.point(p[0],p[1]),e=p,l=v,i=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return s|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),u=dt(t),a=[1,0,0],o=yt(r,u),l=mt(o,o),c=o[0],s=l-c*c;if(!s)return!e&&n;var f=i*l/s,h=-i*c/s,g=yt(a,o),p=xt(a,f),v=xt(o,h);Mt(p,v);var d=g,m=mt(p,d),y=mt(d,d),M=m*m-y*(mt(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-m-x)/y);if(Mt(b,p),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=Ma(E-ja)E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(Ma(b[0]-w)ja^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-m+x)/y);return Mt(z,p),[b,_t(z)]}}}function u(t,e){var r=a?n:ja-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),a=i>0,o=Ma(i)>Pa,l=ve(n,6*Ia);return Rt(t,e,l,a?[0,-n]:[-ja,n-ja])}function Yt(n,t,e,r){return function(u){var i,a=u.a,o=u.b,l=a.x,c=a.y,s=o.x,f=o.y,h=0,g=1,p=s-l,v=f-c;if(i=n-l,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-l,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-c,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-c,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:l+h*p,y:c+h*v}),1>g&&(u.b={x:l+g*p,y:c+g*v}),u}}}}}}function Zt(n,t,e,r){function u(r,u){return Ma(r[0]-n)0?0:3:Ma(r[0]-e)0?2:1:Ma(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return a(n.x,t.x)}function a(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(o){function l(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,a=1,o=d[u],l=o.length,c=o[0];l>a;++a)i=o[a],c[1]<=r?i[1]>r&&Q(c,i,n)>0&&++t:i[1]<=r&&Q(c,i,n)<0&&--t,c=i;return 0!==t}function c(i,o,l,c){var s=0,f=0;if(null==i||(s=u(i,l))!==(f=u(o,l))||a(i,o)<0^l>0){do c.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+l+4)%4)!==f)}else c.point(o[0],o[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&o.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=NaN}function g(){v&&(p(y,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=f,w&&o.lineEnd()}function p(n,t){n=Math.max(-Ho,Math.min(Ho,n)),t=Math.max(-Ho,Math.min(Ho,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(o.lineStart(),o.point(n,t));else if(e&&w)o.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(o.lineStart(),o.point(r.a.x,r.a.y)),o.point(r.b.x,r.b.y),e||o.lineEnd(),k=!1):e&&(o.lineStart(),o.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,N=o,E=Pt(),A=Yt(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){o=E,v=[],d=[],k=!0},polygonEnd:function(){o=N,v=oa.merge(v);var t=l([n,r]),e=k&&t,u=v.length;(e||u)&&(o.polygonStart(),e&&(o.lineStart(),c(null,null,1,o),o.lineEnd()),u&&Lt(v,i,t,c,o),o.polygonEnd()),v=d=m=null}};return C}}function Vt(n){var t=0,e=ja/3,r=oe(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*ja/180,e=n[1]*ja/180):[t/ja*180,e/ja*180]},u}function Xt(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),a-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),a=Math.sqrt(i)/u;return e.invert=function(n,t){var e=a-t;return[Math.atan2(n,e)/u,tn((i-(n*n+e*e)*u*u)/(2*u))]},e}function $t(){function n(n,t){Io+=u*n-r*t,r=n,u=t}var t,e,r,u;$o.point=function(i,a){$o.point=n,t=r=i,e=u=a},$o.lineEnd=function(){n(t,e)}}function Bt(n,t){Yo>n&&(Yo=n),n>Vo&&(Vo=n),Zo>t&&(Zo=t),t>Xo&&(Xo=t)}function Wt(){function n(n,t){a.push("M",n,",",t,i)}function t(n,t){a.push("M",n,",",t),o.point=e}function e(n,t){a.push("L",n,",",t)}function r(){o.point=n}function u(){a.push("Z")}var i=Jt(4.5),a=[],o={point:n,lineStart:function(){o.point=t},lineEnd:r,polygonStart:function(){o.lineEnd=u},polygonEnd:function(){o.lineEnd=r,o.point=n},pointRadius:function(n){return i=Jt(n),o},result:function(){if(a.length){var n=a.join("");return a=[],n}}};return o}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Co+=n,zo+=t,++Lo}function Kt(){function n(n,r){var u=n-t,i=r-e,a=Math.sqrt(u*u+i*i);qo+=a*(t+n)/2,To+=a*(e+r)/2,Ro+=a,Gt(t=n,e=r)}var t,e;Wo.point=function(r,u){Wo.point=n,Gt(t=r,e=u)}}function Qt(){Wo.point=Gt}function ne(){function n(n,t){var e=n-r,i=t-u,a=Math.sqrt(e*e+i*i);qo+=a*(r+n)/2,To+=a*(u+t)/2,Ro+=a,a=u*n-r*t,Do+=a*(r+n),Po+=a*(u+t),Uo+=3*a,Gt(r=n,u=t)}var t,e,r,u;Wo.point=function(i,a){Wo.point=n,Gt(t=r=i,e=u=a)},Wo.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+a,e),n.arc(t,e,a,0,Fa)}function e(t,e){n.moveTo(t,e),o.point=r}function r(t,e){n.lineTo(t,e)}function u(){o.point=t}function i(){n.closePath()}var a=4.5,o={point:t,lineStart:function(){o.point=e},lineEnd:u,polygonStart:function(){o.lineEnd=i},polygonEnd:function(){o.lineEnd=u,o.point=t},pointRadius:function(n){return a=n,o},result:b};return o}function ee(n){function t(n){return(o?r:e)(n)}function e(t){return ie(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=i,t.lineStart()}function i(e,r){var i=dt([e,r]),a=n(e,r);u(M,x,y,b,_,w,M=a[0],x=a[1],y=e,b=i[0],_=i[1],w=i[2],o,t),t.point(M,x)}function a(){S.point=e,t.lineEnd()}function l(){ +r(),S.point=c,S.lineEnd=s}function c(n,t){i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,o,t),S.lineEnd=a,a()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:a,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,o,l,c,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=o+g,_=l+p,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=Ma(Ma(w)-1)i||Ma((y*z+M*L)/x-.5)>.3||a>o*g+l*p+c*v)&&(u(t,e,r,o,l,c,A,C,N,b/=S,_/=S,w,d,m),m.point(A,C),u(A,C,N,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,a=Math.cos(30*Ia),o=16;return t.precision=function(n){return arguments.length?(o=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function re(n){var t=ee(function(t,e){return n([t*Ya,e*Ya])});return function(n){return le(t(n))}}function ue(n){this.stream=n}function ie(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ae(n){return oe(function(){return n})()}function oe(n){function t(n){return n=o(n[0]*Ia,n[1]*Ia),[n[0]*h+l,c-n[1]*h]}function e(n){return n=o.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Ya,n[1]*Ya]}function r(){o=Ct(a=fe(m,M,x),i);var n=i(v,d);return l=g-n[0]*h,c=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,a,o,l,c,s,f=ee(function(n,t){return n=i(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,M=0,x=0,b=Fo,_=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=le(b(a,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Fo):It((w=+n)*Ia),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Ia,d=n[1]%360*Ia,r()):[v*Ya,d*Ya]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Ia,M=n[1]%360*Ia,x=n.length>2?n[2]%360*Ia:0,r()):[m*Ya,M*Ya,x*Ya]},oa.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function le(n){return ie(n,function(t,e){n.point(t*Ia,e*Ia)})}function ce(n,t){return[n,t]}function se(n,t){return[n>ja?n-Fa:-ja>n?n+Fa:n,t]}function fe(n,t,e){return n?t||e?Ct(ge(n),pe(t,e)):ge(n):t||e?pe(t,e):se}function he(n){return function(t,e){return t+=n,[t>ja?t-Fa:-ja>t?t+Fa:t,e]}}function ge(n){var t=he(n);return t.invert=he(-n),t}function pe(n,t){function e(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*r+o*u;return[Math.atan2(l*i-s*a,o*r-c*u),tn(s*i+l*a)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),a=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*i-l*a;return[Math.atan2(l*i+c*a,o*r+s*u),tn(s*r-o*u)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,a,o){var l=a*t;null!=u?(u=de(e,u),i=de(e,i),(a>0?i>u:u>i)&&(u+=a*Fa)):(u=n+a*Fa,i=n-.5*l);for(var c,s=u;a>0?s>i:i>s;s-=l)o.point((c=_t([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Pa)%(2*Math.PI)}function me(n,t,e){var r=oa.range(n,t-Pa,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function ye(n,t,e){var r=oa.range(n,t-Pa,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),a=Math.cos(r),o=Math.sin(r),l=u*Math.cos(n),c=u*Math.sin(n),s=a*Math.cos(e),f=a*Math.sin(e),h=2*Math.asin(Math.sqrt(an(r-t)+u*a*an(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*l+t*s,u=e*c+t*f,a=e*i+t*o;return[Math.atan2(u,r)*Ya,Math.atan2(a,Math.sqrt(r*r+u*u))*Ya]}:function(){return[n*Ya,t*Ya]};return p.distance=h,p}function _e(){function n(n,u){var i=Math.sin(u*=Ia),a=Math.cos(u),o=Ma((n*=Ia)-t),l=Math.cos(o);Jo+=Math.atan2(Math.sqrt((o=a*Math.sin(o))*o+(o=r*i-e*a*l)*o),e*i+r*a*l),t=n,e=i,r=a}var t,e,r;Go.point=function(u,i){t=u*Ia,e=Math.sin(i*=Ia),r=Math.cos(i),Go.point=n},Go.lineEnd=function(){Go.point=Go.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),a=Math.cos(u);return[Math.atan2(n*i,r*a),Math.asin(r&&e*i/r)]},e}function Se(n,t){function e(n,t){a>0?-Oa+Pa>t&&(t=-Oa+Pa):t>Oa-Pa&&(t=Oa-Pa);var e=a/Math.pow(u(t),i);return[e*Math.sin(i*n),a-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(ja/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),a=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=a-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(a/r,1/i))-Oa]},e):Ne}function ke(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return Ma(u)u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var u=n[0],i=e[0],a=t[0]-u,o=r[0]-i,l=n[1],c=e[1],s=t[1]-l,f=r[1]-c,h=(o*(l-c)-f*(u-i))/(f*a-o*s);return[u+h*a,l+h*s]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function Ue(n){var t=cl.pop()||new Pe;return t.site=n,t}function je(n){Be(n),al.remove(n),cl.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,a=n.N,o=[n];je(n);for(var l=i;l.circle&&Ma(e-l.circle.x)s;++s)c=o[s],l=o[s-1],nr(c.edge,l.site,c.site,u);l=o[0],c=o[f-1],c.edge=Ke(l.site,c.site,null,u),$e(l),$e(c)}function He(n){for(var t,e,r,u,i=n.x,a=n.y,o=al._;o;)if(r=Oe(o,a)-i,r>Pa)o=o.L;else{if(u=i-Ie(o,a),!(u>Pa)){r>-Pa?(t=o.P,e=o):u>-Pa?(t=o,e=o.N):t=e=o;break}if(!o.R){t=o;break}o=o.R}var l=Ue(n);if(al.insert(t,l),t||e){if(t===e)return Be(t),e=Ue(t.site),al.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,s=c.x,f=c.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};nr(e.edge,c,p,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,p,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var a=n.P;if(!a)return-(1/0);e=a.site;var o=e.x,l=e.y,c=l-t;if(!c)return o;var s=o-r,f=1/i-1/c,h=s/c;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*c)-l+c/2+u-i/2)))/f+r:(r+o)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,u,i,a,o,l,c,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=il,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(o=i.edges,l=o.length,a=0;l>a;)s=o[a].end(),r=s.x,u=s.y,c=o[++a%l].start(),t=c.x,e=c.y,(Ma(r-t)>Pa||Ma(u-e)>Pa)&&(o.splice(a,0,new tr(Qe(i.site,s,Ma(r-f)Pa?{x:f,y:Ma(t-f)Pa?{x:Ma(e-p)Pa?{x:h,y:Ma(t-h)Pa?{x:Ma(e-g)=-Ua)){var g=l*l+c*c,p=s*s+f*f,v=(f*g-c*p)/h,d=(l*p-s*g)/h,f=d+o,m=sl.pop()||new Xe;m.arc=n,m.site=u,m.x=v+a,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=ll._;M;)if(m.yd||d>=o)return;if(h>p){if(i){if(i.y>=c)return}else i={x:d,y:l};e={x:d,y:c}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else{if(i){if(i.yg){if(i){if(i.x>=o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}else{if(i){if(i.xi||f>a||r>h||u>g)){if(p=n.point){var p,v=t-n.x,d=e-n.y,m=v*v+d*d;if(l>m){var y=Math.sqrt(l=m);r=t-y,u=e-y,i=t+y,a=e+y,o=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,s,f,x,b);break;case 1:c(n,x,f,h,b);break;case 2:c(n,s,b,x,g);break;case 3:c(n,x,b,h,g)}}}(n,r,u,i,a),o}function vr(n,t){n=oa.rgb(n),t=oa.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,a=t.g-r,o=t.b-u;return function(n){return"#"+bn(Math.round(e+i*n))+bn(Math.round(r+a*n))+bn(Math.round(u+o*n))}}function dr(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function mr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function yr(n,t){var e,r,u,i=hl.lastIndex=gl.lastIndex=0,a=-1,o=[],l=[];for(n+="",t+="";(e=hl.exec(n))&&(r=gl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),o[a]?o[a]+=u:o[++a]=u),(e=e[0])===(r=r[0])?o[a]?o[a]+=r:o[++a]=r:(o[++a]=null,l.push({i:a,x:mr(e,r)})),i=gl.lastIndex;return ir;++r)o[(e=l[r]).i]=e.x(n);return o.join("")})}function Mr(n,t){for(var e,r=oa.interpolators.length;--r>=0&&!(e=oa.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],u=[],i=n.length,a=t.length,o=Math.min(n.length,t.length);for(e=0;o>e;++e)r.push(Mr(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;a>e;++e)u[e]=t[e];return function(n){for(e=0;o>e;++e)u[e]=r[e](n);return u}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Oa)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Fa*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Fa/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=oa.hcl(n),t=oa.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,a=t.c-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return fn(e+i*n,r+a*n,u+o*n)+""}}function Dr(n,t){n=oa.hsl(n),t=oa.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,a=t.s-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return cn(e+i*n,r+a*n,u+o*n)+""}}function Pr(n,t){n=oa.lab(n),t=oa.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,a=t.a-r,o=t.b-u;return function(n){return gn(e+i*n,r+a*n,u+o*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),u=Fr(t,e),i=Hr(Or(e,t,-u))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:mr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:mr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var u=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:u-4,x:mr(n[0],t[0])},{i:u-2,x:mr(n[1],t[1])})}else(1!==t[0]||1!==t[1])&&e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=oa.transform(n),t=oa.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,u=-1,i=r.length;++u=0;)e.push(u[r])}function au(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,a=-1;++ae;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function mu(n){return n.reduce(yu,0)}function yu(n,t){return n+t[1]}function Mu(n,t){return xu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function bu(n){return[oa.min(n),oa.max(n)]}function _u(n,t){return n.value-t.value}function wu(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Su(n,t){n._pack_next=t,t._pack_prev=n}function ku(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Nu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(c=e.length)){var e,r,u,i,a,o,l,c,s=1/0,f=-(1/0),h=1/0,g=-(1/0);if(e.forEach(Eu),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(u=e[1],u.x=u.r,u.y=0,t(u),c>2))for(i=e[2],zu(r,u,i),t(i),wu(r,i),r._pack_prev=i,wu(i,u),u=r._pack_next,a=3;c>a;a++){zu(r,u,i=e[a]);var p=0,v=1,d=1;for(o=u._pack_next;o!==u;o=o._pack_next,v++)if(ku(o,i)){p=1;break}if(1==p)for(l=r._pack_prev;l!==o._pack_prev&&!ku(l,i);l=l._pack_prev,d++);p?(d>v||v==d&&u.ra;a++)i=e[a],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(Au)}}function Eu(n){n._pack_next=n._pack_prev=n}function Au(n){delete n._pack_next,delete n._pack_prev}function Cu(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,a=u.length;++i=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pu(n,t,e){return n.a.parent===t.parent?n.a:e}function Uu(n){return 1+oa.max(n,function(n){return n.y})}function ju(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fu(n){var t=n.children;return t&&t.length?Fu(t[0]):n}function Hu(n){var t,e=n.children;return e&&(t=e.length)?Hu(e[t-1]):n}function Ou(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Iu(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Yu(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zu(n){return n.rangeExtent?n.rangeExtent():Yu(n.range())}function Vu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Xu(n,t){var e,r=0,u=n.length-1,i=n[r],a=n[u];return i>a&&(e=r,r=u,u=e,e=i,i=a,a=e),n[r]=t.floor(i),n[u]=t.ceil(a),n}function $u(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Sl}function Bu(n,t,e,r){var u=[],i=[],a=0,o=Math.min(n.length,t.length)-1;for(n[o]2?Bu:Vu,l=r?Wr:Br;return a=u(n,t,l,e),o=u(t,n,l,Mr),i}function i(n){return a(n)}var a,o;return i.invert=function(n){return o(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Ur)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Qu(n,t)},i.tickFormat=function(t,e){return ni(n,t,e)},i.nice=function(t){return Gu(n,t),u()},i.copy=function(){return Wu(n,t,e,r)},u()}function Ju(n,t){return oa.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gu(n,t){return Xu(n,$u(Ku(n,t)[2])),Xu(n,$u(Ku(n,t)[2])),n}function Ku(n,t){null==t&&(t=10);var e=Yu(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Qu(n,t){return oa.range.apply(oa,Ku(n,t))}function ni(n,t,e){var r=Ku(n,t);if(e){var u=fo.exec(e);if(u.shift(),"s"===u[8]){var i=oa.formatPrefix(Math.max(Ma(r[0]),Ma(r[1])));return u[7]||(u[7]="."+ti(i.scale(r[2]))),u[8]="f",e=oa.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+ei(u[8],r)),e=u.join("")}else e=",."+ti(r[2])+"f";return oa.format(e)}function ti(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function ei(n,t){var e=ti(t[2]);return n in kl?Math.abs(e-ti(Math.max(Ma(t[0]),Ma(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ri(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function a(t){return n(u(t))}return a.invert=function(t){return i(n.invert(t))},a.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),a):r},a.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),a):t},a.nice=function(){var t=Xu(r.map(u),e?Math:El);return n.domain(t),r=t.map(i),a},a.ticks=function(){var n=Yu(r),a=[],o=n[0],l=n[1],c=Math.floor(u(o)),s=Math.ceil(u(l)),f=t%1?2:t;if(isFinite(s-c)){if(e){for(;s>c;c++)for(var h=1;f>h;h++)a.push(i(c)*h);a.push(i(c))}else for(a.push(i(c));c++0;h--)a.push(i(c)*h);for(c=0;a[c]l;s--);a=a.slice(c,s)}return a},a.tickFormat=function(n,e){if(!arguments.length)return Nl;arguments.length<2?e=Nl:"function"!=typeof e&&(e=oa.format(e));var r=Math.max(1,t*n/a.ticks().length);return function(n){var a=n/i(Math.round(u(n)));return t-.5>a*t&&(a*=t),r>=a?e(n):""}},a.copy=function(){return ri(n.copy(),t,e,r)},Ju(a,n)}function ui(n,t,e){function r(t){return n(u(t))}var u=ii(t),i=ii(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Qu(e,n)},r.tickFormat=function(n,t){return ni(e,n,t)},r.nice=function(n){return r.domain(Gu(e,n))},r.exponent=function(a){return arguments.length?(u=ii(t=a),i=ii(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return ui(n.copy(),t,e)},Ju(r,n)}function ii(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ai(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):NaN))-1)%i.length]}function r(t,e){return oa.range(n.length).map(function(n){return t+e*n})}var u,i,a;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new c;for(var i,a=-1,o=r.length;++ae?[NaN,NaN]:[e>0?o[e-1]:n[0],et?NaN:t/i+n,[t,t+1/i]},r.copy=function(){return li(n,t,e)},u()}function ci(n,t){function e(e){return e>=e?t[oa.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ci(n,t)},e}function si(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qu(n,t)},t.tickFormat=function(t,e){return ni(n,t,e)},t.copy=function(){return si(n)},t}function fi(){return 0}function hi(n){return n.innerRadius}function gi(n){return n.outerRadius}function pi(n){return n.startAngle}function vi(n){return n.endAngle}function di(n){return n&&n.padAngle}function mi(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function yi(n,t,e,r,u){var i=n[0]-t[0],a=n[1]-t[1],o=(u?r:-r)/Math.sqrt(i*i+a*a),l=o*a,c=-o*i,s=n[0]+l,f=n[1]+c,h=t[0]+l,g=t[1]+c,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(Math.max(0,M*M*y-x*x)),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,N=_-p,E=w-v,A=S-p,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mi(n){function t(t){function a(){c.push("M",i(n(s),o))}for(var l,c=[],s=[],f=-1,h=t.length,g=En(e),p=En(r);++f1?n.join("L"):n+"Z"}function bi(n){return n.join("L")+"Z"}function _i(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1&&u.push("H",r[0]),u.join("")}function wi(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){o=t[1],i=n[l],l++,r+="C"+(u[0]+a[0])+","+(u[1]+a[1])+","+(i[0]-o[0])+","+(i[1]-o[1])+","+i[0]+","+i[1];for(var c=2;c9&&(u=3*t/Math.sqrt(u),a[o]=u*e,a[o+1]=u*r));for(o=-1;++o<=l;)u=(n[Math.min(l,o+1)][0]-n[Math.max(0,o-1)][0])/(6*(1+a[o]*a[o])),i.push([u||0,a[o]*u||0]);return i}function Fi(n){return n.length<3?xi(n):n[0]+Ai(n,ji(n))}function Hi(n){for(var t,e,r,u=-1,i=n.length;++u=t?a(n-t):void(s.c=a)}function a(e){var u=p.active,i=p[u];i&&(i.timer.c=null,i.timer.t=NaN,--p.count,delete p[u],i.event&&i.event.interrupt.call(n,n.__data__,i.index));for(var a in p)if(r>+a){var c=p[a];c.timer.c=null,c.timer.t=NaN,--p.count,delete p[a]}s.c=o,qn(function(){return s.c&&o(e||1)&&(s.c=null,s.t=NaN),1},0,l),p.active=r,v.event&&v.event.start.call(n,n.__data__,t),g=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&g.push(r)}),h=v.ease,f=v.duration}function o(u){for(var i=u/f,a=h(i),o=g.length;o>0;)g[--o].call(n,a);return i>=1?(v.event&&v.event.end.call(n,n.__data__,t),--p.count?delete p[r]:delete n[e],1):void 0}var l,s,f,h,g,p=n[e]||(n[e]={active:0,count:0}),v=p[r];v||(l=u.time,s=qn(i,0,l),v=p[r]={tween:new c,time:l,timer:s,delay:u.delay,duration:u.duration,ease:u.ease,index:t},u=null,++p.count)}function na(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function ta(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function ea(n){return n.toISOString()}function ra(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=oa.bisect(Kl,u);return i==Kl.length?[t.year,Ku(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Kl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=ua(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=ua(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yu(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],ua(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ra(n.copy(),t,e)},Ju(r,n)}function ua(n){return new Date(n)}function ia(n){return JSON.parse(n.responseText)}function aa(n){var t=sa.createRange();return t.selectNode(sa.body),t.createContextualFragment(n.responseText)}var oa={version:"3.5.16"},la=[].slice,ca=function(n){return la.call(n)},sa=this.document;if(sa)try{ca(sa.documentElement.childNodes)[0].nodeType}catch(fa){ca=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),sa)try{sa.createElement("DIV").style.setProperty("opacity",0,"")}catch(ha){var ga=this.Element.prototype,pa=ga.setAttribute,va=ga.setAttributeNS,da=this.CSSStyleDeclaration.prototype,ma=da.setProperty;ga.setAttribute=function(n,t){pa.call(this,n,t+"")},ga.setAttributeNS=function(n,t,e){va.call(this,n,t,e+"")},da.setProperty=function(n,t,e){ma.call(this,n,t+"",e)}}oa.ascending=e,oa.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},oa.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ur&&(e=r)}else{for(;++u=r){e=r;break}for(;++ur&&(e=r)}return e},oa.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ue&&(e=r)}else{for(;++u=r){e=r;break}for(;++ue&&(e=r)}return e},oa.extent=function(n,t){var e,r,u,i=-1,a=n.length;if(1===arguments.length){for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},oa.sum=function(n,t){var e,r=0,i=n.length,a=-1;if(1===arguments.length)for(;++a1?l/(s-1):void 0},oa.deviation=function(){var n=oa.variance.apply(this,arguments);return n?Math.sqrt(n):n};var ya=i(e);oa.bisectLeft=ya.left,oa.bisect=oa.bisectRight=ya.right,oa.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},oa.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},oa.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},oa.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},oa.transpose=function(n){if(!(u=n.length))return[];for(var t=-1,e=oa.min(n,a),r=new Array(e);++t=0;)for(r=n[u],t=r.length;--t>=0;)e[--a]=r[t];return e};var Ma=Math.abs;oa.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,u=[],i=o(Ma(e)),a=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++a)>t;)u.push(r/i);else for(;(r=n+e*++a)=i.length)return r?r.call(u,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,v=i[o++],d=new c;++g=i.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],a=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(oa.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return a[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},oa.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(m,{has:h,add:function(n){return this._[s(n+="")]=!0,n},remove:g,values:p,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),oa.behavior={},oa.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},oa.event=null,oa.requote=function(n){return n.replace(wa,"\\$&")};var wa=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Sa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ka=function(n,t){return t.querySelector(n)},Na=function(n,t){return t.querySelectorAll(n)},Ea=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ea=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(ka=function(n,t){return Sizzle(n,t)[0]||null},Na=Sizzle,Ea=Sizzle.matchesSelector),oa.selection=function(){return oa.select(sa.documentElement)};var Aa=oa.selection.prototype=[];Aa.select=function(n){var t,e,r,u,i=[];n=A(n);for(var a=-1,o=this.length;++a=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),za.hasOwnProperty(e)?{space:za[e],local:n}:n}},Aa.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=oa.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Aa.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++uu){if("string"!=typeof n){2>u&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Aa.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},Aa.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Aa.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Aa.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Aa.insert=function(n,t){return n=j(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Aa.remove=function(){return this.each(F)},Aa.data=function(n,t){function e(n,e){var r,u,i,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new c,y=new Array(a);for(r=-1;++rr;++r)p[r]=H(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,o.push(p),l.push(g),s.push(v)}var r,u,i=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return E(u)},Aa.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},Aa.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},Aa.size=function(){var n=0;return Y(this,function(){++n}),n};var La=[];oa.selection.enter=Z,oa.selection.enter.prototype=La,La.append=Aa.append,La.empty=Aa.empty,La.node=Aa.node,La.call=Aa.call,La.size=Aa.size,La.select=function(n){for(var t,e,r,u,i,a=[],o=-1,l=this.length;++or){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var qa=oa.map({mouseenter:"mouseover",mouseleave:"mouseout"});sa&&qa.forEach(function(n){"on"+n in sa&&qa.remove(n)});var Ta,Ra=0;oa.mouse=function(n){return J(n,k())};var Da=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;oa.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},oa.behavior.drag=function(){function n(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(n,t,e,i,a){return function(){function o(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(m.on(i+d,null).on(a+d,null),y(p),g({type:"dragend"}))}var c,s=this,f=oa.event.target.correspondingElement||oa.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=oa.select(e(f)).on(i+d,o).on(a+d,l),y=W(f),M=t(h,v);u?(c=u.apply(s,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],g({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),u=null,i=e(b,oa.mouse,t,"mousemove","mouseup"),a=e(G,oa.touch,y,"touchmove","touchend");return n.origin=function(t){return arguments.length?(u=t,n):u},oa.rebind(n,r,"on")},oa.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?ca(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Pa=1e-6,Ua=Pa*Pa,ja=Math.PI,Fa=2*ja,Ha=Fa-Pa,Oa=ja/2,Ia=ja/180,Ya=180/ja,Za=Math.SQRT2,Va=2,Xa=4;oa.interpolateZoom=function(n,t){var e,r,u=n[0],i=n[1],a=n[2],o=t[0],l=t[1],c=t[2],s=o-u,f=l-i,h=s*s+f*f;if(Ua>h)r=Math.log(c/a)/Za,e=function(n){return[u+n*s,i+n*f,a*Math.exp(Za*n*r)]};else{var g=Math.sqrt(h),p=(c*c-a*a+Xa*h)/(2*a*Va*g),v=(c*c-a*a-Xa*h)/(2*c*Va*g),d=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(v*v+1)-v);r=(m-d)/Za,e=function(n){var t=n*r,e=rn(d),o=a/(Va*g)*(e*un(Za*t+d)-en(d));return[u+o*s,i+o*f,a*e/rn(Za*t+d)]}}return e.duration=1e3*r,e},oa.behavior.zoom=function(){function n(n){n.on(L,f).on(Ba+".zoom",g).on("dblclick.zoom",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(A[0],Math.min(A[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function a(t,e,r,a){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,a)),i(d=e,r),t=oa.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function o(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||(n({type:"zoomend"}),d=null)}function f(){function n(){o=1,i(oa.mouse(u),h),c(a)}function r(){f.on(q,null).on(T,null),g(o),s(a)}var u=this,a=D.of(u,arguments),o=0,f=oa.select(t(u)).on(q,n).on(T,r),h=e(oa.mouse(u)),g=W(u);Il.call(u),l(a)}function h(){function n(){var n=oa.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=oa.event.target;oa.select(t).on(x,r).on(b,o),_.push(t);for(var e=oa.event.changedTouches,u=0,i=e.length;i>u;++u)d[e[u].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var s=l[0];a(p,s,d[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var s=l[0],f=l[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,a=oa.touches(p);Il.call(p);for(var o=0,l=a.length;l>o;++o,r=null)if(e=a[o],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),c(v)}function o(){if(oa.event.touches.length){for(var t=oa.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}oa.selectAll(_).on(y,null),w.on(L,f).on(R,h),N(),s(v)}var g,p=this,v=D.of(p,arguments),d={},m=0,y=".zoom-"+oa.event.changedTouches[0].identifier,x="touchmove"+y,b="touchend"+y,_=[],w=oa.select(p),N=W(p);t(),l(v),w.on(L,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(Il.call(this),v=e(d=m||oa.mouse(this)),l(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*$a())*k.k),i(d,v),c(n)}function p(){var n=oa.mouse(this),t=Math.log(k.k)/Math.LN2;a(this,n,e(n),oa.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,m,y,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Wa,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return Ba||(Ba="onwheel"in sa?($a=function(){return-oa.event.deltaY*(oa.event.deltaMode?120:1)},"wheel"):"onmousewheel"in sa?($a=function(){return oa.event.wheelDelta},"mousewheel"):($a=function(){return-oa.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Hl?oa.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=d?d[0]:e/2,i=d?d[1]:r/2,a=oa.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=a(t),o=e/r[2];this.__chart__=k={x:u-r[0]*o,y:i-r[1]*o,k:o},c(n)}}).each("interrupt.zoom",function(){s(n)}).each("end.zoom",function(){s(n)}):(this.__chart__=k,l(n),c(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},u(+t),o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Wa:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},oa.rebind(n,D,"on")};var $a,Ba,Wa=[0,1/0];oa.color=on,on.prototype.toString=function(){return this.rgb()+""},oa.hsl=ln;var Ja=ln.prototype=new on;Ja.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Ja.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Ja.rgb=function(){return cn(this.h,this.s,this.l)},oa.hcl=sn;var Ga=sn.prototype=new on;Ga.brighter=function(n){return new sn(this.h,this.c,Math.min(100,this.l+Ka*(arguments.length?n:1)))},Ga.darker=function(n){return new sn(this.h,this.c,Math.max(0,this.l-Ka*(arguments.length?n:1)))},Ga.rgb=function(){return fn(this.h,this.c,this.l).rgb()},oa.lab=hn;var Ka=18,Qa=.95047,no=1,to=1.08883,eo=hn.prototype=new on;eo.brighter=function(n){return new hn(Math.min(100,this.l+Ka*(arguments.length?n:1)),this.a,this.b)},eo.darker=function(n){return new hn(Math.max(0,this.l-Ka*(arguments.length?n:1)),this.a,this.b)},eo.rgb=function(){return gn(this.l,this.a,this.b)},oa.rgb=yn;var ro=yn.prototype=new on;ro.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new yn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new yn(u,u,u)},ro.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new yn(n*this.r,n*this.g,n*this.b)},ro.hsl=function(){return wn(this.r,this.g,this.b)},ro.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var uo=oa.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});uo.forEach(function(n,t){uo.set(n,Mn(t))}),oa.functor=En,oa.xhr=An(y),oa.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var a=Cn(n,t,null==e?r:u(e),i);return a.row=function(n){return arguments.length?a.response(null==(e=n)?r:u(n)):e},a}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(a).join(n)}function a(n){return o.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var o=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return a;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),o=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++o);else if(r!==l)continue;return n.slice(t,s-o)}return n.slice(t)}for(var r,u,i={},a={},o=[],c=n.length,s=0,f=0;(r=e())!==a;){for(var h=[];r!==i&&r!==a;)h.push(r),r=e();t&&null==(h=t(h,f++))||o.push(h)}return o},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(a).join(n)].concat(t.map(function(t){return u.map(function(n){return a(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},oa.csv=oa.dsv(",","text/csv"),oa.tsv=oa.dsv(" ","text/tab-separated-values");var io,ao,oo,lo,co=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};oa.timer=function(){qn.apply(this,arguments)},oa.timer.flush=function(){Rn(),Dn()},oa.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var so=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Un);oa.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=oa.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),so[8+e/3]};var fo=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,ho=oa.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=oa.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),go=oa.time={},po=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){vo.setUTCDate.apply(this._,arguments)},setDay:function(){vo.setUTCDay.apply(this._,arguments)},setFullYear:function(){vo.setUTCFullYear.apply(this._,arguments)},setHours:function(){vo.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){vo.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){vo.setUTCMinutes.apply(this._,arguments)},setMonth:function(){vo.setUTCMonth.apply(this._,arguments)},setSeconds:function(){vo.setUTCSeconds.apply(this._,arguments)},setTime:function(){vo.setTime.apply(this._,arguments)}};var vo=Date.prototype;go.year=On(function(n){return n=go.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),go.years=go.year.range,go.years.utc=go.year.utc.range,go.day=On(function(n){var t=new po(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),go.days=go.day.range,go.days.utc=go.day.utc.range,go.dayOfYear=function(n){var t=go.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=go[n]=On(function(n){return(n=go.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=go.year(n).getDay();return Math.floor((go.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});go[n+"s"]=e.range,go[n+"s"].utc=e.utc.range,go[n+"OfYear"]=function(n){var e=go.year(n).getDay();return Math.floor((go.dayOfYear(n)+(e+t)%7)/7)}}),go.week=go.sunday,go.weeks=go.sunday.range,go.weeks.utc=go.sunday.utc.range,go.weekOfYear=go.sundayOfYear;var mo={"-":"",_:" ",0:"0"},yo=/^\s*\d+/,Mo=/^%/;oa.locale=function(n){return{numberFormat:jn(n),timeFormat:Yn(n)}};var xo=oa.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], +shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});oa.format=xo.numberFormat,oa.geo={},st.prototype={s:0,t:0,add:function(n){ft(n,this.t,bo),ft(bo.s,this.s,this),this.s?this.t+=bo.t:this.s=bo.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var bo=new st;oa.geo.stream=function(n,t){n&&_o.hasOwnProperty(n.type)?_o[n.type](n,t):ht(n,t)};var _o={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*ja+n:n,No.lineStart=No.lineEnd=No.point=b}};oa.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=dt([t*Ia,e*Ia]);if(m){var u=yt(m,r),i=[u[1],-u[0],0],a=yt(i,u);bt(a),a=_t(a);var l=t-p,c=l>0?1:-1,v=a[0]*Ya*c,d=Ma(l)>180;if(d^(v>c*p&&c*t>v)){var y=a[1]*Ya;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>c*p&&c*t>v)){var y=-a[1]*Ya;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=Ma(r)>180?r+(r>0?360:-360):r}else v=n,d=e;No.point(n,e),t(n,e)}function i(){No.lineStart()}function a(){u(v,d),No.lineEnd(),Ma(y)>Pa&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function o(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nko?(s=-(h=180),f=-(g=90)):y>Pa?g=90:-Pa>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],oa.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],c(e[0],u)||c(e[1],u)?(o(u[0],e[1])>o(u[0],u[1])&&(u[1]=e[1]),o(e[0],u[1])>o(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var a,e,p=-(1/0),t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(a=o(u[1],e[0]))>p&&(p=a,s=e[0],h=u[1])}return M=x=null,s===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[s,f],[h,g]]}}(),oa.geo.centroid=function(n){Eo=Ao=Co=zo=Lo=qo=To=Ro=Do=Po=Uo=0,oa.geo.stream(n,jo);var t=Do,e=Po,r=Uo,u=t*t+e*e+r*r;return Ua>u&&(t=qo,e=To,r=Ro,Pa>Ao&&(t=Co,e=zo,r=Lo),u=t*t+e*e+r*r,Ua>u)?[NaN,NaN]:[Math.atan2(e,t)*Ya,tn(r/Math.sqrt(u))*Ya]};var Eo,Ao,Co,zo,Lo,qo,To,Ro,Do,Po,Uo,jo={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){jo.lineStart=At},polygonEnd:function(){jo.lineStart=Nt}},Fo=Rt(zt,jt,Ht,[-ja,-ja/2]),Ho=1e9;oa.geo.clipExtent=function(){var n,t,e,r,u,i,a={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(o){return arguments.length?(i=Zt(n=+o[0][0],t=+o[0][1],e=+o[1][0],r=+o[1][1]),u&&(u.valid=!1,u=null),a):[[n,t],[e,r]]}};return a.extent([[0,0],[960,500]])},(oa.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,oa.geo.albers=function(){return oa.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},oa.geo.albersUsa=function(){function n(n){var i=n[0],a=n[1];return t=null,e(i,a),t||(r(i,a),t)||u(i,a),t}var t,e,r,u,i=oa.geo.albers(),a=oa.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o=oa.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?a:u>=.166&&.234>u&&r>=-.214&&-.115>r?o:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=a.stream(n),r=o.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),a.precision(t),o.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),a.scale(.35*t),o.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var c=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*c,f-.238*c],[s+.455*c,f+.238*c]]).stream(l).point,r=a.translate([s-.307*c,f+.201*c]).clipExtent([[s-.425*c+Pa,f+.12*c+Pa],[s-.214*c-Pa,f+.234*c-Pa]]).stream(l).point,u=o.translate([s-.205*c,f+.212*c]).clipExtent([[s-.214*c+Pa,f+.166*c+Pa],[s-.115*c-Pa,f+.234*c-Pa]]).stream(l).point,n},n.scale(1070)};var Oo,Io,Yo,Zo,Vo,Xo,$o={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Io=0,$o.lineStart=$t},polygonEnd:function(){$o.lineStart=$o.lineEnd=$o.point=b,Oo+=Ma(Io/2)}},Bo={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Wo={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Wo.lineStart=ne},polygonEnd:function(){Wo.point=Gt,Wo.lineStart=Kt,Wo.lineEnd=Qt}};oa.geo.path=function(){function n(n){return n&&("function"==typeof o&&i.pointRadius(+o.apply(this,arguments)),a&&a.valid||(a=u(i)),oa.geo.stream(n,a)),i.result()}function t(){return a=null,n}var e,r,u,i,a,o=4.5;return n.area=function(n){return Oo=0,oa.geo.stream(n,u($o)),Oo},n.centroid=function(n){return Co=zo=Lo=qo=To=Ro=Do=Po=Uo=0,oa.geo.stream(n,u(Wo)),Uo?[Do/Uo,Po/Uo]:Ro?[qo/Ro,To/Ro]:Lo?[Co/Lo,zo/Lo]:[NaN,NaN]},n.bounds=function(n){return Vo=Xo=-(Yo=Zo=1/0),oa.geo.stream(n,u(Bo)),[[Yo,Zo],[Vo,Xo]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||re(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Wt:new te(n),"function"!=typeof o&&i.pointRadius(o),t()):r},n.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(i.pointRadius(+t),+t),n):o},n.projection(oa.geo.albersUsa()).context(null)},oa.geo.transform=function(n){return{stream:function(t){var e=new ue(t);for(var r in n)e[r]=n[r];return e}}},ue.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},oa.geo.projection=ae,oa.geo.projectionMutator=oe,(oa.geo.equirectangular=function(){return ae(ce)}).raw=ce.invert=ce,oa.geo.rotation=function(n){function t(t){return t=n(t[0]*Ia,t[1]*Ia),t[0]*=Ya,t[1]*=Ya,t}return n=fe(n[0]%360*Ia,n[1]*Ia,n.length>2?n[2]*Ia:0),t.invert=function(t){return t=n.invert(t[0]*Ia,t[1]*Ia),t[0]*=Ya,t[1]*=Ya,t},t},se.invert=ce,oa.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=fe(-n[0]*Ia,-n[1]*Ia,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ya,n[1]*=Ya}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Ia,u*Ia),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Ia,(u=+r)*Ia),n):u},n.angle(90)},oa.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Ia,u=n[1]*Ia,i=t[1]*Ia,a=Math.sin(r),o=Math.cos(r),l=Math.sin(u),c=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*a)*e+(e=c*s-l*f*o)*e),l*s+c*f*o)},oa.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return oa.range(Math.ceil(i/d)*d,u,d).map(h).concat(oa.range(Math.ceil(c/m)*m,l,m).map(g)).concat(oa.range(Math.ceil(r/p)*p,e,p).filter(function(n){return Ma(n%d)>Pa}).map(s)).concat(oa.range(Math.ceil(o/v)*v,a,v).filter(function(n){return Ma(n%m)>Pa}).map(f))}var e,r,u,i,a,o,l,c,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(l).slice(1),h(u).reverse().slice(1),g(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],c=+t[0][1],l=+t[1][1],i>u&&(t=i,i=u,u=t),c>l&&(t=c,c=l,l=t),n.precision(y)):[[i,c],[u,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),n.precision(y)):[[r,o],[e,a]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=me(o,a,90),f=ye(r,e,y),h=me(c,l,90),g=ye(i,u,y),n):y},n.majorExtent([[-180,-90+Pa],[180,90-Pa]]).minorExtent([[-180,-80-Pa],[180,80+Pa]])},oa.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=Me,u=xe;return n.distance=function(){return oa.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},oa.geo.interpolate=function(n,t){return be(n[0]*Ia,n[1]*Ia,t[0]*Ia,t[1]*Ia)},oa.geo.length=function(n){return Jo=0,oa.geo.stream(n,Go),Jo};var Jo,Go={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Ko=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(oa.geo.azimuthalEqualArea=function(){return ae(Ko)}).raw=Ko;var Qo=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(oa.geo.azimuthalEquidistant=function(){return ae(Qo)}).raw=Qo,(oa.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(oa.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var nl=we(function(n){return 1/n},Math.atan);(oa.geo.gnomonic=function(){return ae(nl)}).raw=nl,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Oa]},(oa.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var tl=we(function(){return 1},Math.asin);(oa.geo.orthographic=function(){return ae(tl)}).raw=tl;var el=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(oa.geo.stereographic=function(){return ae(el)}).raw=el,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Oa]},(oa.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,oa.geom={},oa.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=En(e),i=En(r),a=n.length,o=[],l=[];for(t=0;a>t;t++)o.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(o.sort(qe),t=0;a>t;t++)l.push([o[t][0],-o[t][1]]);var c=Le(o),s=Le(l),f=s[0]===c[0],h=s[s.length-1]===c[c.length-1],g=[];for(t=c.length-1;t>=0;--t)g.push(n[o[c[t]][2]]);for(t=+f;t=r&&c.x<=i&&c.y>=u&&c.y<=a?[[r,a],[i,a],[i,u],[r,u]]:[];s.point=n[o]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Pa)*Pa,y:Math.round(a(n,t)/Pa)*Pa,i:t}})}var r=Ce,u=ze,i=r,a=u,o=fl;return n?t(n):(t.links=function(n){return or(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return or(e(n)).cells.forEach(function(e,r){for(var u,i,a=e.site,o=e.edges.sort(Ve),l=-1,c=o.length,s=o[c-1].edge,f=s.l===a?s.r:s.l;++l=c,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=hr()),f?u=c:o=c,h?a=s:l=s,i(n,t,e,r,u,a,o,l)}var s,f,h,g,p,v,d,m,y,M=En(o),x=En(l);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,a)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=hr();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){gr(n,k,v,d,m,y)},k.find=function(n){return pr(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=vl.get(e)||pl,r=dl.get(r)||y,br(r(e.apply(null,la.call(arguments,1))))},oa.interpolateHcl=Rr,oa.interpolateHsl=Dr,oa.interpolateLab=Pr,oa.interpolateRound=Ur,oa.transform=function(n){var t=sa.createElementNS(oa.ns.prefix.svg,"g");return(oa.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:ml)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var ml={a:1,b:0,c:0,d:1,e:0,f:0};oa.interpolateTransform=$r,oa.layout={},oa.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++eo*o/m){if(v>l){var c=t.charge/l;n.px-=i*c,n.py-=a*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=i*c,n.py-=a*c}}return!t.charge}}function t(n){n.px=oa.event.x,n.py=oa.event.y,l.resume()}var e,r,u,i,a,o,l={},c=oa.dispatch("start","tick","end"),s=[1,1],f=.9,h=yl,g=Ml,p=-30,v=xl,d=.1,m=.64,M=[],x=[];return l.tick=function(){if((u*=.99)<.005)return e=null,c.end({type:"end",alpha:u=0}),!0;var t,r,l,h,g,v,m,y,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,g=l.target,y=g.x-h.x,b=g.y-h.y,(v=y*y+b*b)&&(v=u*a[r]*((v=Math.sqrt(v))-i[r])/v,y*=v,b*=v,g.x-=y*(m=h.weight+g.weight?h.weight/(h.weight+g.weight):.5),g.y-=b*m,h.x+=y*(m=1-m),h.y+=b*m);if((m=u*d)&&(y=s[0]/2,b=s[1]/2,r=-1,m))for(;++r<_;)l=M[r],l.x+=(y-l.x)*m,l.y+=(b-l.y)*m;if(p)for(ru(t=oa.geom.quadtree(M),u,o),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*f,l.y-=(l.py-(l.py=l.y))*f);c.tick({type:"tick",alpha:u})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(s=n,l):s},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.friction=function(n){return arguments.length?(f=+n,l):f},l.charge=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(m=n*n,l):Math.sqrt(m)},l.alpha=function(n){return arguments.length?(n=+n,u?n>0?u=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:u=0})):n>0&&(c.start({type:"start",alpha:u=n}),e=qn(l.tick)),l):u},l.start=function(){function n(n,r){if(!e){for(e=new Array(u),l=0;u>l;++l)e[l]=[];for(l=0;c>l;++l){var i=x[l];e[i.source.index].push(i.target),e[i.target.index].push(i.source)}}for(var a,o=e[t],l=-1,s=o.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;u>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",f)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(i=[],"function"==typeof h)for(t=0;c>t;++t)i[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)i[t]=h;if(a=[],"function"==typeof g)for(t=0;c>t;++t)a[t]=+g.call(this,x[t],t);else for(t=0;c>t;++t)a[t]=g;if(o=[],"function"==typeof p)for(t=0;u>t;++t)o[t]=+p.call(this,M[t],t);else for(t=0;u>t;++t)o[t]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=oa.behavior.drag().origin(y).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",nu)),arguments.length?void this.on("mouseover.force",tu).on("mouseout.force",eu).call(r):r},oa.rebind(l,c,"on")};var yl=20,Ml=1,xl=1/0;oa.layout.hierarchy=function(){function n(u){var i,a=[u],o=[];for(u.depth=0;null!=(i=a.pop());)if(o.push(i),(c=e.call(n,i,i.depth))&&(l=c.length)){for(var l,c,s;--l>=0;)a.push(s=c[l]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=c}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return au(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),o}var t=cu,e=ou,r=lu;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(iu(t,function(n){n.children&&(n.value=0)}),au(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},oa.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(a=i.length)){var a,o,l,c=-1;for(r=t.value?r/t.value:0;++cf?-1:1),p=oa.sum(c),v=p?(f-l*g)/p:0,d=oa.range(l),m=[];return null!=e&&d.sort(e===bl?function(n,t){return c[t]-c[n]}:function(n,t){return e(a[n],a[t])}),d.forEach(function(n){m[n]={data:a[n],value:o=c[n],startAngle:s,endAngle:s+=o*v+g,padAngle:h}}),m}var t=Number,e=bl,r=0,u=Fa,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var bl={};oa.layout.stack=function(){function n(o,l){if(!(h=o.length))return o;var c=o.map(function(e,r){return t.call(n,e,r)}),s=c.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),a.call(n,t,e)]})}),f=e.call(n,s,l);c=oa.permute(c,f),s=oa.permute(s,f);var h,g,p,v,d=r.call(n,s,l),m=c[0].length;for(p=0;m>p;++p)for(u.call(n,c[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,c[g][p],v+=s[g-1][p][1],s[g][p][1]);return o}var t=y,e=pu,r=vu,u=gu,i=fu,a=hu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:_l.get(t)||pu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:wl.get(t)||vu,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(a=t,n):a},n.out=function(t){return arguments.length?(u=t,n):u},n};var _l=oa.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(du),i=n.map(mu),a=oa.range(r).sort(function(n,t){return u[n]-u[t]}),o=0,l=0,c=[],s=[];for(t=0;r>t;++t)e=a[t],l>o?(o+=i[e],c.push(e)):(l+=i[e],s.push(e));return s.reverse().concat(c)},reverse:function(n){return oa.range(n.length).reverse()},"default":pu}),wl=oa.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,a=[],o=0,l=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>o&&(o=r),a.push(r)}for(e=0;i>e;++e)l[e]=(o-a[e])/2;return l},wiggle:function(n){var t,e,r,u,i,a,o,l,c,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=l=c=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,o=f[e][0]-f[e-1][0];s>t;++t){for(r=0,a=(n[t][e][1]-n[t][e-1][1])/(2*o);t>r;++r)a+=(n[r][e][1]-n[r][e-1][1])/o;i+=a*n[t][e][1]}g[e]=l-=u?i/u*o:0,c>l&&(c=l)}for(e=0;h>e;++e)g[e]-=c;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,a=1/u,o=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=a}for(e=0;i>e;++e)o[e]=0;return o},zero:vu});oa.layout.histogram=function(){function n(n,i){for(var a,o,l=[],c=n.map(e,this),s=r.call(this,c,i),f=u.call(this,s,c,i),i=-1,h=c.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&o<=s[1]&&(a=l[oa.bisect(f,o,1,g)-1],a.y+=p,a.push(n[i]));return l}var t=!0,e=Number,r=bu,u=Mu;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return xu(n,t)}:En(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},oa.layout.pack=function(){function n(n,i){var a=e.call(this,n,i),o=a[0],l=u[0],c=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(o.x=o.y=0,au(o,function(n){n.r=+s(n.value)}),au(o,Nu),r){var f=r*(t?1:Math.max(2*o.r/l,2*o.r/c))/2;au(o,function(n){n.r+=f}),au(o,Nu),au(o,function(n){n.r-=f})}return Cu(o,l/2,c/2,t?1:1/Math.max(2*o.r/l,2*o.r/c)),a}var t,e=oa.layout.hierarchy().sort(_u),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},uu(n,e)},oa.layout.tree=function(){function n(n,u){var s=a.call(this,n,u),f=s[0],h=t(f);if(au(h,e),h.parent.m=-h.z,iu(h,r),c)iu(f,i);else{var g=f,p=f,v=f;iu(f,function(n){n.xp.x&&(p=n),n.depth>v.depth&&(v=n)});var d=o(g,p)/2-g.x,m=l[0]/(p.x+o(p,g)/2+d),y=l[1]/(v.depth||1);iu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,a=0,o=i.length;o>a;++a)r.push((i[a]=u={_:i[a],parent:t,children:(u=i[a].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:a}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Du(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+o(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+o(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,a=t,l=u.parent.children[0],c=u.m,s=i.m,f=a.m,h=l.m;a=Tu(a),u=qu(u),a&&u;)l=qu(l),i=Tu(i),i.a=n,r=a.z+f-u.z-c+o(a._,u._),r>0&&(Ru(Pu(a,n,e),n,r),c+=r,s+=r),f+=a.m,c+=u.m,h+=l.m,s+=i.m;a&&!Tu(i)&&(i.t=a,i.m+=f-s),u&&!qu(l)&&(l.t=u,l.m+=c-h,e=n)}return e}function i(n){n.x*=l[0],n.y=n.depth*l[1]}var a=oa.layout.hierarchy().sort(null).value(null),o=Lu,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(o=t,n):o},n.size=function(t){return arguments.length?(c=null==(l=t)?i:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:i,n):c?l:null},uu(n,a)},oa.layout.cluster=function(){function n(n,i){var a,o=t.call(this,n,i),l=o[0],c=0;au(l,function(n){var t=n.children;t&&t.length?(n.x=ju(t),n.y=Uu(t)):(n.x=a?c+=e(n,a):0,n.y=0,a=n)});var s=Fu(l),f=Hu(l),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return au(l,u?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),o}var t=oa.layout.hierarchy().sort(null).value(null),e=Lu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},uu(n,t)},oa.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var a,o,l,c=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?c.dx:"dice"===g?c.dy:"slice-dice"===g?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),s.area=0;(l=h.length)>0;)s.push(a=h[l-1]),s.area+=a.area,"squarify"!==g||(o=r(s,v))<=p?(h.pop(),p=o):(s.area-=s.pop().area,u(s,v,c,!1),v=Math.min(c.dx,c.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,c,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,a=f(t),o=r.slice(),l=[];for(n(o,a.dx*a.dy/t.value),l.area=0;i=o.pop();)l.push(i),l.area+=i.area,null!=i.z&&(u(l,i.z?a.dx:a.dy,a,!o.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,a=-1,o=n.length;++ae&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,a=n.length,o=e.x,c=e.y,s=t?l(n.area/t):0; +if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=oa.random.normal.apply(oa,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=oa.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},oa.scale={};var Sl={floor:y,ceil:y};oa.scale.linear=function(){return Wu([0,1],[0,1],Mr,!1)};var kl={s:1,g:1,p:1,r:1,e:1};oa.scale.log=function(){return ri(oa.scale.linear().domain([0,1]),10,!0,[1,10])};var Nl=oa.format(".0e"),El={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};oa.scale.pow=function(){return ui(oa.scale.linear(),1,[0,1])},oa.scale.sqrt=function(){return oa.scale.pow().exponent(.5)},oa.scale.ordinal=function(){return ai([],{t:"range",a:[[]]})},oa.scale.category10=function(){return oa.scale.ordinal().range(Al)},oa.scale.category20=function(){return oa.scale.ordinal().range(Cl)},oa.scale.category20b=function(){return oa.scale.ordinal().range(zl)},oa.scale.category20c=function(){return oa.scale.ordinal().range(Ll)};var Al=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Cl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),zl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);oa.scale.quantile=function(){return oi([],[])},oa.scale.quantize=function(){return li(0,1,[0,1])},oa.scale.threshold=function(){return ci([.5],[0,1])},oa.scale.identity=function(){return si([0,1])},oa.svg={},oa.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),s=a.apply(this,arguments)-Oa,f=o.apply(this,arguments)-Oa,h=Math.abs(f-s),g=s>f?0:1;if(n>c&&(p=c,c=n,n=p),h>=Ha)return t(c,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,N=0,E=0,A=[];if((m=(+l.apply(this,arguments)||0)/2)&&(d=i===ql?Math.sqrt(n*n+c*c):+i.apply(this,arguments),g||(E*=-1),c&&(E=tn(d/c*Math.sin(m))),n&&(N=tn(d/n*Math.sin(m)))),c){y=c*Math.cos(s+E),M=c*Math.sin(s+E),x=c*Math.cos(f-E),b=c*Math.sin(f-E);var C=Math.abs(f-s-2*E)<=ja?0:1;if(E&&mi(y,M,x,b)===g^C){var z=(s+f)/2;y=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-N),w=n*Math.sin(f-N),S=n*Math.cos(s+N),k=n*Math.sin(s+N);var L=Math.abs(s-f+2*N)<=ja?0:1;if(N&&mi(_,w,S,k)===1-g^L){var q=(s+f)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Pa&&(p=Math.min(Math.abs(c-n)/2,+u.apply(this,arguments)))>.001){v=c>n^g?0:1;var T=p,R=p;if(ja>h){var D=null==S?[_,w]:null==x?[y,M]:Re([y,M],[S,k],[x,b],[_,w]),P=y-D[0],U=M-D[1],j=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*j+U*F)/(Math.sqrt(P*P+U*U)*Math.sqrt(j*j+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(n-O)/(H-1)),T=Math.min(p,(c-O)/(H+1))}if(null!=x){var I=yi(null==S?[_,w]:[S,k],[y,M],c,T,g),Y=yi([x,b],[_,w],c,T,g);p===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-g^mi(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",y,",",M);if(null!=S){var Z=yi([y,M],[S,k],n,-R,g),V=yi([_,w],null==x?[y,M]:[x,b],n,-R,g);p===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^mi(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",y,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",g," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-g," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hi,r=gi,u=fi,i=ql,a=pi,o=vi,l=di;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=En(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==ql?ql:En(t),n):i},n.startAngle=function(t){return arguments.length?(a=En(t),n):a},n.endAngle=function(t){return arguments.length?(o=En(t),n):o},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+a.apply(this,arguments)+ +o.apply(this,arguments))/2-Oa;return[Math.cos(t)*n,Math.sin(t)*n]},n};var ql="auto";oa.svg.line=function(){return Mi(y)};var Tl=oa.map({linear:xi,"linear-closed":bi,step:_i,"step-before":wi,"step-after":Si,basis:zi,"basis-open":Li,"basis-closed":qi,bundle:Ti,cardinal:Ei,"cardinal-open":ki,"cardinal-closed":Ni,monotone:Fi});Tl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Rl=[0,2/3,1/3,0],Dl=[0,1/3,2/3,0],Pl=[0,1/6,2/3,1/6];oa.svg.line.radial=function(){var n=Mi(Hi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wi.reverse=Si,Si.reverse=wi,oa.svg.area=function(){return Oi(y)},oa.svg.area.radial=function(){var n=Oi(Hi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},oa.svg.chord=function(){function n(n,o){var l=t(this,i,n,o),c=t(this,a,n,o);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?u(l.r,l.p1,l.r,l.p0):u(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+u(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=o.call(n,u,r),a=l.call(n,u,r)-Oa,s=c.call(n,u,r)-Oa;return{r:i,a0:a,a1:s,p0:[i*Math.cos(a),i*Math.sin(a)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>ja)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=Me,a=xe,o=Ii,l=pi,c=vi;return n.radius=function(t){return arguments.length?(o=En(t),n):o},n.source=function(t){return arguments.length?(i=En(t),n):i},n.target=function(t){return arguments.length?(a=En(t),n):a},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},oa.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),a=e.call(this,n,u),o=(i.y+a.y)/2,l=[i,{x:i.x,y:o},{x:a.x,y:o},a];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yi;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},oa.svg.diagonal.radial=function(){var n=oa.svg.diagonal(),t=Yi,e=n.projection;return n.projection=function(n){return arguments.length?e(Zi(t=n)):t},n},oa.svg.symbol=function(){function n(n,r){return(Ul.get(t.call(this,n,r))||$i)(e.call(this,n,r))}var t=Xi,e=Vi;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Ul=oa.map({circle:$i,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Fl)),e=t*Fl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});oa.svg.symbolTypes=Ul.keys();var jl=Math.sqrt(3),Fl=Math.tan(30*Ia);Aa.transition=function(n){for(var t,e,r=Hl||++Zl,u=Ki(n),i=[],a=Ol||{time:Date.now(),ease:Nr,delay:0,duration:250},o=-1,l=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return Wi(u,this.namespace,this.id)},Yl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Yl.attr=function(n,t){function e(){this.removeAttribute(o)}function r(){this.removeAttributeNS(o.space,o.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(o);return e!==n&&(t=a(e,n),function(n){this.setAttribute(o,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(o.space,o.local);return e!==n&&(t=a(e,n),function(n){this.setAttributeNS(o.space,o.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var a="transform"==n?$r:Mr,o=oa.ns.qualify(n);return Ji(this,"attr."+n,t,o.local?i:u)},Yl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=oa.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Yl.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=Mr(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var a=arguments.length;if(3>a){if("string"!=typeof n){2>a&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ji(this,"style."+n,e,i)},Yl.styleTween=function(n,e,r){function u(u,i){var a=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return a&&function(t){this.style.setProperty(n,a(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},Yl.text=function(n){return Ji(this,"text",n,Gi)},Yl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Yl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=oa.ease.apply(oa,arguments)),Y(this,function(r){r[e][t].ease=n}))},Yl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Yl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Yl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Ol,i=Hl;try{Hl=e,Y(this,function(t,u,i){Ol=t[r][e],n.call(t,t.__data__,u,i)})}finally{Ol=u,Hl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=oa.dispatch("start","end","interrupt"))).on(n,t)});return this},Yl.transition=function(){for(var n,t,e,r,u=this.id,i=++Zl,a=this.namespace,o=[],l=0,c=this.length;c>l;l++){o.push(n=[]);for(var t=this[l],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[a][u],Qi(e,s,a,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wi(o,a,i)},oa.svg.axis=function(){function n(n){n.each(function(){var n,c=oa.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==l?f.ticks?f.ticks.apply(f,o):f.domain():l,g=null==t?f.tickFormat?f.tickFormat.apply(f,o):y:t,p=c.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Pa),d=oa.transition(p.exit()).style("opacity",Pa).remove(),m=oa.transition(p.order()).style("opacity",1),M=Math.max(u,0)+a,x=Zu(f),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),oa.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=m.select("line"),C=p.select("text").text(g),z=v.select("text"),L=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=na,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*i+"V0H"+x[1]+"V"+q*i)):(n=ta,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*i+","+x[0]+"H0V"+x[1]+"H"+q*i)),E.attr(N,q*u),z.attr(k,q*M),A.attr(S,0).attr(N,q*u),L.attr(w,0).attr(k,q*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=oa.scale.linear(),r=Vl,u=6,i=6,a=3,o=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Xl?t+"":Vl,n):r},n.ticks=function(){return arguments.length?(o=ca(arguments),n):o},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(a=+t,n):a},n.tickSubdivide=function(){return arguments.length&&n},n};var Vl="bottom",Xl={top:1,right:1,bottom:1,left:1};oa.svg.brush=function(){function n(t){t.each(function(){var t=oa.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),a=t.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var o=t.selectAll(".resize").data(v,y);o.exit().remove(),o.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return $l[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),o.style("display",n.empty()?"none":null);var l,f=oa.transition(t),h=oa.transition(a);c&&(l=Zu(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(f)),s&&(l=Zu(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==oa.event.keyCode&&(C||(M=null,L[0]-=f[1],L[1]-=h[1],C=2),S())}function v(){32==oa.event.keyCode&&2==C&&(L[0]+=f[1],L[1]+=h[1],C=0,S())}function d(){var n=oa.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(oa.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(n[0]s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?o=null:a=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),oa.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=oa.select(oa.event.target),w=l.of(b,arguments),k=oa.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&s,C=_.classed("extent"),z=W(b),L=oa.mouse(b),q=oa.select(t(b)).on("keydown.brush",i).on("keyup.brush",v);if(oa.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",y):q.on("mousemove.brush",d).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[f[1-T]-L[0],h[1-R]-L[1]],L[0]=f[T],L[1]=h[R]}else oa.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),oa.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var a,o,l=N(n,"brushstart","brush","brushend"),c=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=Bl[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:f,y:h,i:a,j:o},e=this.__chart__||t;this.__chart__=t,Hl?oa.select(this).transition().each("start.brush",function(){a=e.i,o=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(f,t.x),r=xr(h,t.y);return a=o=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=Bl[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,v=Bl[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(g=!!t[0],p=!!t[1]):c?g=!!t:s&&(p=!!t),n):c&&s?[g,p]:c?g:s?p:null},n.extent=function(t){var e,r,u,i,l;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),a=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],c&&(u=u[1],i=i[1]),o=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(l=u,u=i,i=l),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(c&&(a?(e=a[0],r=a[1]):(e=f[0],r=f[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),s&&(o?(u=o[0],i=o[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(l=u,u=i,i=l))),c&&s?[[e,u],[r,i]]:c?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],a=o=null),n},n.empty=function(){return!!c&&f[0]==f[1]||!!s&&h[0]==h[1]},oa.rebind(n,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Bl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Wl=go.format=xo.timeFormat,Jl=Wl.utc,Gl=Jl("%Y-%m-%dT%H:%M:%S.%LZ");Wl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ea:Gl,ea.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},ea.toString=Gl.toString,go.second=On(function(n){return new po(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),go.seconds=go.second.range,go.seconds.utc=go.second.utc.range,go.minute=On(function(n){return new po(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),go.minutes=go.minute.range,go.minutes.utc=go.minute.utc.range,go.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new po(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),go.hours=go.hour.range,go.hours.utc=go.hour.utc.range,go.month=On(function(n){return n=go.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),go.months=go.month.range,go.months.utc=go.month.utc.range;var Kl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ql=[[go.second,1],[go.second,5],[go.second,15],[go.second,30],[go.minute,1],[go.minute,5],[go.minute,15],[go.minute,30],[go.hour,1],[go.hour,3],[go.hour,6],[go.hour,12],[go.day,1],[go.day,2],[go.week,1],[go.month,1],[go.month,3],[go.year,1]],nc=Wl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),tc={range:function(n,t,e){return oa.range(Math.ceil(n/e)*e,+t,e).map(ua)},floor:y,ceil:y};Ql.year=go.year,go.scale=function(){return ra(oa.scale.linear(),Ql,nc)};var ec=Ql.map(function(n){return[n[0].utc,n[1]]}),rc=Jl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);ec.year=go.year.utc,go.scale.utc=function(){return ra(oa.scale.linear(),ec,rc)},oa.text=An(function(n){return n.responseText}),oa.json=function(n,t){return Cn(n,"application/json",ia,t)},oa.html=function(n,t){return Cn(n,"text/html",aa,t)},oa.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=oa,define(oa)):"object"==typeof module&&module.exports?module.exports=oa:this.d3=oa}(); \ No newline at end of file diff --git a/fontawesome/HELP-US-OUT.txt b/fontawesome/HELP-US-OUT.txt deleted file mode 100644 index cfd9d9f..0000000 --- a/fontawesome/HELP-US-OUT.txt +++ /dev/null @@ -1,7 +0,0 @@ -I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, -Fonticons (https://fonticons.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, -comprehensive icon sets or copy and paste your own. - -Please. Check it out. - --Dave Gandy diff --git a/fontawesome/less/animated.less b/fontawesome/less/animated.less deleted file mode 100644 index 66ad52a..0000000 --- a/fontawesome/less/animated.less +++ /dev/null @@ -1,34 +0,0 @@ -// Animated Icons -// -------------------------- - -.@{fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.@{fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/fontawesome/less/bordered-pulled.less b/fontawesome/less/bordered-pulled.less deleted file mode 100644 index f1c8ad7..0000000 --- a/fontawesome/less/bordered-pulled.less +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.@{fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em @fa-border-color; - border-radius: .1em; -} - -.@{fa-css-prefix}-pull-left { float: left; } -.@{fa-css-prefix}-pull-right { float: right; } - -.@{fa-css-prefix} { - &.@{fa-css-prefix}-pull-left { margin-right: .3em; } - &.@{fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.@{fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/fontawesome/less/core.less b/fontawesome/less/core.less deleted file mode 100644 index c577ac8..0000000 --- a/fontawesome/less/core.less +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.@{fa-css-prefix} { - display: inline-block; - font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/fontawesome/less/fixed-width.less b/fontawesome/less/fixed-width.less deleted file mode 100644 index 110289f..0000000 --- a/fontawesome/less/fixed-width.less +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.@{fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/fontawesome/less/font-awesome.less b/fontawesome/less/font-awesome.less deleted file mode 100644 index e3f89c8..0000000 --- a/fontawesome/less/font-awesome.less +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables.less"; -@import "mixins.less"; -@import "path.less"; -@import "core.less"; -@import "larger.less"; -@import "fixed-width.less"; -@import "list.less"; -@import "bordered-pulled.less"; -@import "animated.less"; -@import "rotated-flipped.less"; -@import "stacked.less"; -@import "icons.less"; diff --git a/fontawesome/less/icons.less b/fontawesome/less/icons.less deleted file mode 100644 index 6ebe966..0000000 --- a/fontawesome/less/icons.less +++ /dev/null @@ -1,677 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } -.@{fa-css-prefix}-music:before { content: @fa-var-music; } -.@{fa-css-prefix}-search:before { content: @fa-var-search; } -.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } -.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } -.@{fa-css-prefix}-star:before { content: @fa-var-star; } -.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } -.@{fa-css-prefix}-user:before { content: @fa-var-user; } -.@{fa-css-prefix}-film:before { content: @fa-var-film; } -.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } -.@{fa-css-prefix}-th:before { content: @fa-var-th; } -.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } -.@{fa-css-prefix}-check:before { content: @fa-var-check; } -.@{fa-css-prefix}-remove:before, -.@{fa-css-prefix}-close:before, -.@{fa-css-prefix}-times:before { content: @fa-var-times; } -.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } -.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } -.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } -.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } -.@{fa-css-prefix}-gear:before, -.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } -.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } -.@{fa-css-prefix}-home:before { content: @fa-var-home; } -.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } -.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } -.@{fa-css-prefix}-road:before { content: @fa-var-road; } -.@{fa-css-prefix}-download:before { content: @fa-var-download; } -.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } -.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } -.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } -.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } -.@{fa-css-prefix}-rotate-right:before, -.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } -.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } -.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } -.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } -.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } -.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } -.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } -.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } -.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } -.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } -.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } -.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } -.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } -.@{fa-css-prefix}-book:before { content: @fa-var-book; } -.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } -.@{fa-css-prefix}-print:before { content: @fa-var-print; } -.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } -.@{fa-css-prefix}-font:before { content: @fa-var-font; } -.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } -.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } -.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } -.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } -.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } -.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } -.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } -.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } -.@{fa-css-prefix}-list:before { content: @fa-var-list; } -.@{fa-css-prefix}-dedent:before, -.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } -.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } -.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } -.@{fa-css-prefix}-photo:before, -.@{fa-css-prefix}-image:before, -.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } -.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } -.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } -.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } -.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } -.@{fa-css-prefix}-edit:before, -.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } -.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } -.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } -.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } -.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } -.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } -.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } -.@{fa-css-prefix}-play:before { content: @fa-var-play; } -.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } -.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } -.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } -.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } -.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } -.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } -.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } -.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } -.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } -.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } -.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } -.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } -.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } -.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } -.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } -.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } -.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } -.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } -.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } -.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } -.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } -.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } -.@{fa-css-prefix}-mail-forward:before, -.@{fa-css-prefix}-share:before { content: @fa-var-share; } -.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } -.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } -.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } -.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } -.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } -.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } -.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } -.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } -.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } -.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } -.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } -.@{fa-css-prefix}-warning:before, -.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } -.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } -.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } -.@{fa-css-prefix}-random:before { content: @fa-var-random; } -.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } -.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } -.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } -.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } -.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } -.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } -.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } -.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } -.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } -.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } -.@{fa-css-prefix}-bar-chart-o:before, -.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } -.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } -.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } -.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } -.@{fa-css-prefix}-key:before { content: @fa-var-key; } -.@{fa-css-prefix}-gears:before, -.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } -.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } -.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } -.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } -.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } -.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } -.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } -.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } -.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } -.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } -.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } -.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } -.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } -.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } -.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } -.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } -.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } -.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } -.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } -.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } -.@{fa-css-prefix}-facebook-f:before, -.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } -.@{fa-css-prefix}-github:before { content: @fa-var-github; } -.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } -.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } -.@{fa-css-prefix}-feed:before, -.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } -.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } -.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } -.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } -.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } -.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } -.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } -.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } -.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } -.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } -.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } -.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } -.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } -.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } -.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } -.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } -.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } -.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } -.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } -.@{fa-css-prefix}-group:before, -.@{fa-css-prefix}-users:before { content: @fa-var-users; } -.@{fa-css-prefix}-chain:before, -.@{fa-css-prefix}-link:before { content: @fa-var-link; } -.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } -.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } -.@{fa-css-prefix}-cut:before, -.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } -.@{fa-css-prefix}-copy:before, -.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } -.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } -.@{fa-css-prefix}-save:before, -.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } -.@{fa-css-prefix}-square:before { content: @fa-var-square; } -.@{fa-css-prefix}-navicon:before, -.@{fa-css-prefix}-reorder:before, -.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } -.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } -.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } -.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } -.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } -.@{fa-css-prefix}-table:before { content: @fa-var-table; } -.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } -.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } -.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } -.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } -.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } -.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } -.@{fa-css-prefix}-money:before { content: @fa-var-money; } -.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } -.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } -.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } -.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } -.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } -.@{fa-css-prefix}-unsorted:before, -.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } -.@{fa-css-prefix}-sort-down:before, -.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } -.@{fa-css-prefix}-sort-up:before, -.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } -.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } -.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } -.@{fa-css-prefix}-rotate-left:before, -.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } -.@{fa-css-prefix}-legal:before, -.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } -.@{fa-css-prefix}-dashboard:before, -.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } -.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } -.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } -.@{fa-css-prefix}-flash:before, -.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } -.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } -.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } -.@{fa-css-prefix}-paste:before, -.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } -.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } -.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } -.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } -.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } -.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } -.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } -.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } -.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } -.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } -.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } -.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } -.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } -.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } -.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } -.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } -.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } -.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } -.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } -.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } -.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } -.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } -.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } -.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } -.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } -.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } -.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } -.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } -.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } -.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } -.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } -.@{fa-css-prefix}-mobile-phone:before, -.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } -.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } -.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } -.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } -.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } -.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } -.@{fa-css-prefix}-mail-reply:before, -.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } -.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } -.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } -.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } -.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } -.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } -.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } -.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } -.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } -.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } -.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } -.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } -.@{fa-css-prefix}-code:before { content: @fa-var-code; } -.@{fa-css-prefix}-mail-reply-all:before, -.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } -.@{fa-css-prefix}-star-half-empty:before, -.@{fa-css-prefix}-star-half-full:before, -.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } -.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } -.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } -.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } -.@{fa-css-prefix}-unlink:before, -.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } -.@{fa-css-prefix}-question:before { content: @fa-var-question; } -.@{fa-css-prefix}-info:before { content: @fa-var-info; } -.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } -.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } -.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } -.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } -.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } -.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } -.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } -.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } -.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } -.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } -.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } -.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } -.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } -.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } -.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } -.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } -.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } -.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } -.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } -.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } -.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } -.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } -.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } -.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } -.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } -.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } -.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } -.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } -.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } -.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } -.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } -.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } -.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } -.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } -.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } -.@{fa-css-prefix}-toggle-down:before, -.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } -.@{fa-css-prefix}-toggle-up:before, -.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } -.@{fa-css-prefix}-toggle-right:before, -.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } -.@{fa-css-prefix}-euro:before, -.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } -.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } -.@{fa-css-prefix}-dollar:before, -.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } -.@{fa-css-prefix}-rupee:before, -.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } -.@{fa-css-prefix}-cny:before, -.@{fa-css-prefix}-rmb:before, -.@{fa-css-prefix}-yen:before, -.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } -.@{fa-css-prefix}-ruble:before, -.@{fa-css-prefix}-rouble:before, -.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } -.@{fa-css-prefix}-won:before, -.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } -.@{fa-css-prefix}-bitcoin:before, -.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } -.@{fa-css-prefix}-file:before { content: @fa-var-file; } -.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } -.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } -.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } -.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } -.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } -.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } -.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } -.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } -.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } -.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } -.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } -.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } -.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } -.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } -.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } -.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } -.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } -.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } -.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } -.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } -.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } -.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } -.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } -.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } -.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } -.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } -.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } -.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } -.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } -.@{fa-css-prefix}-android:before { content: @fa-var-android; } -.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } -.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } -.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } -.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } -.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } -.@{fa-css-prefix}-female:before { content: @fa-var-female; } -.@{fa-css-prefix}-male:before { content: @fa-var-male; } -.@{fa-css-prefix}-gittip:before, -.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } -.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } -.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } -.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } -.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } -.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } -.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } -.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } -.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } -.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } -.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } -.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } -.@{fa-css-prefix}-toggle-left:before, -.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } -.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } -.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } -.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } -.@{fa-css-prefix}-turkish-lira:before, -.@{fa-css-prefix}-try:before { content: @fa-var-try; } -.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } -.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } -.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } -.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } -.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } -.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } -.@{fa-css-prefix}-institution:before, -.@{fa-css-prefix}-bank:before, -.@{fa-css-prefix}-university:before { content: @fa-var-university; } -.@{fa-css-prefix}-mortar-board:before, -.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } -.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } -.@{fa-css-prefix}-google:before { content: @fa-var-google; } -.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } -.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } -.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } -.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } -.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } -.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } -.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } -.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } -.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } -.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } -.@{fa-css-prefix}-language:before { content: @fa-var-language; } -.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } -.@{fa-css-prefix}-building:before { content: @fa-var-building; } -.@{fa-css-prefix}-child:before { content: @fa-var-child; } -.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } -.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } -.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } -.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } -.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } -.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } -.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } -.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } -.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } -.@{fa-css-prefix}-automobile:before, -.@{fa-css-prefix}-car:before { content: @fa-var-car; } -.@{fa-css-prefix}-cab:before, -.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } -.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } -.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } -.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } -.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } -.@{fa-css-prefix}-database:before { content: @fa-var-database; } -.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } -.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } -.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } -.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } -.@{fa-css-prefix}-file-photo-o:before, -.@{fa-css-prefix}-file-picture-o:before, -.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } -.@{fa-css-prefix}-file-zip-o:before, -.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } -.@{fa-css-prefix}-file-sound-o:before, -.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } -.@{fa-css-prefix}-file-movie-o:before, -.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } -.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } -.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } -.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } -.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } -.@{fa-css-prefix}-life-bouy:before, -.@{fa-css-prefix}-life-buoy:before, -.@{fa-css-prefix}-life-saver:before, -.@{fa-css-prefix}-support:before, -.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } -.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } -.@{fa-css-prefix}-ra:before, -.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } -.@{fa-css-prefix}-ge:before, -.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } -.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } -.@{fa-css-prefix}-git:before { content: @fa-var-git; } -.@{fa-css-prefix}-y-combinator-square:before, -.@{fa-css-prefix}-yc-square:before, -.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } -.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } -.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } -.@{fa-css-prefix}-wechat:before, -.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } -.@{fa-css-prefix}-send:before, -.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } -.@{fa-css-prefix}-send-o:before, -.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } -.@{fa-css-prefix}-history:before { content: @fa-var-history; } -.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } -.@{fa-css-prefix}-header:before { content: @fa-var-header; } -.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } -.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } -.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } -.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } -.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } -.@{fa-css-prefix}-soccer-ball-o:before, -.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } -.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } -.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } -.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } -.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } -.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } -.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } -.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } -.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } -.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } -.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } -.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } -.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } -.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } -.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } -.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } -.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } -.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } -.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } -.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } -.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } -.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } -.@{fa-css-prefix}-at:before { content: @fa-var-at; } -.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } -.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } -.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } -.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } -.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } -.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } -.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } -.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } -.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } -.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } -.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } -.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } -.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } -.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } -.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } -.@{fa-css-prefix}-shekel:before, -.@{fa-css-prefix}-sheqel:before, -.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } -.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } -.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } -.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } -.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } -.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } -.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } -.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } -.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } -.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } -.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } -.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } -.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } -.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } -.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } -.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } -.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } -.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } -.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } -.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } -.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } -.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } -.@{fa-css-prefix}-intersex:before, -.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } -.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } -.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } -.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } -.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } -.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } -.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } -.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } -.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } -.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } -.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } -.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } -.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } -.@{fa-css-prefix}-server:before { content: @fa-var-server; } -.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } -.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } -.@{fa-css-prefix}-hotel:before, -.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } -.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } -.@{fa-css-prefix}-train:before { content: @fa-var-train; } -.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } -.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } -.@{fa-css-prefix}-yc:before, -.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } -.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } -.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } -.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } -.@{fa-css-prefix}-battery-4:before, -.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } -.@{fa-css-prefix}-battery-3:before, -.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } -.@{fa-css-prefix}-battery-2:before, -.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } -.@{fa-css-prefix}-battery-1:before, -.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } -.@{fa-css-prefix}-battery-0:before, -.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } -.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } -.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } -.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } -.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } -.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } -.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } -.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } -.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } -.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } -.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } -.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } -.@{fa-css-prefix}-hourglass-1:before, -.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } -.@{fa-css-prefix}-hourglass-2:before, -.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } -.@{fa-css-prefix}-hourglass-3:before, -.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } -.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } -.@{fa-css-prefix}-hand-grab-o:before, -.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } -.@{fa-css-prefix}-hand-stop-o:before, -.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } -.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } -.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } -.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } -.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } -.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } -.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } -.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } -.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } -.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } -.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } -.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } -.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } -.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } -.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } -.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } -.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } -.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } -.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } -.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } -.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } -.@{fa-css-prefix}-tv:before, -.@{fa-css-prefix}-television:before { content: @fa-var-television; } -.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } -.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } -.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } -.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } -.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } -.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } -.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } -.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } -.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } -.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } -.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } -.@{fa-css-prefix}-map:before { content: @fa-var-map; } -.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } -.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } -.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } -.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } -.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } -.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } diff --git a/fontawesome/less/larger.less b/fontawesome/less/larger.less deleted file mode 100644 index c9d6467..0000000 --- a/fontawesome/less/larger.less +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.@{fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.@{fa-css-prefix}-2x { font-size: 2em; } -.@{fa-css-prefix}-3x { font-size: 3em; } -.@{fa-css-prefix}-4x { font-size: 4em; } -.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/fontawesome/less/list.less b/fontawesome/less/list.less deleted file mode 100644 index 0b44038..0000000 --- a/fontawesome/less/list.less +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.@{fa-css-prefix}-ul { - padding-left: 0; - margin-left: @fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.@{fa-css-prefix}-li { - position: absolute; - left: -@fa-li-width; - width: @fa-li-width; - top: (2em / 14); - text-align: center; - &.@{fa-css-prefix}-lg { - left: (-@fa-li-width + (4em / 14)); - } -} diff --git a/fontawesome/less/mixins.less b/fontawesome/less/mixins.less deleted file mode 100644 index d5a43a1..0000000 --- a/fontawesome/less/mixins.less +++ /dev/null @@ -1,26 +0,0 @@ -// Mixins -// -------------------------- - -.fa-icon() { - display: inline-block; - font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -.fa-icon-rotate(@degrees, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); - transform: rotate(@degrees); -} - -.fa-icon-flip(@horiz, @vert, @rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); - -webkit-transform: scale(@horiz, @vert); - -ms-transform: scale(@horiz, @vert); - transform: scale(@horiz, @vert); -} diff --git a/fontawesome/less/path.less b/fontawesome/less/path.less deleted file mode 100644 index 9211e66..0000000 --- a/fontawesome/less/path.less +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); - src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), - url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), - url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), - url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), - url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); -// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/fontawesome/less/rotated-flipped.less b/fontawesome/less/rotated-flipped.less deleted file mode 100644 index f6ba814..0000000 --- a/fontawesome/less/rotated-flipped.less +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } -.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } -.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } - -.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } -.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .@{fa-css-prefix}-rotate-90, -:root .@{fa-css-prefix}-rotate-180, -:root .@{fa-css-prefix}-rotate-270, -:root .@{fa-css-prefix}-flip-horizontal, -:root .@{fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/fontawesome/less/stacked.less b/fontawesome/less/stacked.less deleted file mode 100644 index fc53fb0..0000000 --- a/fontawesome/less/stacked.less +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.@{fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.@{fa-css-prefix}-stack-1x { line-height: inherit; } -.@{fa-css-prefix}-stack-2x { font-size: 2em; } -.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/fontawesome/less/variables.less b/fontawesome/less/variables.less deleted file mode 100644 index 00418e7..0000000 --- a/fontawesome/less/variables.less +++ /dev/null @@ -1,688 +0,0 @@ -// Variables -// -------------------------- - -@fa-font-path: "../fonts"; -@fa-font-size-base: 14px; -@fa-line-height-base: 1; -//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.4.0/fonts"; // for referencing Bootstrap CDN font files directly -@fa-css-prefix: fa; -@fa-version: "4.4.0"; -@fa-border-color: #eee; -@fa-inverse: #fff; -@fa-li-width: (30em / 14); - -@fa-var-500px: "\f26e"; -@fa-var-adjust: "\f042"; -@fa-var-adn: "\f170"; -@fa-var-align-center: "\f037"; -@fa-var-align-justify: "\f039"; -@fa-var-align-left: "\f036"; -@fa-var-align-right: "\f038"; -@fa-var-amazon: "\f270"; -@fa-var-ambulance: "\f0f9"; -@fa-var-anchor: "\f13d"; -@fa-var-android: "\f17b"; -@fa-var-angellist: "\f209"; -@fa-var-angle-double-down: "\f103"; -@fa-var-angle-double-left: "\f100"; -@fa-var-angle-double-right: "\f101"; -@fa-var-angle-double-up: "\f102"; -@fa-var-angle-down: "\f107"; -@fa-var-angle-left: "\f104"; -@fa-var-angle-right: "\f105"; -@fa-var-angle-up: "\f106"; -@fa-var-apple: "\f179"; -@fa-var-archive: "\f187"; -@fa-var-area-chart: "\f1fe"; -@fa-var-arrow-circle-down: "\f0ab"; -@fa-var-arrow-circle-left: "\f0a8"; -@fa-var-arrow-circle-o-down: "\f01a"; -@fa-var-arrow-circle-o-left: "\f190"; -@fa-var-arrow-circle-o-right: "\f18e"; -@fa-var-arrow-circle-o-up: "\f01b"; -@fa-var-arrow-circle-right: "\f0a9"; -@fa-var-arrow-circle-up: "\f0aa"; -@fa-var-arrow-down: "\f063"; -@fa-var-arrow-left: "\f060"; -@fa-var-arrow-right: "\f061"; -@fa-var-arrow-up: "\f062"; -@fa-var-arrows: "\f047"; -@fa-var-arrows-alt: "\f0b2"; -@fa-var-arrows-h: "\f07e"; -@fa-var-arrows-v: "\f07d"; -@fa-var-asterisk: "\f069"; -@fa-var-at: "\f1fa"; -@fa-var-automobile: "\f1b9"; -@fa-var-backward: "\f04a"; -@fa-var-balance-scale: "\f24e"; -@fa-var-ban: "\f05e"; -@fa-var-bank: "\f19c"; -@fa-var-bar-chart: "\f080"; -@fa-var-bar-chart-o: "\f080"; -@fa-var-barcode: "\f02a"; -@fa-var-bars: "\f0c9"; -@fa-var-battery-0: "\f244"; -@fa-var-battery-1: "\f243"; -@fa-var-battery-2: "\f242"; -@fa-var-battery-3: "\f241"; -@fa-var-battery-4: "\f240"; -@fa-var-battery-empty: "\f244"; -@fa-var-battery-full: "\f240"; -@fa-var-battery-half: "\f242"; -@fa-var-battery-quarter: "\f243"; -@fa-var-battery-three-quarters: "\f241"; -@fa-var-bed: "\f236"; -@fa-var-beer: "\f0fc"; -@fa-var-behance: "\f1b4"; -@fa-var-behance-square: "\f1b5"; -@fa-var-bell: "\f0f3"; -@fa-var-bell-o: "\f0a2"; -@fa-var-bell-slash: "\f1f6"; -@fa-var-bell-slash-o: "\f1f7"; -@fa-var-bicycle: "\f206"; -@fa-var-binoculars: "\f1e5"; -@fa-var-birthday-cake: "\f1fd"; -@fa-var-bitbucket: "\f171"; -@fa-var-bitbucket-square: "\f172"; -@fa-var-bitcoin: "\f15a"; -@fa-var-black-tie: "\f27e"; -@fa-var-bold: "\f032"; -@fa-var-bolt: "\f0e7"; -@fa-var-bomb: "\f1e2"; -@fa-var-book: "\f02d"; -@fa-var-bookmark: "\f02e"; -@fa-var-bookmark-o: "\f097"; -@fa-var-briefcase: "\f0b1"; -@fa-var-btc: "\f15a"; -@fa-var-bug: "\f188"; -@fa-var-building: "\f1ad"; -@fa-var-building-o: "\f0f7"; -@fa-var-bullhorn: "\f0a1"; -@fa-var-bullseye: "\f140"; -@fa-var-bus: "\f207"; -@fa-var-buysellads: "\f20d"; -@fa-var-cab: "\f1ba"; -@fa-var-calculator: "\f1ec"; -@fa-var-calendar: "\f073"; -@fa-var-calendar-check-o: "\f274"; -@fa-var-calendar-minus-o: "\f272"; -@fa-var-calendar-o: "\f133"; -@fa-var-calendar-plus-o: "\f271"; -@fa-var-calendar-times-o: "\f273"; -@fa-var-camera: "\f030"; -@fa-var-camera-retro: "\f083"; -@fa-var-car: "\f1b9"; -@fa-var-caret-down: "\f0d7"; -@fa-var-caret-left: "\f0d9"; -@fa-var-caret-right: "\f0da"; -@fa-var-caret-square-o-down: "\f150"; -@fa-var-caret-square-o-left: "\f191"; -@fa-var-caret-square-o-right: "\f152"; -@fa-var-caret-square-o-up: "\f151"; -@fa-var-caret-up: "\f0d8"; -@fa-var-cart-arrow-down: "\f218"; -@fa-var-cart-plus: "\f217"; -@fa-var-cc: "\f20a"; -@fa-var-cc-amex: "\f1f3"; -@fa-var-cc-diners-club: "\f24c"; -@fa-var-cc-discover: "\f1f2"; -@fa-var-cc-jcb: "\f24b"; -@fa-var-cc-mastercard: "\f1f1"; -@fa-var-cc-paypal: "\f1f4"; -@fa-var-cc-stripe: "\f1f5"; -@fa-var-cc-visa: "\f1f0"; -@fa-var-certificate: "\f0a3"; -@fa-var-chain: "\f0c1"; -@fa-var-chain-broken: "\f127"; -@fa-var-check: "\f00c"; -@fa-var-check-circle: "\f058"; -@fa-var-check-circle-o: "\f05d"; -@fa-var-check-square: "\f14a"; -@fa-var-check-square-o: "\f046"; -@fa-var-chevron-circle-down: "\f13a"; -@fa-var-chevron-circle-left: "\f137"; -@fa-var-chevron-circle-right: "\f138"; -@fa-var-chevron-circle-up: "\f139"; -@fa-var-chevron-down: "\f078"; -@fa-var-chevron-left: "\f053"; -@fa-var-chevron-right: "\f054"; -@fa-var-chevron-up: "\f077"; -@fa-var-child: "\f1ae"; -@fa-var-chrome: "\f268"; -@fa-var-circle: "\f111"; -@fa-var-circle-o: "\f10c"; -@fa-var-circle-o-notch: "\f1ce"; -@fa-var-circle-thin: "\f1db"; -@fa-var-clipboard: "\f0ea"; -@fa-var-clock-o: "\f017"; -@fa-var-clone: "\f24d"; -@fa-var-close: "\f00d"; -@fa-var-cloud: "\f0c2"; -@fa-var-cloud-download: "\f0ed"; -@fa-var-cloud-upload: "\f0ee"; -@fa-var-cny: "\f157"; -@fa-var-code: "\f121"; -@fa-var-code-fork: "\f126"; -@fa-var-codepen: "\f1cb"; -@fa-var-coffee: "\f0f4"; -@fa-var-cog: "\f013"; -@fa-var-cogs: "\f085"; -@fa-var-columns: "\f0db"; -@fa-var-comment: "\f075"; -@fa-var-comment-o: "\f0e5"; -@fa-var-commenting: "\f27a"; -@fa-var-commenting-o: "\f27b"; -@fa-var-comments: "\f086"; -@fa-var-comments-o: "\f0e6"; -@fa-var-compass: "\f14e"; -@fa-var-compress: "\f066"; -@fa-var-connectdevelop: "\f20e"; -@fa-var-contao: "\f26d"; -@fa-var-copy: "\f0c5"; -@fa-var-copyright: "\f1f9"; -@fa-var-creative-commons: "\f25e"; -@fa-var-credit-card: "\f09d"; -@fa-var-crop: "\f125"; -@fa-var-crosshairs: "\f05b"; -@fa-var-css3: "\f13c"; -@fa-var-cube: "\f1b2"; -@fa-var-cubes: "\f1b3"; -@fa-var-cut: "\f0c4"; -@fa-var-cutlery: "\f0f5"; -@fa-var-dashboard: "\f0e4"; -@fa-var-dashcube: "\f210"; -@fa-var-database: "\f1c0"; -@fa-var-dedent: "\f03b"; -@fa-var-delicious: "\f1a5"; -@fa-var-desktop: "\f108"; -@fa-var-deviantart: "\f1bd"; -@fa-var-diamond: "\f219"; -@fa-var-digg: "\f1a6"; -@fa-var-dollar: "\f155"; -@fa-var-dot-circle-o: "\f192"; -@fa-var-download: "\f019"; -@fa-var-dribbble: "\f17d"; -@fa-var-dropbox: "\f16b"; -@fa-var-drupal: "\f1a9"; -@fa-var-edit: "\f044"; -@fa-var-eject: "\f052"; -@fa-var-ellipsis-h: "\f141"; -@fa-var-ellipsis-v: "\f142"; -@fa-var-empire: "\f1d1"; -@fa-var-envelope: "\f0e0"; -@fa-var-envelope-o: "\f003"; -@fa-var-envelope-square: "\f199"; -@fa-var-eraser: "\f12d"; -@fa-var-eur: "\f153"; -@fa-var-euro: "\f153"; -@fa-var-exchange: "\f0ec"; -@fa-var-exclamation: "\f12a"; -@fa-var-exclamation-circle: "\f06a"; -@fa-var-exclamation-triangle: "\f071"; -@fa-var-expand: "\f065"; -@fa-var-expeditedssl: "\f23e"; -@fa-var-external-link: "\f08e"; -@fa-var-external-link-square: "\f14c"; -@fa-var-eye: "\f06e"; -@fa-var-eye-slash: "\f070"; -@fa-var-eyedropper: "\f1fb"; -@fa-var-facebook: "\f09a"; -@fa-var-facebook-f: "\f09a"; -@fa-var-facebook-official: "\f230"; -@fa-var-facebook-square: "\f082"; -@fa-var-fast-backward: "\f049"; -@fa-var-fast-forward: "\f050"; -@fa-var-fax: "\f1ac"; -@fa-var-feed: "\f09e"; -@fa-var-female: "\f182"; -@fa-var-fighter-jet: "\f0fb"; -@fa-var-file: "\f15b"; -@fa-var-file-archive-o: "\f1c6"; -@fa-var-file-audio-o: "\f1c7"; -@fa-var-file-code-o: "\f1c9"; -@fa-var-file-excel-o: "\f1c3"; -@fa-var-file-image-o: "\f1c5"; -@fa-var-file-movie-o: "\f1c8"; -@fa-var-file-o: "\f016"; -@fa-var-file-pdf-o: "\f1c1"; -@fa-var-file-photo-o: "\f1c5"; -@fa-var-file-picture-o: "\f1c5"; -@fa-var-file-powerpoint-o: "\f1c4"; -@fa-var-file-sound-o: "\f1c7"; -@fa-var-file-text: "\f15c"; -@fa-var-file-text-o: "\f0f6"; -@fa-var-file-video-o: "\f1c8"; -@fa-var-file-word-o: "\f1c2"; -@fa-var-file-zip-o: "\f1c6"; -@fa-var-files-o: "\f0c5"; -@fa-var-film: "\f008"; -@fa-var-filter: "\f0b0"; -@fa-var-fire: "\f06d"; -@fa-var-fire-extinguisher: "\f134"; -@fa-var-firefox: "\f269"; -@fa-var-flag: "\f024"; -@fa-var-flag-checkered: "\f11e"; -@fa-var-flag-o: "\f11d"; -@fa-var-flash: "\f0e7"; -@fa-var-flask: "\f0c3"; -@fa-var-flickr: "\f16e"; -@fa-var-floppy-o: "\f0c7"; -@fa-var-folder: "\f07b"; -@fa-var-folder-o: "\f114"; -@fa-var-folder-open: "\f07c"; -@fa-var-folder-open-o: "\f115"; -@fa-var-font: "\f031"; -@fa-var-fonticons: "\f280"; -@fa-var-forumbee: "\f211"; -@fa-var-forward: "\f04e"; -@fa-var-foursquare: "\f180"; -@fa-var-frown-o: "\f119"; -@fa-var-futbol-o: "\f1e3"; -@fa-var-gamepad: "\f11b"; -@fa-var-gavel: "\f0e3"; -@fa-var-gbp: "\f154"; -@fa-var-ge: "\f1d1"; -@fa-var-gear: "\f013"; -@fa-var-gears: "\f085"; -@fa-var-genderless: "\f22d"; -@fa-var-get-pocket: "\f265"; -@fa-var-gg: "\f260"; -@fa-var-gg-circle: "\f261"; -@fa-var-gift: "\f06b"; -@fa-var-git: "\f1d3"; -@fa-var-git-square: "\f1d2"; -@fa-var-github: "\f09b"; -@fa-var-github-alt: "\f113"; -@fa-var-github-square: "\f092"; -@fa-var-gittip: "\f184"; -@fa-var-glass: "\f000"; -@fa-var-globe: "\f0ac"; -@fa-var-google: "\f1a0"; -@fa-var-google-plus: "\f0d5"; -@fa-var-google-plus-square: "\f0d4"; -@fa-var-google-wallet: "\f1ee"; -@fa-var-graduation-cap: "\f19d"; -@fa-var-gratipay: "\f184"; -@fa-var-group: "\f0c0"; -@fa-var-h-square: "\f0fd"; -@fa-var-hacker-news: "\f1d4"; -@fa-var-hand-grab-o: "\f255"; -@fa-var-hand-lizard-o: "\f258"; -@fa-var-hand-o-down: "\f0a7"; -@fa-var-hand-o-left: "\f0a5"; -@fa-var-hand-o-right: "\f0a4"; -@fa-var-hand-o-up: "\f0a6"; -@fa-var-hand-paper-o: "\f256"; -@fa-var-hand-peace-o: "\f25b"; -@fa-var-hand-pointer-o: "\f25a"; -@fa-var-hand-rock-o: "\f255"; -@fa-var-hand-scissors-o: "\f257"; -@fa-var-hand-spock-o: "\f259"; -@fa-var-hand-stop-o: "\f256"; -@fa-var-hdd-o: "\f0a0"; -@fa-var-header: "\f1dc"; -@fa-var-headphones: "\f025"; -@fa-var-heart: "\f004"; -@fa-var-heart-o: "\f08a"; -@fa-var-heartbeat: "\f21e"; -@fa-var-history: "\f1da"; -@fa-var-home: "\f015"; -@fa-var-hospital-o: "\f0f8"; -@fa-var-hotel: "\f236"; -@fa-var-hourglass: "\f254"; -@fa-var-hourglass-1: "\f251"; -@fa-var-hourglass-2: "\f252"; -@fa-var-hourglass-3: "\f253"; -@fa-var-hourglass-end: "\f253"; -@fa-var-hourglass-half: "\f252"; -@fa-var-hourglass-o: "\f250"; -@fa-var-hourglass-start: "\f251"; -@fa-var-houzz: "\f27c"; -@fa-var-html5: "\f13b"; -@fa-var-i-cursor: "\f246"; -@fa-var-ils: "\f20b"; -@fa-var-image: "\f03e"; -@fa-var-inbox: "\f01c"; -@fa-var-indent: "\f03c"; -@fa-var-industry: "\f275"; -@fa-var-info: "\f129"; -@fa-var-info-circle: "\f05a"; -@fa-var-inr: "\f156"; -@fa-var-instagram: "\f16d"; -@fa-var-institution: "\f19c"; -@fa-var-internet-explorer: "\f26b"; -@fa-var-intersex: "\f224"; -@fa-var-ioxhost: "\f208"; -@fa-var-italic: "\f033"; -@fa-var-joomla: "\f1aa"; -@fa-var-jpy: "\f157"; -@fa-var-jsfiddle: "\f1cc"; -@fa-var-key: "\f084"; -@fa-var-keyboard-o: "\f11c"; -@fa-var-krw: "\f159"; -@fa-var-language: "\f1ab"; -@fa-var-laptop: "\f109"; -@fa-var-lastfm: "\f202"; -@fa-var-lastfm-square: "\f203"; -@fa-var-leaf: "\f06c"; -@fa-var-leanpub: "\f212"; -@fa-var-legal: "\f0e3"; -@fa-var-lemon-o: "\f094"; -@fa-var-level-down: "\f149"; -@fa-var-level-up: "\f148"; -@fa-var-life-bouy: "\f1cd"; -@fa-var-life-buoy: "\f1cd"; -@fa-var-life-ring: "\f1cd"; -@fa-var-life-saver: "\f1cd"; -@fa-var-lightbulb-o: "\f0eb"; -@fa-var-line-chart: "\f201"; -@fa-var-link: "\f0c1"; -@fa-var-linkedin: "\f0e1"; -@fa-var-linkedin-square: "\f08c"; -@fa-var-linux: "\f17c"; -@fa-var-list: "\f03a"; -@fa-var-list-alt: "\f022"; -@fa-var-list-ol: "\f0cb"; -@fa-var-list-ul: "\f0ca"; -@fa-var-location-arrow: "\f124"; -@fa-var-lock: "\f023"; -@fa-var-long-arrow-down: "\f175"; -@fa-var-long-arrow-left: "\f177"; -@fa-var-long-arrow-right: "\f178"; -@fa-var-long-arrow-up: "\f176"; -@fa-var-magic: "\f0d0"; -@fa-var-magnet: "\f076"; -@fa-var-mail-forward: "\f064"; -@fa-var-mail-reply: "\f112"; -@fa-var-mail-reply-all: "\f122"; -@fa-var-male: "\f183"; -@fa-var-map: "\f279"; -@fa-var-map-marker: "\f041"; -@fa-var-map-o: "\f278"; -@fa-var-map-pin: "\f276"; -@fa-var-map-signs: "\f277"; -@fa-var-mars: "\f222"; -@fa-var-mars-double: "\f227"; -@fa-var-mars-stroke: "\f229"; -@fa-var-mars-stroke-h: "\f22b"; -@fa-var-mars-stroke-v: "\f22a"; -@fa-var-maxcdn: "\f136"; -@fa-var-meanpath: "\f20c"; -@fa-var-medium: "\f23a"; -@fa-var-medkit: "\f0fa"; -@fa-var-meh-o: "\f11a"; -@fa-var-mercury: "\f223"; -@fa-var-microphone: "\f130"; -@fa-var-microphone-slash: "\f131"; -@fa-var-minus: "\f068"; -@fa-var-minus-circle: "\f056"; -@fa-var-minus-square: "\f146"; -@fa-var-minus-square-o: "\f147"; -@fa-var-mobile: "\f10b"; -@fa-var-mobile-phone: "\f10b"; -@fa-var-money: "\f0d6"; -@fa-var-moon-o: "\f186"; -@fa-var-mortar-board: "\f19d"; -@fa-var-motorcycle: "\f21c"; -@fa-var-mouse-pointer: "\f245"; -@fa-var-music: "\f001"; -@fa-var-navicon: "\f0c9"; -@fa-var-neuter: "\f22c"; -@fa-var-newspaper-o: "\f1ea"; -@fa-var-object-group: "\f247"; -@fa-var-object-ungroup: "\f248"; -@fa-var-odnoklassniki: "\f263"; -@fa-var-odnoklassniki-square: "\f264"; -@fa-var-opencart: "\f23d"; -@fa-var-openid: "\f19b"; -@fa-var-opera: "\f26a"; -@fa-var-optin-monster: "\f23c"; -@fa-var-outdent: "\f03b"; -@fa-var-pagelines: "\f18c"; -@fa-var-paint-brush: "\f1fc"; -@fa-var-paper-plane: "\f1d8"; -@fa-var-paper-plane-o: "\f1d9"; -@fa-var-paperclip: "\f0c6"; -@fa-var-paragraph: "\f1dd"; -@fa-var-paste: "\f0ea"; -@fa-var-pause: "\f04c"; -@fa-var-paw: "\f1b0"; -@fa-var-paypal: "\f1ed"; -@fa-var-pencil: "\f040"; -@fa-var-pencil-square: "\f14b"; -@fa-var-pencil-square-o: "\f044"; -@fa-var-phone: "\f095"; -@fa-var-phone-square: "\f098"; -@fa-var-photo: "\f03e"; -@fa-var-picture-o: "\f03e"; -@fa-var-pie-chart: "\f200"; -@fa-var-pied-piper: "\f1a7"; -@fa-var-pied-piper-alt: "\f1a8"; -@fa-var-pinterest: "\f0d2"; -@fa-var-pinterest-p: "\f231"; -@fa-var-pinterest-square: "\f0d3"; -@fa-var-plane: "\f072"; -@fa-var-play: "\f04b"; -@fa-var-play-circle: "\f144"; -@fa-var-play-circle-o: "\f01d"; -@fa-var-plug: "\f1e6"; -@fa-var-plus: "\f067"; -@fa-var-plus-circle: "\f055"; -@fa-var-plus-square: "\f0fe"; -@fa-var-plus-square-o: "\f196"; -@fa-var-power-off: "\f011"; -@fa-var-print: "\f02f"; -@fa-var-puzzle-piece: "\f12e"; -@fa-var-qq: "\f1d6"; -@fa-var-qrcode: "\f029"; -@fa-var-question: "\f128"; -@fa-var-question-circle: "\f059"; -@fa-var-quote-left: "\f10d"; -@fa-var-quote-right: "\f10e"; -@fa-var-ra: "\f1d0"; -@fa-var-random: "\f074"; -@fa-var-rebel: "\f1d0"; -@fa-var-recycle: "\f1b8"; -@fa-var-reddit: "\f1a1"; -@fa-var-reddit-square: "\f1a2"; -@fa-var-refresh: "\f021"; -@fa-var-registered: "\f25d"; -@fa-var-remove: "\f00d"; -@fa-var-renren: "\f18b"; -@fa-var-reorder: "\f0c9"; -@fa-var-repeat: "\f01e"; -@fa-var-reply: "\f112"; -@fa-var-reply-all: "\f122"; -@fa-var-retweet: "\f079"; -@fa-var-rmb: "\f157"; -@fa-var-road: "\f018"; -@fa-var-rocket: "\f135"; -@fa-var-rotate-left: "\f0e2"; -@fa-var-rotate-right: "\f01e"; -@fa-var-rouble: "\f158"; -@fa-var-rss: "\f09e"; -@fa-var-rss-square: "\f143"; -@fa-var-rub: "\f158"; -@fa-var-ruble: "\f158"; -@fa-var-rupee: "\f156"; -@fa-var-safari: "\f267"; -@fa-var-save: "\f0c7"; -@fa-var-scissors: "\f0c4"; -@fa-var-search: "\f002"; -@fa-var-search-minus: "\f010"; -@fa-var-search-plus: "\f00e"; -@fa-var-sellsy: "\f213"; -@fa-var-send: "\f1d8"; -@fa-var-send-o: "\f1d9"; -@fa-var-server: "\f233"; -@fa-var-share: "\f064"; -@fa-var-share-alt: "\f1e0"; -@fa-var-share-alt-square: "\f1e1"; -@fa-var-share-square: "\f14d"; -@fa-var-share-square-o: "\f045"; -@fa-var-shekel: "\f20b"; -@fa-var-sheqel: "\f20b"; -@fa-var-shield: "\f132"; -@fa-var-ship: "\f21a"; -@fa-var-shirtsinbulk: "\f214"; -@fa-var-shopping-cart: "\f07a"; -@fa-var-sign-in: "\f090"; -@fa-var-sign-out: "\f08b"; -@fa-var-signal: "\f012"; -@fa-var-simplybuilt: "\f215"; -@fa-var-sitemap: "\f0e8"; -@fa-var-skyatlas: "\f216"; -@fa-var-skype: "\f17e"; -@fa-var-slack: "\f198"; -@fa-var-sliders: "\f1de"; -@fa-var-slideshare: "\f1e7"; -@fa-var-smile-o: "\f118"; -@fa-var-soccer-ball-o: "\f1e3"; -@fa-var-sort: "\f0dc"; -@fa-var-sort-alpha-asc: "\f15d"; -@fa-var-sort-alpha-desc: "\f15e"; -@fa-var-sort-amount-asc: "\f160"; -@fa-var-sort-amount-desc: "\f161"; -@fa-var-sort-asc: "\f0de"; -@fa-var-sort-desc: "\f0dd"; -@fa-var-sort-down: "\f0dd"; -@fa-var-sort-numeric-asc: "\f162"; -@fa-var-sort-numeric-desc: "\f163"; -@fa-var-sort-up: "\f0de"; -@fa-var-soundcloud: "\f1be"; -@fa-var-space-shuttle: "\f197"; -@fa-var-spinner: "\f110"; -@fa-var-spoon: "\f1b1"; -@fa-var-spotify: "\f1bc"; -@fa-var-square: "\f0c8"; -@fa-var-square-o: "\f096"; -@fa-var-stack-exchange: "\f18d"; -@fa-var-stack-overflow: "\f16c"; -@fa-var-star: "\f005"; -@fa-var-star-half: "\f089"; -@fa-var-star-half-empty: "\f123"; -@fa-var-star-half-full: "\f123"; -@fa-var-star-half-o: "\f123"; -@fa-var-star-o: "\f006"; -@fa-var-steam: "\f1b6"; -@fa-var-steam-square: "\f1b7"; -@fa-var-step-backward: "\f048"; -@fa-var-step-forward: "\f051"; -@fa-var-stethoscope: "\f0f1"; -@fa-var-sticky-note: "\f249"; -@fa-var-sticky-note-o: "\f24a"; -@fa-var-stop: "\f04d"; -@fa-var-street-view: "\f21d"; -@fa-var-strikethrough: "\f0cc"; -@fa-var-stumbleupon: "\f1a4"; -@fa-var-stumbleupon-circle: "\f1a3"; -@fa-var-subscript: "\f12c"; -@fa-var-subway: "\f239"; -@fa-var-suitcase: "\f0f2"; -@fa-var-sun-o: "\f185"; -@fa-var-superscript: "\f12b"; -@fa-var-support: "\f1cd"; -@fa-var-table: "\f0ce"; -@fa-var-tablet: "\f10a"; -@fa-var-tachometer: "\f0e4"; -@fa-var-tag: "\f02b"; -@fa-var-tags: "\f02c"; -@fa-var-tasks: "\f0ae"; -@fa-var-taxi: "\f1ba"; -@fa-var-television: "\f26c"; -@fa-var-tencent-weibo: "\f1d5"; -@fa-var-terminal: "\f120"; -@fa-var-text-height: "\f034"; -@fa-var-text-width: "\f035"; -@fa-var-th: "\f00a"; -@fa-var-th-large: "\f009"; -@fa-var-th-list: "\f00b"; -@fa-var-thumb-tack: "\f08d"; -@fa-var-thumbs-down: "\f165"; -@fa-var-thumbs-o-down: "\f088"; -@fa-var-thumbs-o-up: "\f087"; -@fa-var-thumbs-up: "\f164"; -@fa-var-ticket: "\f145"; -@fa-var-times: "\f00d"; -@fa-var-times-circle: "\f057"; -@fa-var-times-circle-o: "\f05c"; -@fa-var-tint: "\f043"; -@fa-var-toggle-down: "\f150"; -@fa-var-toggle-left: "\f191"; -@fa-var-toggle-off: "\f204"; -@fa-var-toggle-on: "\f205"; -@fa-var-toggle-right: "\f152"; -@fa-var-toggle-up: "\f151"; -@fa-var-trademark: "\f25c"; -@fa-var-train: "\f238"; -@fa-var-transgender: "\f224"; -@fa-var-transgender-alt: "\f225"; -@fa-var-trash: "\f1f8"; -@fa-var-trash-o: "\f014"; -@fa-var-tree: "\f1bb"; -@fa-var-trello: "\f181"; -@fa-var-tripadvisor: "\f262"; -@fa-var-trophy: "\f091"; -@fa-var-truck: "\f0d1"; -@fa-var-try: "\f195"; -@fa-var-tty: "\f1e4"; -@fa-var-tumblr: "\f173"; -@fa-var-tumblr-square: "\f174"; -@fa-var-turkish-lira: "\f195"; -@fa-var-tv: "\f26c"; -@fa-var-twitch: "\f1e8"; -@fa-var-twitter: "\f099"; -@fa-var-twitter-square: "\f081"; -@fa-var-umbrella: "\f0e9"; -@fa-var-underline: "\f0cd"; -@fa-var-undo: "\f0e2"; -@fa-var-university: "\f19c"; -@fa-var-unlink: "\f127"; -@fa-var-unlock: "\f09c"; -@fa-var-unlock-alt: "\f13e"; -@fa-var-unsorted: "\f0dc"; -@fa-var-upload: "\f093"; -@fa-var-usd: "\f155"; -@fa-var-user: "\f007"; -@fa-var-user-md: "\f0f0"; -@fa-var-user-plus: "\f234"; -@fa-var-user-secret: "\f21b"; -@fa-var-user-times: "\f235"; -@fa-var-users: "\f0c0"; -@fa-var-venus: "\f221"; -@fa-var-venus-double: "\f226"; -@fa-var-venus-mars: "\f228"; -@fa-var-viacoin: "\f237"; -@fa-var-video-camera: "\f03d"; -@fa-var-vimeo: "\f27d"; -@fa-var-vimeo-square: "\f194"; -@fa-var-vine: "\f1ca"; -@fa-var-vk: "\f189"; -@fa-var-volume-down: "\f027"; -@fa-var-volume-off: "\f026"; -@fa-var-volume-up: "\f028"; -@fa-var-warning: "\f071"; -@fa-var-wechat: "\f1d7"; -@fa-var-weibo: "\f18a"; -@fa-var-weixin: "\f1d7"; -@fa-var-whatsapp: "\f232"; -@fa-var-wheelchair: "\f193"; -@fa-var-wifi: "\f1eb"; -@fa-var-wikipedia-w: "\f266"; -@fa-var-windows: "\f17a"; -@fa-var-won: "\f159"; -@fa-var-wordpress: "\f19a"; -@fa-var-wrench: "\f0ad"; -@fa-var-xing: "\f168"; -@fa-var-xing-square: "\f169"; -@fa-var-y-combinator: "\f23b"; -@fa-var-y-combinator-square: "\f1d4"; -@fa-var-yahoo: "\f19e"; -@fa-var-yc: "\f23b"; -@fa-var-yc-square: "\f1d4"; -@fa-var-yelp: "\f1e9"; -@fa-var-yen: "\f157"; -@fa-var-youtube: "\f167"; -@fa-var-youtube-play: "\f16a"; -@fa-var-youtube-square: "\f166"; - diff --git a/fontawesome/scss/_animated.scss b/fontawesome/scss/_animated.scss deleted file mode 100644 index 8a020db..0000000 --- a/fontawesome/scss/_animated.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.#{$fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/fontawesome/scss/_bordered-pulled.scss b/fontawesome/scss/_bordered-pulled.scss deleted file mode 100644 index d4b85a0..0000000 --- a/fontawesome/scss/_bordered-pulled.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.#{$fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em $fa-border-color; - border-radius: .1em; -} - -.#{$fa-css-prefix}-pull-left { float: left; } -.#{$fa-css-prefix}-pull-right { float: right; } - -.#{$fa-css-prefix} { - &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } - &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.#{$fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/fontawesome/scss/_core.scss b/fontawesome/scss/_core.scss deleted file mode 100644 index 7425ef8..0000000 --- a/fontawesome/scss/_core.scss +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.#{$fa-css-prefix} { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/fontawesome/scss/_fixed-width.scss b/fontawesome/scss/_fixed-width.scss deleted file mode 100644 index b221c98..0000000 --- a/fontawesome/scss/_fixed-width.scss +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.#{$fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/fontawesome/scss/_icons.scss b/fontawesome/scss/_icons.scss deleted file mode 100644 index 62d9767..0000000 --- a/fontawesome/scss/_icons.scss +++ /dev/null @@ -1,677 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } -.#{$fa-css-prefix}-music:before { content: $fa-var-music; } -.#{$fa-css-prefix}-search:before { content: $fa-var-search; } -.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } -.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } -.#{$fa-css-prefix}-star:before { content: $fa-var-star; } -.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } -.#{$fa-css-prefix}-user:before { content: $fa-var-user; } -.#{$fa-css-prefix}-film:before { content: $fa-var-film; } -.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } -.#{$fa-css-prefix}-th:before { content: $fa-var-th; } -.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } -.#{$fa-css-prefix}-check:before { content: $fa-var-check; } -.#{$fa-css-prefix}-remove:before, -.#{$fa-css-prefix}-close:before, -.#{$fa-css-prefix}-times:before { content: $fa-var-times; } -.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } -.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } -.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } -.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } -.#{$fa-css-prefix}-gear:before, -.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } -.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } -.#{$fa-css-prefix}-home:before { content: $fa-var-home; } -.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } -.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } -.#{$fa-css-prefix}-road:before { content: $fa-var-road; } -.#{$fa-css-prefix}-download:before { content: $fa-var-download; } -.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } -.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } -.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } -.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } -.#{$fa-css-prefix}-rotate-right:before, -.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } -.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } -.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } -.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } -.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } -.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } -.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } -.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } -.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } -.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } -.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } -.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } -.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } -.#{$fa-css-prefix}-book:before { content: $fa-var-book; } -.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } -.#{$fa-css-prefix}-print:before { content: $fa-var-print; } -.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } -.#{$fa-css-prefix}-font:before { content: $fa-var-font; } -.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } -.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } -.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } -.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } -.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } -.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } -.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } -.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } -.#{$fa-css-prefix}-list:before { content: $fa-var-list; } -.#{$fa-css-prefix}-dedent:before, -.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } -.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } -.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } -.#{$fa-css-prefix}-photo:before, -.#{$fa-css-prefix}-image:before, -.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } -.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } -.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } -.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } -.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } -.#{$fa-css-prefix}-edit:before, -.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } -.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } -.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } -.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } -.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } -.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } -.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } -.#{$fa-css-prefix}-play:before { content: $fa-var-play; } -.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } -.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } -.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } -.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } -.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } -.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } -.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } -.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } -.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } -.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } -.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } -.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } -.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } -.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } -.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } -.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } -.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } -.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } -.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } -.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } -.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } -.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } -.#{$fa-css-prefix}-mail-forward:before, -.#{$fa-css-prefix}-share:before { content: $fa-var-share; } -.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } -.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } -.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } -.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } -.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } -.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } -.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } -.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } -.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } -.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } -.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } -.#{$fa-css-prefix}-warning:before, -.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } -.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } -.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } -.#{$fa-css-prefix}-random:before { content: $fa-var-random; } -.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } -.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } -.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } -.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } -.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } -.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } -.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } -.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } -.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } -.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } -.#{$fa-css-prefix}-bar-chart-o:before, -.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } -.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } -.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } -.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } -.#{$fa-css-prefix}-key:before { content: $fa-var-key; } -.#{$fa-css-prefix}-gears:before, -.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } -.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } -.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } -.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } -.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } -.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } -.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } -.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } -.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } -.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } -.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } -.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } -.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } -.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } -.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } -.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } -.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } -.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } -.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } -.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } -.#{$fa-css-prefix}-facebook-f:before, -.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } -.#{$fa-css-prefix}-github:before { content: $fa-var-github; } -.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } -.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } -.#{$fa-css-prefix}-feed:before, -.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } -.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } -.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } -.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } -.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } -.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } -.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } -.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } -.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } -.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } -.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } -.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } -.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } -.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } -.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } -.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } -.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } -.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } -.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } -.#{$fa-css-prefix}-group:before, -.#{$fa-css-prefix}-users:before { content: $fa-var-users; } -.#{$fa-css-prefix}-chain:before, -.#{$fa-css-prefix}-link:before { content: $fa-var-link; } -.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } -.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } -.#{$fa-css-prefix}-cut:before, -.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } -.#{$fa-css-prefix}-copy:before, -.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } -.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } -.#{$fa-css-prefix}-save:before, -.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } -.#{$fa-css-prefix}-square:before { content: $fa-var-square; } -.#{$fa-css-prefix}-navicon:before, -.#{$fa-css-prefix}-reorder:before, -.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } -.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } -.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } -.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } -.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } -.#{$fa-css-prefix}-table:before { content: $fa-var-table; } -.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } -.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } -.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } -.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } -.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } -.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } -.#{$fa-css-prefix}-money:before { content: $fa-var-money; } -.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } -.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } -.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } -.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } -.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } -.#{$fa-css-prefix}-unsorted:before, -.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } -.#{$fa-css-prefix}-sort-down:before, -.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } -.#{$fa-css-prefix}-sort-up:before, -.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } -.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } -.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } -.#{$fa-css-prefix}-rotate-left:before, -.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } -.#{$fa-css-prefix}-legal:before, -.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } -.#{$fa-css-prefix}-dashboard:before, -.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } -.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } -.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } -.#{$fa-css-prefix}-flash:before, -.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } -.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } -.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } -.#{$fa-css-prefix}-paste:before, -.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } -.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } -.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } -.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } -.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } -.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } -.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } -.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } -.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } -.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } -.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } -.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } -.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } -.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } -.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } -.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } -.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } -.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } -.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } -.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } -.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } -.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } -.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } -.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } -.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } -.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } -.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } -.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } -.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } -.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } -.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } -.#{$fa-css-prefix}-mobile-phone:before, -.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } -.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } -.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } -.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } -.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } -.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } -.#{$fa-css-prefix}-mail-reply:before, -.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } -.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } -.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } -.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } -.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } -.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } -.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } -.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } -.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } -.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } -.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } -.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } -.#{$fa-css-prefix}-code:before { content: $fa-var-code; } -.#{$fa-css-prefix}-mail-reply-all:before, -.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } -.#{$fa-css-prefix}-star-half-empty:before, -.#{$fa-css-prefix}-star-half-full:before, -.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } -.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } -.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } -.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } -.#{$fa-css-prefix}-unlink:before, -.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } -.#{$fa-css-prefix}-question:before { content: $fa-var-question; } -.#{$fa-css-prefix}-info:before { content: $fa-var-info; } -.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } -.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } -.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } -.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } -.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } -.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } -.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } -.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } -.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } -.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } -.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } -.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } -.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } -.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } -.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } -.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } -.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } -.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } -.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } -.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } -.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } -.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } -.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } -.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } -.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } -.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } -.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } -.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } -.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } -.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } -.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } -.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } -.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } -.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } -.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } -.#{$fa-css-prefix}-toggle-down:before, -.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } -.#{$fa-css-prefix}-toggle-up:before, -.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } -.#{$fa-css-prefix}-toggle-right:before, -.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } -.#{$fa-css-prefix}-euro:before, -.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } -.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } -.#{$fa-css-prefix}-dollar:before, -.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } -.#{$fa-css-prefix}-rupee:before, -.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } -.#{$fa-css-prefix}-cny:before, -.#{$fa-css-prefix}-rmb:before, -.#{$fa-css-prefix}-yen:before, -.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } -.#{$fa-css-prefix}-ruble:before, -.#{$fa-css-prefix}-rouble:before, -.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } -.#{$fa-css-prefix}-won:before, -.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } -.#{$fa-css-prefix}-bitcoin:before, -.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } -.#{$fa-css-prefix}-file:before { content: $fa-var-file; } -.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } -.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } -.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } -.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } -.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } -.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } -.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } -.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } -.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } -.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } -.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } -.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } -.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } -.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } -.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } -.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } -.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } -.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } -.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } -.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } -.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } -.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } -.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } -.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } -.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } -.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } -.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } -.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } -.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } -.#{$fa-css-prefix}-android:before { content: $fa-var-android; } -.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } -.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } -.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } -.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } -.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } -.#{$fa-css-prefix}-female:before { content: $fa-var-female; } -.#{$fa-css-prefix}-male:before { content: $fa-var-male; } -.#{$fa-css-prefix}-gittip:before, -.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } -.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } -.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } -.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } -.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } -.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } -.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } -.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } -.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } -.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } -.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } -.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } -.#{$fa-css-prefix}-toggle-left:before, -.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } -.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } -.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } -.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } -.#{$fa-css-prefix}-turkish-lira:before, -.#{$fa-css-prefix}-try:before { content: $fa-var-try; } -.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } -.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } -.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } -.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } -.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } -.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } -.#{$fa-css-prefix}-institution:before, -.#{$fa-css-prefix}-bank:before, -.#{$fa-css-prefix}-university:before { content: $fa-var-university; } -.#{$fa-css-prefix}-mortar-board:before, -.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } -.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } -.#{$fa-css-prefix}-google:before { content: $fa-var-google; } -.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } -.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } -.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } -.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } -.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } -.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } -.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } -.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } -.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } -.#{$fa-css-prefix}-language:before { content: $fa-var-language; } -.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } -.#{$fa-css-prefix}-building:before { content: $fa-var-building; } -.#{$fa-css-prefix}-child:before { content: $fa-var-child; } -.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } -.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } -.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } -.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } -.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } -.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } -.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } -.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } -.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } -.#{$fa-css-prefix}-automobile:before, -.#{$fa-css-prefix}-car:before { content: $fa-var-car; } -.#{$fa-css-prefix}-cab:before, -.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } -.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } -.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } -.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } -.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } -.#{$fa-css-prefix}-database:before { content: $fa-var-database; } -.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } -.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } -.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } -.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } -.#{$fa-css-prefix}-file-photo-o:before, -.#{$fa-css-prefix}-file-picture-o:before, -.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } -.#{$fa-css-prefix}-file-zip-o:before, -.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } -.#{$fa-css-prefix}-file-sound-o:before, -.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } -.#{$fa-css-prefix}-file-movie-o:before, -.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } -.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } -.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } -.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } -.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } -.#{$fa-css-prefix}-life-bouy:before, -.#{$fa-css-prefix}-life-buoy:before, -.#{$fa-css-prefix}-life-saver:before, -.#{$fa-css-prefix}-support:before, -.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } -.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } -.#{$fa-css-prefix}-ra:before, -.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } -.#{$fa-css-prefix}-ge:before, -.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } -.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } -.#{$fa-css-prefix}-git:before { content: $fa-var-git; } -.#{$fa-css-prefix}-y-combinator-square:before, -.#{$fa-css-prefix}-yc-square:before, -.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } -.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } -.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } -.#{$fa-css-prefix}-wechat:before, -.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } -.#{$fa-css-prefix}-send:before, -.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } -.#{$fa-css-prefix}-send-o:before, -.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } -.#{$fa-css-prefix}-history:before { content: $fa-var-history; } -.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } -.#{$fa-css-prefix}-header:before { content: $fa-var-header; } -.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } -.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } -.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } -.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } -.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } -.#{$fa-css-prefix}-soccer-ball-o:before, -.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } -.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } -.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } -.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } -.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } -.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } -.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } -.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } -.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } -.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } -.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } -.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } -.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } -.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } -.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } -.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } -.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } -.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } -.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } -.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } -.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } -.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } -.#{$fa-css-prefix}-at:before { content: $fa-var-at; } -.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } -.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } -.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } -.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } -.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } -.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } -.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } -.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } -.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } -.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } -.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } -.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } -.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } -.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } -.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } -.#{$fa-css-prefix}-shekel:before, -.#{$fa-css-prefix}-sheqel:before, -.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } -.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } -.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } -.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } -.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } -.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } -.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } -.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } -.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } -.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } -.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } -.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } -.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } -.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } -.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } -.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } -.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } -.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } -.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } -.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } -.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } -.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } -.#{$fa-css-prefix}-intersex:before, -.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } -.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } -.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } -.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } -.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } -.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } -.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } -.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } -.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } -.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } -.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } -.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } -.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } -.#{$fa-css-prefix}-server:before { content: $fa-var-server; } -.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } -.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } -.#{$fa-css-prefix}-hotel:before, -.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } -.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } -.#{$fa-css-prefix}-train:before { content: $fa-var-train; } -.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } -.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } -.#{$fa-css-prefix}-yc:before, -.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } -.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } -.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } -.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } -.#{$fa-css-prefix}-battery-4:before, -.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } -.#{$fa-css-prefix}-battery-3:before, -.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } -.#{$fa-css-prefix}-battery-2:before, -.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } -.#{$fa-css-prefix}-battery-1:before, -.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } -.#{$fa-css-prefix}-battery-0:before, -.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } -.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } -.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } -.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } -.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } -.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } -.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } -.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } -.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } -.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } -.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } -.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } -.#{$fa-css-prefix}-hourglass-1:before, -.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } -.#{$fa-css-prefix}-hourglass-2:before, -.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } -.#{$fa-css-prefix}-hourglass-3:before, -.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } -.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } -.#{$fa-css-prefix}-hand-grab-o:before, -.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } -.#{$fa-css-prefix}-hand-stop-o:before, -.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } -.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } -.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } -.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } -.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } -.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } -.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } -.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } -.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } -.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } -.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } -.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } -.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } -.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } -.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } -.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } -.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } -.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } -.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } -.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } -.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } -.#{$fa-css-prefix}-tv:before, -.#{$fa-css-prefix}-television:before { content: $fa-var-television; } -.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } -.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } -.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } -.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } -.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } -.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } -.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } -.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } -.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } -.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } -.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } -.#{$fa-css-prefix}-map:before { content: $fa-var-map; } -.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } -.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } -.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } -.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } -.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } -.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } diff --git a/fontawesome/scss/_larger.scss b/fontawesome/scss/_larger.scss deleted file mode 100644 index 41e9a81..0000000 --- a/fontawesome/scss/_larger.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.#{$fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.#{$fa-css-prefix}-2x { font-size: 2em; } -.#{$fa-css-prefix}-3x { font-size: 3em; } -.#{$fa-css-prefix}-4x { font-size: 4em; } -.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/fontawesome/scss/_list.scss b/fontawesome/scss/_list.scss deleted file mode 100644 index 7d1e4d5..0000000 --- a/fontawesome/scss/_list.scss +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.#{$fa-css-prefix}-ul { - padding-left: 0; - margin-left: $fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.#{$fa-css-prefix}-li { - position: absolute; - left: -$fa-li-width; - width: $fa-li-width; - top: (2em / 14); - text-align: center; - &.#{$fa-css-prefix}-lg { - left: -$fa-li-width + (4em / 14); - } -} diff --git a/fontawesome/scss/_mixins.scss b/fontawesome/scss/_mixins.scss deleted file mode 100644 index f96719b..0000000 --- a/fontawesome/scss/_mixins.scss +++ /dev/null @@ -1,26 +0,0 @@ -// Mixins -// -------------------------- - -@mixin fa-icon() { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -@mixin fa-icon-rotate($degrees, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -@mixin fa-icon-flip($horiz, $vert, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: scale($horiz, $vert); - -ms-transform: scale($horiz, $vert); - transform: scale($horiz, $vert); -} diff --git a/fontawesome/scss/_path.scss b/fontawesome/scss/_path.scss deleted file mode 100644 index bb457c2..0000000 --- a/fontawesome/scss/_path.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); - src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), - url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), - url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), - url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), - url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); -// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/fontawesome/scss/_rotated-flipped.scss b/fontawesome/scss/_rotated-flipped.scss deleted file mode 100644 index a3558fd..0000000 --- a/fontawesome/scss/_rotated-flipped.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } -.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } -.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } - -.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } -.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .#{$fa-css-prefix}-rotate-90, -:root .#{$fa-css-prefix}-rotate-180, -:root .#{$fa-css-prefix}-rotate-270, -:root .#{$fa-css-prefix}-flip-horizontal, -:root .#{$fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/fontawesome/scss/_stacked.scss b/fontawesome/scss/_stacked.scss deleted file mode 100644 index aef7403..0000000 --- a/fontawesome/scss/_stacked.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.#{$fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.#{$fa-css-prefix}-stack-1x { line-height: inherit; } -.#{$fa-css-prefix}-stack-2x { font-size: 2em; } -.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/fontawesome/scss/_variables.scss b/fontawesome/scss/_variables.scss deleted file mode 100644 index c10cd47..0000000 --- a/fontawesome/scss/_variables.scss +++ /dev/null @@ -1,688 +0,0 @@ -// Variables -// -------------------------- - -$fa-font-path: "../fonts" !default; -$fa-font-size-base: 14px !default; -$fa-line-height-base: 1 !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.4.0/fonts" !default; // for referencing Bootstrap CDN font files directly -$fa-css-prefix: fa !default; -$fa-version: "4.4.0" !default; -$fa-border-color: #eee !default; -$fa-inverse: #fff !default; -$fa-li-width: (30em / 14) !default; - -$fa-var-500px: "\f26e"; -$fa-var-adjust: "\f042"; -$fa-var-adn: "\f170"; -$fa-var-align-center: "\f037"; -$fa-var-align-justify: "\f039"; -$fa-var-align-left: "\f036"; -$fa-var-align-right: "\f038"; -$fa-var-amazon: "\f270"; -$fa-var-ambulance: "\f0f9"; -$fa-var-anchor: "\f13d"; -$fa-var-android: "\f17b"; -$fa-var-angellist: "\f209"; -$fa-var-angle-double-down: "\f103"; -$fa-var-angle-double-left: "\f100"; -$fa-var-angle-double-right: "\f101"; -$fa-var-angle-double-up: "\f102"; -$fa-var-angle-down: "\f107"; -$fa-var-angle-left: "\f104"; -$fa-var-angle-right: "\f105"; -$fa-var-angle-up: "\f106"; -$fa-var-apple: "\f179"; -$fa-var-archive: "\f187"; -$fa-var-area-chart: "\f1fe"; -$fa-var-arrow-circle-down: "\f0ab"; -$fa-var-arrow-circle-left: "\f0a8"; -$fa-var-arrow-circle-o-down: "\f01a"; -$fa-var-arrow-circle-o-left: "\f190"; -$fa-var-arrow-circle-o-right: "\f18e"; -$fa-var-arrow-circle-o-up: "\f01b"; -$fa-var-arrow-circle-right: "\f0a9"; -$fa-var-arrow-circle-up: "\f0aa"; -$fa-var-arrow-down: "\f063"; -$fa-var-arrow-left: "\f060"; -$fa-var-arrow-right: "\f061"; -$fa-var-arrow-up: "\f062"; -$fa-var-arrows: "\f047"; -$fa-var-arrows-alt: "\f0b2"; -$fa-var-arrows-h: "\f07e"; -$fa-var-arrows-v: "\f07d"; -$fa-var-asterisk: "\f069"; -$fa-var-at: "\f1fa"; -$fa-var-automobile: "\f1b9"; -$fa-var-backward: "\f04a"; -$fa-var-balance-scale: "\f24e"; -$fa-var-ban: "\f05e"; -$fa-var-bank: "\f19c"; -$fa-var-bar-chart: "\f080"; -$fa-var-bar-chart-o: "\f080"; -$fa-var-barcode: "\f02a"; -$fa-var-bars: "\f0c9"; -$fa-var-battery-0: "\f244"; -$fa-var-battery-1: "\f243"; -$fa-var-battery-2: "\f242"; -$fa-var-battery-3: "\f241"; -$fa-var-battery-4: "\f240"; -$fa-var-battery-empty: "\f244"; -$fa-var-battery-full: "\f240"; -$fa-var-battery-half: "\f242"; -$fa-var-battery-quarter: "\f243"; -$fa-var-battery-three-quarters: "\f241"; -$fa-var-bed: "\f236"; -$fa-var-beer: "\f0fc"; -$fa-var-behance: "\f1b4"; -$fa-var-behance-square: "\f1b5"; -$fa-var-bell: "\f0f3"; -$fa-var-bell-o: "\f0a2"; -$fa-var-bell-slash: "\f1f6"; -$fa-var-bell-slash-o: "\f1f7"; -$fa-var-bicycle: "\f206"; -$fa-var-binoculars: "\f1e5"; -$fa-var-birthday-cake: "\f1fd"; -$fa-var-bitbucket: "\f171"; -$fa-var-bitbucket-square: "\f172"; -$fa-var-bitcoin: "\f15a"; -$fa-var-black-tie: "\f27e"; -$fa-var-bold: "\f032"; -$fa-var-bolt: "\f0e7"; -$fa-var-bomb: "\f1e2"; -$fa-var-book: "\f02d"; -$fa-var-bookmark: "\f02e"; -$fa-var-bookmark-o: "\f097"; -$fa-var-briefcase: "\f0b1"; -$fa-var-btc: "\f15a"; -$fa-var-bug: "\f188"; -$fa-var-building: "\f1ad"; -$fa-var-building-o: "\f0f7"; -$fa-var-bullhorn: "\f0a1"; -$fa-var-bullseye: "\f140"; -$fa-var-bus: "\f207"; -$fa-var-buysellads: "\f20d"; -$fa-var-cab: "\f1ba"; -$fa-var-calculator: "\f1ec"; -$fa-var-calendar: "\f073"; -$fa-var-calendar-check-o: "\f274"; -$fa-var-calendar-minus-o: "\f272"; -$fa-var-calendar-o: "\f133"; -$fa-var-calendar-plus-o: "\f271"; -$fa-var-calendar-times-o: "\f273"; -$fa-var-camera: "\f030"; -$fa-var-camera-retro: "\f083"; -$fa-var-car: "\f1b9"; -$fa-var-caret-down: "\f0d7"; -$fa-var-caret-left: "\f0d9"; -$fa-var-caret-right: "\f0da"; -$fa-var-caret-square-o-down: "\f150"; -$fa-var-caret-square-o-left: "\f191"; -$fa-var-caret-square-o-right: "\f152"; -$fa-var-caret-square-o-up: "\f151"; -$fa-var-caret-up: "\f0d8"; -$fa-var-cart-arrow-down: "\f218"; -$fa-var-cart-plus: "\f217"; -$fa-var-cc: "\f20a"; -$fa-var-cc-amex: "\f1f3"; -$fa-var-cc-diners-club: "\f24c"; -$fa-var-cc-discover: "\f1f2"; -$fa-var-cc-jcb: "\f24b"; -$fa-var-cc-mastercard: "\f1f1"; -$fa-var-cc-paypal: "\f1f4"; -$fa-var-cc-stripe: "\f1f5"; -$fa-var-cc-visa: "\f1f0"; -$fa-var-certificate: "\f0a3"; -$fa-var-chain: "\f0c1"; -$fa-var-chain-broken: "\f127"; -$fa-var-check: "\f00c"; -$fa-var-check-circle: "\f058"; -$fa-var-check-circle-o: "\f05d"; -$fa-var-check-square: "\f14a"; -$fa-var-check-square-o: "\f046"; -$fa-var-chevron-circle-down: "\f13a"; -$fa-var-chevron-circle-left: "\f137"; -$fa-var-chevron-circle-right: "\f138"; -$fa-var-chevron-circle-up: "\f139"; -$fa-var-chevron-down: "\f078"; -$fa-var-chevron-left: "\f053"; -$fa-var-chevron-right: "\f054"; -$fa-var-chevron-up: "\f077"; -$fa-var-child: "\f1ae"; -$fa-var-chrome: "\f268"; -$fa-var-circle: "\f111"; -$fa-var-circle-o: "\f10c"; -$fa-var-circle-o-notch: "\f1ce"; -$fa-var-circle-thin: "\f1db"; -$fa-var-clipboard: "\f0ea"; -$fa-var-clock-o: "\f017"; -$fa-var-clone: "\f24d"; -$fa-var-close: "\f00d"; -$fa-var-cloud: "\f0c2"; -$fa-var-cloud-download: "\f0ed"; -$fa-var-cloud-upload: "\f0ee"; -$fa-var-cny: "\f157"; -$fa-var-code: "\f121"; -$fa-var-code-fork: "\f126"; -$fa-var-codepen: "\f1cb"; -$fa-var-coffee: "\f0f4"; -$fa-var-cog: "\f013"; -$fa-var-cogs: "\f085"; -$fa-var-columns: "\f0db"; -$fa-var-comment: "\f075"; -$fa-var-comment-o: "\f0e5"; -$fa-var-commenting: "\f27a"; -$fa-var-commenting-o: "\f27b"; -$fa-var-comments: "\f086"; -$fa-var-comments-o: "\f0e6"; -$fa-var-compass: "\f14e"; -$fa-var-compress: "\f066"; -$fa-var-connectdevelop: "\f20e"; -$fa-var-contao: "\f26d"; -$fa-var-copy: "\f0c5"; -$fa-var-copyright: "\f1f9"; -$fa-var-creative-commons: "\f25e"; -$fa-var-credit-card: "\f09d"; -$fa-var-crop: "\f125"; -$fa-var-crosshairs: "\f05b"; -$fa-var-css3: "\f13c"; -$fa-var-cube: "\f1b2"; -$fa-var-cubes: "\f1b3"; -$fa-var-cut: "\f0c4"; -$fa-var-cutlery: "\f0f5"; -$fa-var-dashboard: "\f0e4"; -$fa-var-dashcube: "\f210"; -$fa-var-database: "\f1c0"; -$fa-var-dedent: "\f03b"; -$fa-var-delicious: "\f1a5"; -$fa-var-desktop: "\f108"; -$fa-var-deviantart: "\f1bd"; -$fa-var-diamond: "\f219"; -$fa-var-digg: "\f1a6"; -$fa-var-dollar: "\f155"; -$fa-var-dot-circle-o: "\f192"; -$fa-var-download: "\f019"; -$fa-var-dribbble: "\f17d"; -$fa-var-dropbox: "\f16b"; -$fa-var-drupal: "\f1a9"; -$fa-var-edit: "\f044"; -$fa-var-eject: "\f052"; -$fa-var-ellipsis-h: "\f141"; -$fa-var-ellipsis-v: "\f142"; -$fa-var-empire: "\f1d1"; -$fa-var-envelope: "\f0e0"; -$fa-var-envelope-o: "\f003"; -$fa-var-envelope-square: "\f199"; -$fa-var-eraser: "\f12d"; -$fa-var-eur: "\f153"; -$fa-var-euro: "\f153"; -$fa-var-exchange: "\f0ec"; -$fa-var-exclamation: "\f12a"; -$fa-var-exclamation-circle: "\f06a"; -$fa-var-exclamation-triangle: "\f071"; -$fa-var-expand: "\f065"; -$fa-var-expeditedssl: "\f23e"; -$fa-var-external-link: "\f08e"; -$fa-var-external-link-square: "\f14c"; -$fa-var-eye: "\f06e"; -$fa-var-eye-slash: "\f070"; -$fa-var-eyedropper: "\f1fb"; -$fa-var-facebook: "\f09a"; -$fa-var-facebook-f: "\f09a"; -$fa-var-facebook-official: "\f230"; -$fa-var-facebook-square: "\f082"; -$fa-var-fast-backward: "\f049"; -$fa-var-fast-forward: "\f050"; -$fa-var-fax: "\f1ac"; -$fa-var-feed: "\f09e"; -$fa-var-female: "\f182"; -$fa-var-fighter-jet: "\f0fb"; -$fa-var-file: "\f15b"; -$fa-var-file-archive-o: "\f1c6"; -$fa-var-file-audio-o: "\f1c7"; -$fa-var-file-code-o: "\f1c9"; -$fa-var-file-excel-o: "\f1c3"; -$fa-var-file-image-o: "\f1c5"; -$fa-var-file-movie-o: "\f1c8"; -$fa-var-file-o: "\f016"; -$fa-var-file-pdf-o: "\f1c1"; -$fa-var-file-photo-o: "\f1c5"; -$fa-var-file-picture-o: "\f1c5"; -$fa-var-file-powerpoint-o: "\f1c4"; -$fa-var-file-sound-o: "\f1c7"; -$fa-var-file-text: "\f15c"; -$fa-var-file-text-o: "\f0f6"; -$fa-var-file-video-o: "\f1c8"; -$fa-var-file-word-o: "\f1c2"; -$fa-var-file-zip-o: "\f1c6"; -$fa-var-files-o: "\f0c5"; -$fa-var-film: "\f008"; -$fa-var-filter: "\f0b0"; -$fa-var-fire: "\f06d"; -$fa-var-fire-extinguisher: "\f134"; -$fa-var-firefox: "\f269"; -$fa-var-flag: "\f024"; -$fa-var-flag-checkered: "\f11e"; -$fa-var-flag-o: "\f11d"; -$fa-var-flash: "\f0e7"; -$fa-var-flask: "\f0c3"; -$fa-var-flickr: "\f16e"; -$fa-var-floppy-o: "\f0c7"; -$fa-var-folder: "\f07b"; -$fa-var-folder-o: "\f114"; -$fa-var-folder-open: "\f07c"; -$fa-var-folder-open-o: "\f115"; -$fa-var-font: "\f031"; -$fa-var-fonticons: "\f280"; -$fa-var-forumbee: "\f211"; -$fa-var-forward: "\f04e"; -$fa-var-foursquare: "\f180"; -$fa-var-frown-o: "\f119"; -$fa-var-futbol-o: "\f1e3"; -$fa-var-gamepad: "\f11b"; -$fa-var-gavel: "\f0e3"; -$fa-var-gbp: "\f154"; -$fa-var-ge: "\f1d1"; -$fa-var-gear: "\f013"; -$fa-var-gears: "\f085"; -$fa-var-genderless: "\f22d"; -$fa-var-get-pocket: "\f265"; -$fa-var-gg: "\f260"; -$fa-var-gg-circle: "\f261"; -$fa-var-gift: "\f06b"; -$fa-var-git: "\f1d3"; -$fa-var-git-square: "\f1d2"; -$fa-var-github: "\f09b"; -$fa-var-github-alt: "\f113"; -$fa-var-github-square: "\f092"; -$fa-var-gittip: "\f184"; -$fa-var-glass: "\f000"; -$fa-var-globe: "\f0ac"; -$fa-var-google: "\f1a0"; -$fa-var-google-plus: "\f0d5"; -$fa-var-google-plus-square: "\f0d4"; -$fa-var-google-wallet: "\f1ee"; -$fa-var-graduation-cap: "\f19d"; -$fa-var-gratipay: "\f184"; -$fa-var-group: "\f0c0"; -$fa-var-h-square: "\f0fd"; -$fa-var-hacker-news: "\f1d4"; -$fa-var-hand-grab-o: "\f255"; -$fa-var-hand-lizard-o: "\f258"; -$fa-var-hand-o-down: "\f0a7"; -$fa-var-hand-o-left: "\f0a5"; -$fa-var-hand-o-right: "\f0a4"; -$fa-var-hand-o-up: "\f0a6"; -$fa-var-hand-paper-o: "\f256"; -$fa-var-hand-peace-o: "\f25b"; -$fa-var-hand-pointer-o: "\f25a"; -$fa-var-hand-rock-o: "\f255"; -$fa-var-hand-scissors-o: "\f257"; -$fa-var-hand-spock-o: "\f259"; -$fa-var-hand-stop-o: "\f256"; -$fa-var-hdd-o: "\f0a0"; -$fa-var-header: "\f1dc"; -$fa-var-headphones: "\f025"; -$fa-var-heart: "\f004"; -$fa-var-heart-o: "\f08a"; -$fa-var-heartbeat: "\f21e"; -$fa-var-history: "\f1da"; -$fa-var-home: "\f015"; -$fa-var-hospital-o: "\f0f8"; -$fa-var-hotel: "\f236"; -$fa-var-hourglass: "\f254"; -$fa-var-hourglass-1: "\f251"; -$fa-var-hourglass-2: "\f252"; -$fa-var-hourglass-3: "\f253"; -$fa-var-hourglass-end: "\f253"; -$fa-var-hourglass-half: "\f252"; -$fa-var-hourglass-o: "\f250"; -$fa-var-hourglass-start: "\f251"; -$fa-var-houzz: "\f27c"; -$fa-var-html5: "\f13b"; -$fa-var-i-cursor: "\f246"; -$fa-var-ils: "\f20b"; -$fa-var-image: "\f03e"; -$fa-var-inbox: "\f01c"; -$fa-var-indent: "\f03c"; -$fa-var-industry: "\f275"; -$fa-var-info: "\f129"; -$fa-var-info-circle: "\f05a"; -$fa-var-inr: "\f156"; -$fa-var-instagram: "\f16d"; -$fa-var-institution: "\f19c"; -$fa-var-internet-explorer: "\f26b"; -$fa-var-intersex: "\f224"; -$fa-var-ioxhost: "\f208"; -$fa-var-italic: "\f033"; -$fa-var-joomla: "\f1aa"; -$fa-var-jpy: "\f157"; -$fa-var-jsfiddle: "\f1cc"; -$fa-var-key: "\f084"; -$fa-var-keyboard-o: "\f11c"; -$fa-var-krw: "\f159"; -$fa-var-language: "\f1ab"; -$fa-var-laptop: "\f109"; -$fa-var-lastfm: "\f202"; -$fa-var-lastfm-square: "\f203"; -$fa-var-leaf: "\f06c"; -$fa-var-leanpub: "\f212"; -$fa-var-legal: "\f0e3"; -$fa-var-lemon-o: "\f094"; -$fa-var-level-down: "\f149"; -$fa-var-level-up: "\f148"; -$fa-var-life-bouy: "\f1cd"; -$fa-var-life-buoy: "\f1cd"; -$fa-var-life-ring: "\f1cd"; -$fa-var-life-saver: "\f1cd"; -$fa-var-lightbulb-o: "\f0eb"; -$fa-var-line-chart: "\f201"; -$fa-var-link: "\f0c1"; -$fa-var-linkedin: "\f0e1"; -$fa-var-linkedin-square: "\f08c"; -$fa-var-linux: "\f17c"; -$fa-var-list: "\f03a"; -$fa-var-list-alt: "\f022"; -$fa-var-list-ol: "\f0cb"; -$fa-var-list-ul: "\f0ca"; -$fa-var-location-arrow: "\f124"; -$fa-var-lock: "\f023"; -$fa-var-long-arrow-down: "\f175"; -$fa-var-long-arrow-left: "\f177"; -$fa-var-long-arrow-right: "\f178"; -$fa-var-long-arrow-up: "\f176"; -$fa-var-magic: "\f0d0"; -$fa-var-magnet: "\f076"; -$fa-var-mail-forward: "\f064"; -$fa-var-mail-reply: "\f112"; -$fa-var-mail-reply-all: "\f122"; -$fa-var-male: "\f183"; -$fa-var-map: "\f279"; -$fa-var-map-marker: "\f041"; -$fa-var-map-o: "\f278"; -$fa-var-map-pin: "\f276"; -$fa-var-map-signs: "\f277"; -$fa-var-mars: "\f222"; -$fa-var-mars-double: "\f227"; -$fa-var-mars-stroke: "\f229"; -$fa-var-mars-stroke-h: "\f22b"; -$fa-var-mars-stroke-v: "\f22a"; -$fa-var-maxcdn: "\f136"; -$fa-var-meanpath: "\f20c"; -$fa-var-medium: "\f23a"; -$fa-var-medkit: "\f0fa"; -$fa-var-meh-o: "\f11a"; -$fa-var-mercury: "\f223"; -$fa-var-microphone: "\f130"; -$fa-var-microphone-slash: "\f131"; -$fa-var-minus: "\f068"; -$fa-var-minus-circle: "\f056"; -$fa-var-minus-square: "\f146"; -$fa-var-minus-square-o: "\f147"; -$fa-var-mobile: "\f10b"; -$fa-var-mobile-phone: "\f10b"; -$fa-var-money: "\f0d6"; -$fa-var-moon-o: "\f186"; -$fa-var-mortar-board: "\f19d"; -$fa-var-motorcycle: "\f21c"; -$fa-var-mouse-pointer: "\f245"; -$fa-var-music: "\f001"; -$fa-var-navicon: "\f0c9"; -$fa-var-neuter: "\f22c"; -$fa-var-newspaper-o: "\f1ea"; -$fa-var-object-group: "\f247"; -$fa-var-object-ungroup: "\f248"; -$fa-var-odnoklassniki: "\f263"; -$fa-var-odnoklassniki-square: "\f264"; -$fa-var-opencart: "\f23d"; -$fa-var-openid: "\f19b"; -$fa-var-opera: "\f26a"; -$fa-var-optin-monster: "\f23c"; -$fa-var-outdent: "\f03b"; -$fa-var-pagelines: "\f18c"; -$fa-var-paint-brush: "\f1fc"; -$fa-var-paper-plane: "\f1d8"; -$fa-var-paper-plane-o: "\f1d9"; -$fa-var-paperclip: "\f0c6"; -$fa-var-paragraph: "\f1dd"; -$fa-var-paste: "\f0ea"; -$fa-var-pause: "\f04c"; -$fa-var-paw: "\f1b0"; -$fa-var-paypal: "\f1ed"; -$fa-var-pencil: "\f040"; -$fa-var-pencil-square: "\f14b"; -$fa-var-pencil-square-o: "\f044"; -$fa-var-phone: "\f095"; -$fa-var-phone-square: "\f098"; -$fa-var-photo: "\f03e"; -$fa-var-picture-o: "\f03e"; -$fa-var-pie-chart: "\f200"; -$fa-var-pied-piper: "\f1a7"; -$fa-var-pied-piper-alt: "\f1a8"; -$fa-var-pinterest: "\f0d2"; -$fa-var-pinterest-p: "\f231"; -$fa-var-pinterest-square: "\f0d3"; -$fa-var-plane: "\f072"; -$fa-var-play: "\f04b"; -$fa-var-play-circle: "\f144"; -$fa-var-play-circle-o: "\f01d"; -$fa-var-plug: "\f1e6"; -$fa-var-plus: "\f067"; -$fa-var-plus-circle: "\f055"; -$fa-var-plus-square: "\f0fe"; -$fa-var-plus-square-o: "\f196"; -$fa-var-power-off: "\f011"; -$fa-var-print: "\f02f"; -$fa-var-puzzle-piece: "\f12e"; -$fa-var-qq: "\f1d6"; -$fa-var-qrcode: "\f029"; -$fa-var-question: "\f128"; -$fa-var-question-circle: "\f059"; -$fa-var-quote-left: "\f10d"; -$fa-var-quote-right: "\f10e"; -$fa-var-ra: "\f1d0"; -$fa-var-random: "\f074"; -$fa-var-rebel: "\f1d0"; -$fa-var-recycle: "\f1b8"; -$fa-var-reddit: "\f1a1"; -$fa-var-reddit-square: "\f1a2"; -$fa-var-refresh: "\f021"; -$fa-var-registered: "\f25d"; -$fa-var-remove: "\f00d"; -$fa-var-renren: "\f18b"; -$fa-var-reorder: "\f0c9"; -$fa-var-repeat: "\f01e"; -$fa-var-reply: "\f112"; -$fa-var-reply-all: "\f122"; -$fa-var-retweet: "\f079"; -$fa-var-rmb: "\f157"; -$fa-var-road: "\f018"; -$fa-var-rocket: "\f135"; -$fa-var-rotate-left: "\f0e2"; -$fa-var-rotate-right: "\f01e"; -$fa-var-rouble: "\f158"; -$fa-var-rss: "\f09e"; -$fa-var-rss-square: "\f143"; -$fa-var-rub: "\f158"; -$fa-var-ruble: "\f158"; -$fa-var-rupee: "\f156"; -$fa-var-safari: "\f267"; -$fa-var-save: "\f0c7"; -$fa-var-scissors: "\f0c4"; -$fa-var-search: "\f002"; -$fa-var-search-minus: "\f010"; -$fa-var-search-plus: "\f00e"; -$fa-var-sellsy: "\f213"; -$fa-var-send: "\f1d8"; -$fa-var-send-o: "\f1d9"; -$fa-var-server: "\f233"; -$fa-var-share: "\f064"; -$fa-var-share-alt: "\f1e0"; -$fa-var-share-alt-square: "\f1e1"; -$fa-var-share-square: "\f14d"; -$fa-var-share-square-o: "\f045"; -$fa-var-shekel: "\f20b"; -$fa-var-sheqel: "\f20b"; -$fa-var-shield: "\f132"; -$fa-var-ship: "\f21a"; -$fa-var-shirtsinbulk: "\f214"; -$fa-var-shopping-cart: "\f07a"; -$fa-var-sign-in: "\f090"; -$fa-var-sign-out: "\f08b"; -$fa-var-signal: "\f012"; -$fa-var-simplybuilt: "\f215"; -$fa-var-sitemap: "\f0e8"; -$fa-var-skyatlas: "\f216"; -$fa-var-skype: "\f17e"; -$fa-var-slack: "\f198"; -$fa-var-sliders: "\f1de"; -$fa-var-slideshare: "\f1e7"; -$fa-var-smile-o: "\f118"; -$fa-var-soccer-ball-o: "\f1e3"; -$fa-var-sort: "\f0dc"; -$fa-var-sort-alpha-asc: "\f15d"; -$fa-var-sort-alpha-desc: "\f15e"; -$fa-var-sort-amount-asc: "\f160"; -$fa-var-sort-amount-desc: "\f161"; -$fa-var-sort-asc: "\f0de"; -$fa-var-sort-desc: "\f0dd"; -$fa-var-sort-down: "\f0dd"; -$fa-var-sort-numeric-asc: "\f162"; -$fa-var-sort-numeric-desc: "\f163"; -$fa-var-sort-up: "\f0de"; -$fa-var-soundcloud: "\f1be"; -$fa-var-space-shuttle: "\f197"; -$fa-var-spinner: "\f110"; -$fa-var-spoon: "\f1b1"; -$fa-var-spotify: "\f1bc"; -$fa-var-square: "\f0c8"; -$fa-var-square-o: "\f096"; -$fa-var-stack-exchange: "\f18d"; -$fa-var-stack-overflow: "\f16c"; -$fa-var-star: "\f005"; -$fa-var-star-half: "\f089"; -$fa-var-star-half-empty: "\f123"; -$fa-var-star-half-full: "\f123"; -$fa-var-star-half-o: "\f123"; -$fa-var-star-o: "\f006"; -$fa-var-steam: "\f1b6"; -$fa-var-steam-square: "\f1b7"; -$fa-var-step-backward: "\f048"; -$fa-var-step-forward: "\f051"; -$fa-var-stethoscope: "\f0f1"; -$fa-var-sticky-note: "\f249"; -$fa-var-sticky-note-o: "\f24a"; -$fa-var-stop: "\f04d"; -$fa-var-street-view: "\f21d"; -$fa-var-strikethrough: "\f0cc"; -$fa-var-stumbleupon: "\f1a4"; -$fa-var-stumbleupon-circle: "\f1a3"; -$fa-var-subscript: "\f12c"; -$fa-var-subway: "\f239"; -$fa-var-suitcase: "\f0f2"; -$fa-var-sun-o: "\f185"; -$fa-var-superscript: "\f12b"; -$fa-var-support: "\f1cd"; -$fa-var-table: "\f0ce"; -$fa-var-tablet: "\f10a"; -$fa-var-tachometer: "\f0e4"; -$fa-var-tag: "\f02b"; -$fa-var-tags: "\f02c"; -$fa-var-tasks: "\f0ae"; -$fa-var-taxi: "\f1ba"; -$fa-var-television: "\f26c"; -$fa-var-tencent-weibo: "\f1d5"; -$fa-var-terminal: "\f120"; -$fa-var-text-height: "\f034"; -$fa-var-text-width: "\f035"; -$fa-var-th: "\f00a"; -$fa-var-th-large: "\f009"; -$fa-var-th-list: "\f00b"; -$fa-var-thumb-tack: "\f08d"; -$fa-var-thumbs-down: "\f165"; -$fa-var-thumbs-o-down: "\f088"; -$fa-var-thumbs-o-up: "\f087"; -$fa-var-thumbs-up: "\f164"; -$fa-var-ticket: "\f145"; -$fa-var-times: "\f00d"; -$fa-var-times-circle: "\f057"; -$fa-var-times-circle-o: "\f05c"; -$fa-var-tint: "\f043"; -$fa-var-toggle-down: "\f150"; -$fa-var-toggle-left: "\f191"; -$fa-var-toggle-off: "\f204"; -$fa-var-toggle-on: "\f205"; -$fa-var-toggle-right: "\f152"; -$fa-var-toggle-up: "\f151"; -$fa-var-trademark: "\f25c"; -$fa-var-train: "\f238"; -$fa-var-transgender: "\f224"; -$fa-var-transgender-alt: "\f225"; -$fa-var-trash: "\f1f8"; -$fa-var-trash-o: "\f014"; -$fa-var-tree: "\f1bb"; -$fa-var-trello: "\f181"; -$fa-var-tripadvisor: "\f262"; -$fa-var-trophy: "\f091"; -$fa-var-truck: "\f0d1"; -$fa-var-try: "\f195"; -$fa-var-tty: "\f1e4"; -$fa-var-tumblr: "\f173"; -$fa-var-tumblr-square: "\f174"; -$fa-var-turkish-lira: "\f195"; -$fa-var-tv: "\f26c"; -$fa-var-twitch: "\f1e8"; -$fa-var-twitter: "\f099"; -$fa-var-twitter-square: "\f081"; -$fa-var-umbrella: "\f0e9"; -$fa-var-underline: "\f0cd"; -$fa-var-undo: "\f0e2"; -$fa-var-university: "\f19c"; -$fa-var-unlink: "\f127"; -$fa-var-unlock: "\f09c"; -$fa-var-unlock-alt: "\f13e"; -$fa-var-unsorted: "\f0dc"; -$fa-var-upload: "\f093"; -$fa-var-usd: "\f155"; -$fa-var-user: "\f007"; -$fa-var-user-md: "\f0f0"; -$fa-var-user-plus: "\f234"; -$fa-var-user-secret: "\f21b"; -$fa-var-user-times: "\f235"; -$fa-var-users: "\f0c0"; -$fa-var-venus: "\f221"; -$fa-var-venus-double: "\f226"; -$fa-var-venus-mars: "\f228"; -$fa-var-viacoin: "\f237"; -$fa-var-video-camera: "\f03d"; -$fa-var-vimeo: "\f27d"; -$fa-var-vimeo-square: "\f194"; -$fa-var-vine: "\f1ca"; -$fa-var-vk: "\f189"; -$fa-var-volume-down: "\f027"; -$fa-var-volume-off: "\f026"; -$fa-var-volume-up: "\f028"; -$fa-var-warning: "\f071"; -$fa-var-wechat: "\f1d7"; -$fa-var-weibo: "\f18a"; -$fa-var-weixin: "\f1d7"; -$fa-var-whatsapp: "\f232"; -$fa-var-wheelchair: "\f193"; -$fa-var-wifi: "\f1eb"; -$fa-var-wikipedia-w: "\f266"; -$fa-var-windows: "\f17a"; -$fa-var-won: "\f159"; -$fa-var-wordpress: "\f19a"; -$fa-var-wrench: "\f0ad"; -$fa-var-xing: "\f168"; -$fa-var-xing-square: "\f169"; -$fa-var-y-combinator: "\f23b"; -$fa-var-y-combinator-square: "\f1d4"; -$fa-var-yahoo: "\f19e"; -$fa-var-yc: "\f23b"; -$fa-var-yc-square: "\f1d4"; -$fa-var-yelp: "\f1e9"; -$fa-var-yen: "\f157"; -$fa-var-youtube: "\f167"; -$fa-var-youtube-play: "\f16a"; -$fa-var-youtube-square: "\f166"; - diff --git a/fontawesome/scss/font-awesome.scss b/fontawesome/scss/font-awesome.scss deleted file mode 100644 index ebd9646..0000000 --- a/fontawesome/scss/font-awesome.scss +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "larger"; -@import "fixed-width"; -@import "list"; -@import "bordered-pulled"; -@import "animated"; -@import "rotated-flipped"; -@import "stacked"; -@import "icons"; diff --git a/mpdf/examples/BGR-Red-Ducati_WCS-Test-TriState.jpg b/mpdf/examples/BGR-Red-Ducati_WCS-Test-TriState.jpg deleted file mode 100644 index a47cf6c..0000000 Binary files a/mpdf/examples/BGR-Red-Ducati_WCS-Test-TriState.jpg and /dev/null differ diff --git a/mpdf/examples/ColorGammaGradient.png b/mpdf/examples/ColorGammaGradient.png deleted file mode 100644 index 09a06f3..0000000 Binary files a/mpdf/examples/ColorGammaGradient.png and /dev/null differ diff --git a/mpdf/examples/Lower_Left.jpg b/mpdf/examples/Lower_Left.jpg deleted file mode 100644 index 0984e9b..0000000 Binary files a/mpdf/examples/Lower_Left.jpg and /dev/null differ diff --git a/mpdf/examples/Lower_Right.jpg b/mpdf/examples/Lower_Right.jpg deleted file mode 100644 index c073c56..0000000 Binary files a/mpdf/examples/Lower_Right.jpg and /dev/null differ diff --git a/mpdf/examples/MathJaxProcess.php b/mpdf/examples/MathJaxProcess.php deleted file mode 100644 index b7db52f..0000000 --- a/mpdf/examples/MathJaxProcess.php +++ /dev/null @@ -1,75 +0,0 @@ -]*>\s*(.*?<\/defs>)\s*<\/svg>/',$html,$m); -$defs = $m[1]; - -$html = preg_replace('/]*>\s*\s*<\/svg>/','',$html); - -$html = preg_replace('/(]*>)/',"\\1".$defs,$html); - -preg_match_all('/]*)style="(.*?)"/',$html,$m); -for ($i=0;$iConvertSize($wr[1],0,$mpdf->FontSize) * $mpdf->dpi/25.4; - preg_match('/height: (.*?);/',$style, $hr); - $h = $mpdf->ConvertSize($hr[1],0,$mpdf->FontSize) * $mpdf->dpi/25.4; - $replace = 'WriteHTML($stylesheet,1); - -$mpdf->WriteHTML($html); -$mpdf->Output(); -//===================================================== -} - -else { -//===================================================== -// To output SVG files readable by mPDF as text output -header('Content-type: text/plain'); -preg_match_all('//',$html,$m); -for ($i=0;$i/',">\n",$svg); // Just add some new lines - echo $svg."\n\n"; -} -//===================================================== -} - -exit; - -?> \ No newline at end of file diff --git a/mpdf/examples/MathJaxSample.htm b/mpdf/examples/MathJaxSample.htm deleted file mode 100644 index 09e7a1c..0000000 --- a/mpdf/examples/MathJaxSample.htm +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - -

The Cauchy-Schwarz Inequality (TeX)

-\[ \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right) \] - -

Standard Deviation (MathML)

-σ=1Ni=1N(xiμ)2. - -

Inline equation (TeX)

-

Finally, while display equations look good for a page of samples, the ability to mix math and text in a paragraph is also important. This expression \(\sqrt{3x-1}+(1+x)^2\) is an example of an inline equation. As you see, MathJax equations can be used this way as well, without unduly disturbing the spacing between lines.

- - -
-
- - - -
-
- - - - \ No newline at end of file diff --git a/mpdf/examples/Upper_Left.jpg b/mpdf/examples/Upper_Left.jpg deleted file mode 100644 index b08397e..0000000 Binary files a/mpdf/examples/Upper_Left.jpg and /dev/null differ diff --git a/mpdf/examples/Upper_Right.jpg b/mpdf/examples/Upper_Right.jpg deleted file mode 100644 index 5c98541..0000000 Binary files a/mpdf/examples/Upper_Right.jpg and /dev/null differ diff --git a/mpdf/examples/alpha.png b/mpdf/examples/alpha.png deleted file mode 100644 index a8acd15..0000000 Binary files a/mpdf/examples/alpha.png and /dev/null differ diff --git a/mpdf/examples/alpha09.png b/mpdf/examples/alpha09.png deleted file mode 100644 index f4ee5ff..0000000 Binary files a/mpdf/examples/alpha09.png and /dev/null differ diff --git a/mpdf/examples/alpha3.png b/mpdf/examples/alpha3.png deleted file mode 100644 index e62e50a..0000000 Binary files a/mpdf/examples/alpha3.png and /dev/null differ diff --git a/mpdf/examples/alpha36.png b/mpdf/examples/alpha36.png deleted file mode 100644 index 8cd53ca..0000000 Binary files a/mpdf/examples/alpha36.png and /dev/null differ diff --git a/mpdf/examples/bach1.png b/mpdf/examples/bach1.png deleted file mode 100644 index bbd7cdb..0000000 Binary files a/mpdf/examples/bach1.png and /dev/null differ diff --git a/mpdf/examples/bayeux1.jpg b/mpdf/examples/bayeux1.jpg deleted file mode 100644 index c67f252..0000000 Binary files a/mpdf/examples/bayeux1.jpg and /dev/null differ diff --git a/mpdf/examples/bayeux2.jpg b/mpdf/examples/bayeux2.jpg deleted file mode 100644 index 21dff51..0000000 Binary files a/mpdf/examples/bayeux2.jpg and /dev/null differ diff --git a/mpdf/examples/bg.jpg b/mpdf/examples/bg.jpg deleted file mode 100644 index 896ea63..0000000 Binary files a/mpdf/examples/bg.jpg and /dev/null differ diff --git a/mpdf/examples/bgan6a16.png b/mpdf/examples/bgan6a16.png deleted file mode 100644 index 984a995..0000000 Binary files a/mpdf/examples/bgan6a16.png and /dev/null differ diff --git a/mpdf/examples/bgan6a162.png b/mpdf/examples/bgan6a162.png deleted file mode 100644 index 984a995..0000000 Binary files a/mpdf/examples/bgan6a162.png and /dev/null differ diff --git a/mpdf/examples/bgbarcode.png b/mpdf/examples/bgbarcode.png deleted file mode 100644 index 26120a8..0000000 Binary files a/mpdf/examples/bgbarcode.png and /dev/null differ diff --git a/mpdf/examples/bgrock.jpg b/mpdf/examples/bgrock.jpg deleted file mode 100644 index 2e0553a..0000000 Binary files a/mpdf/examples/bgrock.jpg and /dev/null differ diff --git a/mpdf/examples/borders2FF.jpg b/mpdf/examples/borders2FF.jpg deleted file mode 100644 index ff21dc7..0000000 Binary files a/mpdf/examples/borders2FF.jpg and /dev/null differ diff --git a/mpdf/examples/borders2IE.jpg b/mpdf/examples/borders2IE.jpg deleted file mode 100644 index 0cb9e6e..0000000 Binary files a/mpdf/examples/borders2IE.jpg and /dev/null differ diff --git a/mpdf/examples/borders3FF.jpg b/mpdf/examples/borders3FF.jpg deleted file mode 100644 index ecb0fcb..0000000 Binary files a/mpdf/examples/borders3FF.jpg and /dev/null differ diff --git a/mpdf/examples/borders3IE.jpg b/mpdf/examples/borders3IE.jpg deleted file mode 100644 index 05dbb43..0000000 Binary files a/mpdf/examples/borders3IE.jpg and /dev/null differ diff --git a/mpdf/examples/borders4FF.jpg b/mpdf/examples/borders4FF.jpg deleted file mode 100644 index 3bcc3d7..0000000 Binary files a/mpdf/examples/borders4FF.jpg and /dev/null differ diff --git a/mpdf/examples/borders4IE.jpg b/mpdf/examples/borders4IE.jpg deleted file mode 100644 index 9cf1589..0000000 Binary files a/mpdf/examples/borders4IE.jpg and /dev/null differ diff --git a/mpdf/examples/bordersFF.jpg b/mpdf/examples/bordersFF.jpg deleted file mode 100644 index 13f2f31..0000000 Binary files a/mpdf/examples/bordersFF.jpg and /dev/null differ diff --git a/mpdf/examples/bordersIE.jpg b/mpdf/examples/bordersIE.jpg deleted file mode 100644 index 88b002c..0000000 Binary files a/mpdf/examples/bordersIE.jpg and /dev/null differ diff --git a/mpdf/examples/butterfly_ProPhoto.gif b/mpdf/examples/butterfly_ProPhoto.gif deleted file mode 100644 index 44ef97b..0000000 Binary files a/mpdf/examples/butterfly_ProPhoto.gif and /dev/null differ diff --git a/mpdf/examples/butterfly_ProPhoto.png b/mpdf/examples/butterfly_ProPhoto.png deleted file mode 100644 index 8e99f92..0000000 Binary files a/mpdf/examples/butterfly_ProPhoto.png and /dev/null differ diff --git a/mpdf/examples/cc9900.gif b/mpdf/examples/cc9900.gif deleted file mode 100644 index edaf1f9..0000000 Binary files a/mpdf/examples/cc9900.gif and /dev/null differ diff --git a/mpdf/examples/cc9900.png b/mpdf/examples/cc9900.png deleted file mode 100644 index aa73ff4..0000000 Binary files a/mpdf/examples/cc9900.png and /dev/null differ diff --git a/mpdf/examples/cc9900_002.png b/mpdf/examples/cc9900_002.png deleted file mode 100644 index f38204d..0000000 Binary files a/mpdf/examples/cc9900_002.png and /dev/null differ diff --git a/mpdf/examples/cc9900_003.png b/mpdf/examples/cc9900_003.png deleted file mode 100644 index da1d265..0000000 Binary files a/mpdf/examples/cc9900_003.png and /dev/null differ diff --git a/mpdf/examples/cc9900_004.png b/mpdf/examples/cc9900_004.png deleted file mode 100644 index 5a12289..0000000 Binary files a/mpdf/examples/cc9900_004.png and /dev/null differ diff --git a/mpdf/examples/cc9900_005.png b/mpdf/examples/cc9900_005.png deleted file mode 100644 index f1fe1ad..0000000 Binary files a/mpdf/examples/cc9900_005.png and /dev/null differ diff --git a/mpdf/examples/clematis.jpg b/mpdf/examples/clematis.jpg deleted file mode 100644 index d8078f8..0000000 Binary files a/mpdf/examples/clematis.jpg and /dev/null differ diff --git a/mpdf/examples/colourTestFakeBRG.png b/mpdf/examples/colourTestFakeBRG.png deleted file mode 100644 index 09efd6b..0000000 Binary files a/mpdf/examples/colourTestFakeBRG.png and /dev/null differ diff --git a/mpdf/examples/example01_basic.php b/mpdf/examples/example01_basic.php deleted file mode 100644 index c56858a..0000000 --- a/mpdf/examples/example01_basic.php +++ /dev/null @@ -1,186 +0,0 @@ -mPDF -

Basic HTML Example

-This file demonstrates most of the HTML elements. -

Heading 3

-

Heading 4

-
Heading 5
-
Heading 6
-

P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- -
- -
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
-
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
- -
Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
- -
Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
- -
PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
-nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
-dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
-sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
-Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
-ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
- - - - -
Styles - tt(teletype) italic bold big small emphasis strong
new lines
-code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
- -

Paragraph using the in-line style to determine the font-size (15pt) and colour

- - -

Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

-

This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

- -

This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

The above repeated, but starting with a paragraph with font-size specified (7pt)

- -

This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

- -

This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

- -

This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

This tests underline and strikethrough when they are used together as they both use text-decoration

- - -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -
    -
  1. Item 1
  2. -
  3. Item 232
  4. -
  5. Item 3
  6. -
  7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. -
      -
    • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
    • -
    • Subitem 2 -
        -
      • -Level 3 subitem -
      • -
      -
    • -
    -
  8. -
  9. Item 5
  10. -
- -
-
Definition list
-
List defined by DL, DD and DT tags
-
- -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DataDataDataData
2nd line
More DataMore DataMore DataData
2nd line
DataDataDataData
2nd line
DataDataDataData
2nd line
- -

Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

- -
- -Textarea - -

- -Select - followed by text -

- - - -Input Radio - No      Yes -

- - -Input Radio - No      Keep      Choice -

- - -Input Text - -

- -Input Password - -

- - - Checkboxes
- Not selected
- Selected
- Disabled -

- - - - - - -
- -'; - - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); -$mpdf=new mPDF('c'); - -$mpdf->WriteHTML($html); -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example02_CSS_styles.php b/mpdf/examples/example02_CSS_styles.php deleted file mode 100644 index febb220..0000000 --- a/mpdf/examples/example02_CSS_styles.php +++ /dev/null @@ -1,41 +0,0 @@ -mPDF -

Basic Example Using CSS Styles

- -

Heading 3

-

Heading 4

-
Heading 5
-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

-

Heading using Small-Caps

-

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

-'; - - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->SetDisplayMode('fullpage'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== - -?> \ No newline at end of file diff --git a/mpdf/examples/example03_backgrounds_and_borders.php b/mpdf/examples/example03_backgrounds_and_borders.php deleted file mode 100644 index ca13702..0000000 --- a/mpdf/examples/example03_backgrounds_and_borders.php +++ /dev/null @@ -1,138 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -.radialgradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65; - margin: auto; -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - border-radius: 2mm; - background-clip: border-box; -} -h4 { - font-family: sans; - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.5em; -} -div { - padding:1em; - margin-bottom: 1em; - text-align:justify; -} -.example pre { - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; -} - -pre { text-align:left } -pre.code { font-family: monospace } - - - - -

mPDF

-

Backgrounds & Borders

- -
-

Page background

-
-The background colour can be set by CSS styles on the <body> tag. This will set the background for the whole page. In this document, the background has been set as a gradient (see below). -
- -

Background Gradients

-
-Background can be set as a linear or radial gradient between two colours. The background has been set on this <div> element to a linear gradient. CSS style used here is:
-background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
-The four numbers are coordinates in the form (x1, y1, x2, y2) which defines the gradient vector. x and y are values from 0 to 1, where 1 represents the height or width of the box as it is printed. -
-
-Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. -
-
-The background has been set on this <div> element to a radial gradient. CSS style used here is:
-background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65;
-The five numbers are coordinates in the form (x1, y1, x2, y2, r) where (x1, y1) is the starting point of the gradient with color1, -(x2, y2) is the center of the circle with color2, and r is the radius of the circle. -(x1, y1) should be inside the circle, otherwise some areas will not be defined. -
-
-Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec mattis lacus ac purus feugiat semper. Donec aliquet nunc odio, vitae pellentesque diam. Pellentesque sed velit lacus. Duis quis dui quis sem consectetur sollicitudin. Cras dolor quam, dapibus et pretium sit amet, elementum vel arcu. Duis rhoncus facilisis erat nec mattis. In hac habitasse platea dictumst. Vivamus hendrerit sem in justo aliquet a pellentesque lorem scelerisque. Suspendisse a augue sed urna rhoncus elementum. Aliquam erat volutpat. -
- -

Background Images

-
-The CSS properties background-image, background-position, and background-repeat are supported as defined in CSS2, as well as the shorthand form "background". -
-The background has been set on this <div> element to:
-background: transparent url(\'bg.jpg\') repeat fixed right top;
-Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. -
- -

Rounded Borders

-
-Rounded corners to borders can be added using border-radius as defined in the draft spec. of CSS3.
- -The two length values of the border-*-radius properties define the radii of a quarter ellipse that defines the shape of the corner of the outer border edge. -The first value is the horizontal radius.
-border-top-left-radius: 55pt 25pt; 55pt is radius of curve from top end of left border starting to go round to the top.
- -If the second length is omitted it is equal to the first (and the corner is thus a quarter circle). If either length is zero, the corner is square, not rounded.
- -The border-radius shorthand sets all four border-*-radius properties. If values are given before and after a slash, then the values before the slash set the horizontal radius and the values after the slash set the vertical radius. If there is no slash, then the values set both radii equally. The four values for each radii are given in the order top-left, top-right, bottom-right, bottom-left. If bottom-left is omitted it is the same as top-right. If bottom-right is omitted it is the same as top-left. If top-right is omitted it is the same as top-left. -
-
-border-radius: 4em;
- -would be equivalent to
- -border-top-left-radius: 4em;
-border-top-right-radius: 4em;
-border-bottom-right-radius: 4em;
-border-bottom-left-radius: 4em;

-
-and
-border-radius: 2em 1em 4em / 0.5em 3em;
-would be equivalent to
-border-top-left-radius: 2em 0.5em;
-border-top-right-radius: 1em 3em;
-border-bottom-right-radius: 4em 0.5em;
-border-bottom-left-radius: 1em 3em;
-
- -
-'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example04_images.php b/mpdf/examples/example04_images.php deleted file mode 100644 index 4807dfc..0000000 --- a/mpdf/examples/example04_images.php +++ /dev/null @@ -1,207 +0,0 @@ - -table { border-collapse: collapse; margin-top: 0; text-align: center; } -td { padding: 0.5em; } -h1 { margin-bottom: 0; }z - -

mPDF Images

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GIFJPGJPG (CMYK)PNGBMPWMFSVG

Opacity 50%

- -

Alpha channel

- - - - - - - - - -
PNG
-

Transparency

- - - - - - - - - - - - - - - - - - - - - - - - -
PNG
GIF
WMF
SVG
- - -Images returned from tiger.php -
-GIF -JPG -PNG -WMF -SVG -
- - - - -

Image Alignment

-
In-line images can be individually aligned (vertically). Most of the values for "vertical-align" are supported: top, bottom, middle, baseline, text-top, and text-bottom. The default value for vertical alignment is baseline, and the default padding 0, consistent with most browsers. -
-
- -
-These images -are -top -aligned -
-
- -
-These images -are -text-top -aligned -
-
- -
-These images -are -bottom -aligned -
-
- -
-These images -are -text-bottom -aligned -
-
- -
-These images -are -baseline -aligned -
-
- -
-These images -are -middle -aligned -
-
- -

Mixed alignment

-
-baseline: -text-bottom: -middle: -bottom: -text-top: -top: -
- -

Image Border and padding

-Image padding is supported as well as border and margin. - - -

Rotated Images

- - - - -
- - - - -
-       -       -       - -
-  -  -  - -
- -'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example05_tables.php b/mpdf/examples/example05_tables.php deleted file mode 100644 index 997614a..0000000 --- a/mpdf/examples/example05_tables.php +++ /dev/null @@ -1,1017 +0,0 @@ -mPDF -

Tables

-

CSS Styles

-

The CSS properties for tables and cells is increased over that in html2fpdf. It includes recognition of THEAD, TFOOT and TH.
See below for other facilities such as autosizing, and rotation.

- - - - - - - - - - - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-This is data out of p -

This is bold data p

-This is bold data out of p
-This is normal data after br -

H3 in a table

-
This is data div
-This is data out of div -
This is data div (bold)
-This is data out of div -

More data

This is large text

Row 3

This is long data

This is data

Row 4 <td> cell

This is data

This is data

Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
- -

This table has padding-left and -right set to 5mm i.e. padding within the cells. Also border colour and style, font family and size are set by CSS.

- - - - - - - - - -
Row 1This is dataThis is data
Row 2

This is data p

More data

Row 3

This is long data

This is data

Row 4 <td> cell

This is data

This is data

Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
- -

This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

- - - - -
Row 1This is dataThis is data
Row 2

This is data p

More data

Row 3

This is long data

This is data
- - -

Table Styles

-

The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

-

bpmTopic Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-
-

More data

-
-

Row 3

-
-

This is long data

-
This is data
-

Row 4 <td> cell

-
This is data -

This is data

-
Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
- -

 

- -

bpmTopicC Class (centered) Odd and Even rows

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col/Row Header -

Second column header p

-
Third column header
Row header 1This is dataThis is data
Row header 2 -

This is data p

-
-

This is data

-
-

Row header 3

-
-

This is long data

-
This is data
-

Row header 4

-

<th> cell acting as header

-
This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
- -

 

- -

bpmTopnTail Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-
-

This is data

-
-

Row 3

-
-

This is long data

-
This is data
-

Row 4 <td> cell

-
This is data -

This is data

-
Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
-

 

-

bpmTopnTailC Class (centered) Odd and Even rows

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col/Row Header -

Second column header p

-
Third column header
Row header 1This is dataThis is data
Row header 2 -

This is data p

-
-

This is data

-
-

Row header 3

-
-

This is long data

-
This is data
-

Row header 4

-

<th> cell acting as header

-
This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
- -

 

- -

TopnTail Class

- - - - - - - - - - - - - - - - - - - - - - - - - -
Col and Row Header -

Second

-

column

-
Top right align
-

Row header 1 p

-
This is dataThis is data
Row header 2Bottom right align -

This is data. Can use

-

bold italic sub or sup text

-
-

Bottom right align

-
-

This is data. This cell

-

uses Cell Styles to set

-

the borders.

-

All borders are collapsible

-

in mPDF.

-
This is data
Row header 4 -

This is data p

-
More data
Row header 5Also data merged and centered
- -

 

- -

Lists in a Table

- - - - - - - - - - - - - - -
Col and Row Header -

Second

-

column

-
Top right align
-

Row header 1 p

-
This is dataThis is data
Row header 2 -
    -
  1. Item 1
  2. -
  3. Item 2 -
      -
    1. Subitem of ordered list
    2. -
    3. Subitem 2 -
        -
      1. Level 3 subitem
      2. -
      3. Level 3 subitem
      4. -
      -
    4. -
    -
  4. -
  5. Item 3
  6. -
  7. Another Item
  8. -
  9. Subitem -
      -
    1. Level 3 subitem
    2. -
    -
  10. -
  11. Another Item
  12. -
-
-Unordered list: -
    -
  • Item 1
  • -
  • Item 2 -
      -
    • Subitem of unordered list
    • -
    • Subitem 2 -
        -
      • Level 3 subitem
      • -
      • Level 3 subitem
      • -
      • Level 3 subitem
      • -
      -
    • -
    -
  • -
  • Item 3
  • -
-
-

 

- - -

Automatic Column Width

- - - - - - - - - -
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti
MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
- - -

ColSpan & Rowspan

- - - - - - - - - -
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti
Fusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
-Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
- - - -

Table Header & Footer Rows

-

A table using a header row should repeat the header row across pages:

-

bpmTopicC Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col and Row Header -

Second column header

-
Third column header
Col and Row Footer -

Second column footer

-
Third column footer
Row header 1This is dataThis is data
Row header 2This is data -

This is data

-
-

Row header 3

-
-

This is data

-
This is data
Row header 4This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
Row header 9Also dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
-

 

- -

Autosizing Tables

-

Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

- -
Periodic Table
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
- - - -

Rotating Tables

-

This is set to rotate -90 degrees (counterclockwise).

- -
Periodic Table
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
-

 

- - -

Rotated text in Table Cells

- -
Periodic Table
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Element type 1A

Second line

Element type longer 2A

Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
HHe
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
-

 

- -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html,2); - -$mpdf->Output('mpdf.pdf','I'); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example06_tables_nested.php b/mpdf/examples/example06_tables_nested.php deleted file mode 100644 index e50764a..0000000 --- a/mpdf/examples/example06_tables_nested.php +++ /dev/null @@ -1,532 +0,0 @@ - - - - -

mPDF

-

Tables - Nested

- - -
-Text before table - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
- - -
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
- - -
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
- - -
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
- - -
This is data
This is dataThis is dataThis is dataThis is data
This is dataThis is dataThis is data
This is dataThis is dataThis is dataThis is data
- -
- -

Text before table

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is data -Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2C3C4
Row DD2D3D4
-

Text after table

- - -
This is data
Row 2This is dataThis is dataThis is data
Row 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B4
Row CC2 - - - - - - - - - - - -
F1F2
Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
- -
C4
Row DD2D3D4
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2C3C4
Row DD2D3D4
-
This is data
Row 4This is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B4
Row CC2 - - - - - - - - - - - -
F1F2
Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
- -
C4
Row DD2D3D4
- -
This is data
- - -
- -

 

- - -
-Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is data - -NO NESTING This is data
Row 2This is dataThis is dataThis is data
Row 3This is dataThis is dataThis is data
Row 4This is dataThis is dataThis is data
- -
- - -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - - -?> \ No newline at end of file diff --git a/mpdf/examples/example07_tables_borders.php b/mpdf/examples/example07_tables_borders.php deleted file mode 100644 index fce39e7..0000000 --- a/mpdf/examples/example07_tables_borders.php +++ /dev/null @@ -1,498 +0,0 @@ - - - - - -

mPDF

-

Tables - Borders

-

mPDF

- -Border conflict resolution in tables with border-collapse set to "collapse". mPDF follows the rules set by CSS as well as possible, but as you can see, there is some difference in interpretation of the rules: - - - - - - - - - - - - - - - - - - - - - - - - - -
mPDFInternet Explorer
IE 9
Firefox
v 32.0.3
- - - - - - - - - - - - - - - - - - - - - - -
111
111
11
111
- - - -
- - - - - - - - - - - - - - - - - - - - - -
111
111
11
111
- - -
- - - - - - - - - - - - - - - - - - - - - -
111
111
11
111
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mPDFInternet Explorer
IE 9
Firefox
v 32.0.3
- - - - - - - - - - - - - - - - - - - - - - -
111
111
11
111
- - - -
- - - - - - - - - - - - - - - - - - - - - -
111
111
11
111
- - -
- - - - - - - - - - - - - - - - - - - - - -
111
111
11
111
- - -
- - - -

mPDF

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Datadouble reddashed yellowdotted greenData
Datahidden DatanoneData
Dataridge bluenone none Data
Datanone groove pinknone Data
none inset graynone outset purplenone
- -

Firefox 32

- - -
- - -

IE 9

- - - - -
mPDF
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Datadouble reddashed yellowdotted greenData
Datahidden DatanoneData
Dataridge bluenone none Data
Datanone groove pinknone Data
none inset graynone outset purplenone
- -
Firefox 32
- - - - -
IE 9
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
- - - - - - - - - - - - - - - - -
solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
- - - - - - - - - - - - - - - - -
solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
- - - - - - - - - - - - - - - - -
solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
- - - - - - - - - - - - - - - - -
solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
- - - - - - - - - - - - - - - - -
solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
- - - -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('en-GB-x','A4','','',10,10,10,10,6,3); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - -?> \ No newline at end of file diff --git a/mpdf/examples/example08_lists.php b/mpdf/examples/example08_lists.php deleted file mode 100644 index e251bc5..0000000 --- a/mpdf/examples/example08_lists.php +++ /dev/null @@ -1,155 +0,0 @@ - -ol, ul { text-align: justify; -} - -.lista { list-style-type: upper-roman; } -.listb{ list-style-type: decimal; font-family: sans-serif; color: blue; font-weight: bold; font-style: italic; font-size: 19pt; } -.listc{ list-style-type: upper-alpha; padding-left: 25mm; } -.listd{ list-style-type: lower-alpha; color: teal; line-height: 2; } -.liste{ list-style-type: disc; } -.listarabic { direction: rtl; list-style-type: arabic-indic; font-family: dejavusanscondensed; padding-right: 40px;} - - - -

mPDF

-

Lists

- -
-
    -
  1. Text here lorem ipsum ibisque totum.
  2. -
  3. Text here lorem ipsum ibisque totum.
  4. -
  5. Text here lorem ipsum ibisque totum.
  6. -
  7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
  8. -
  9. Text here lorem ipsum ibisque totum.
  10. -
  11. Text here lorem ipsum ibisque totum. -
      -
    1. Text here lorem ipsum ibisque totum.
    2. -
    3. Text here lorem ipsum ibisque totum.
    4. -
    5. Text here lorem ipsum ibisque totum.
    6. -
    7. Text here lorem ipsum ibisque totum.
    8. -
    9. Text here lorem ipsum ibisque totum.
    10. -
    11. Text here lorem ipsum ibisque totum. -
        -
      1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum. -
      4. -
      5. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum. -
            -
          1. Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum.
          4. -
          5. Text here lorem ipsum ibisque totum.
          6. -
          7. Text here lorem ipsum ibisque totum.
          8. -
          9. Text here lorem ipsum ibisque totum.
          10. -
          -
        10. -
        11. Text here lorem ipsum ibisque totum.
        12. -
        13. Text here lorem ipsum ibisque totum.
        14. -
        15. Text here lorem ipsum ibisque totum.
        16. -
        17. Text here lorem ipsum ibisque totum.
        18. -
        -
      6. -
      7. Text here lorem ipsum ibisque totum.
      8. -
      -
    12. -
    13. Text here lorem ipsum ibisque totum.
    14. -
    15. Text here lorem ipsum ibisque totum.
    16. -
    17. Text here lorem ipsum ibisque totum.
    18. -
    19. Text here lorem ipsum ibisque totum.
    20. -
    -
  12. -
  13. Text here lorem ipsum ibisque totum.
  14. -
  15. Text here lorem ipsum ibisque totum. -
      -
    1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
    2. -
    3. Text here lorem ipsum ibisque totum.
    4. -
    5. Text here lorem ipsum ibisque totum. -
        -
      1. Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum.
      4. -
      5. Text here lorem ipsum ibisque totum.
      6. -
      7. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        -
      8. -
      9. Text here lorem ipsum ibisque totum.
      10. -
      11. Text here lorem ipsum ibisque totum.
      12. -
      13. Text here lorem ipsum ibisque totum. -
          -
        1. No class specified. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        -
      14. -
      -
    6. -
    -
  16. -
  17. Text here lorem ipsum ibisque totum.
  18. -
  19. Text here lorem ipsum ibisque totum.
  20. -
  21. Text here lorem ipsum ibisque totum.
  22. -
  23. Text here lorem ipsum ibisque totum.
  24. -
  25. Text here lorem ipsum ibisque totum.
  26. -
  27. Text here lorem ipsum ibisque totum.
  28. -
  29. Text here lorem ipsum ibisque totum.
  30. -
  31. Text here lorem ipsum ibisque totum.
  32. -
  33. Text here lorem ipsum ibisque totum.
  34. -
  35. Text here lorem ipsum ibisque totum.
  36. -
  37. Text here lorem ipsum ibisque totum.
  38. -
  39. Text here lorem ipsum ibisque totum.
  40. -
  41. Text here lorem ipsum ibisque totum.
  42. -
- -
    -
  1. للعراق ان الاولوية حاليا
  2. -
  3. للعراق ان الاولوية حاليا
  4. -
  5. للعراق ان الاولوية حاليا
  6. -
  7. للعراق ان الاولوية حاليا
  8. -
  9. للعراق ان الاولوية حاليا
  10. -
  11. للعراق ان الاولوية حاليا
  12. -
- - -
-'; -//============================================================== -//============================================================== - -//echo $html; exit; -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->list_number_suffix = ')'; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example09_forms.php b/mpdf/examples/example09_forms.php deleted file mode 100644 index 5c9190f..0000000 --- a/mpdf/examples/example09_forms.php +++ /dev/null @@ -1,192 +0,0 @@ - - -Textarea - -

- -Select - followed by text -

- - - -Input Radio - No      Yes -

- - -Input Radio - No      Keep      Choice -

- - -Input Text - -

- -Input Password - -

- - - Checkboxes
- Disabled
- Selected -

- -

- - - -
- -
-
- -Textarea - -

- - - -Select - -

- -Input Radio - No      Yes -

- - -Input Radio - No      Keep      Choice -

- - -Input Text - -
- -Input Password - -

- - Checkboxes
- Disabled
- Selected -

- -

- -
- -
-
- - -
- - - - - - - - - - - - - - - - - -
Textarea
Select
Input Radio No      Yes
Input Radio No      Keep      Choice
Input Text
- -
- - - - - - - - - - - - - - -
Checkbox
Checkboxes
Gardening
Holidays
Motoring
Books Theatre
Selected option Musicals
Eating out Events
-
-
-
- - -
- -Input Radio - No      Yes - -
- - -
-Input Radio - No      Keep      Choice - -

- - -Input Text
- -Input text:
- -Password: -

- -Checkboxes:
- Checkboxes
- Disabled
- Selected -

- - - - - -
- -'; - -//============================================================== -//============================================================== -//============================================================== - -$mpdf=new mPDF('c'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->SetColumns(2,'J'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - - -?> \ No newline at end of file diff --git a/mpdf/examples/example10_floating_and_fixed_position_elements.php b/mpdf/examples/example10_floating_and_fixed_position_elements.php deleted file mode 100644 index 8a485e3..0000000 --- a/mpdf/examples/example10_floating_and_fixed_position_elements.php +++ /dev/null @@ -1,103 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -h4 { - font-family: sans; - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.5em; -} -div { - padding:1em; - margin-bottom: 1em; - text-align:justify; -} -.myfixed1 { position: absolute; - overflow: visible; - left: 0; - bottom: 0; - border: 1px solid #880000; - background-color: #FFEEDD; - background-gradient: linear #dec7cd #fff0f2 0 1 0 0.5; - padding: 1.5em; - font-family:sans; - margin: 0; -} -.myfixed2 { position: fixed; - overflow: auto; - right: 0; - bottom: 0mm; - width: 65mm; - border: 1px solid #880000; - background-color: #FFEEDD; - background-gradient: linear #dec7cd #fff0f2 0 1 0 0.5; - padding: 0.5em; - font-family:sans; - margin: 0; - rotate: 90; -} - - - -

mPDF

-

Floating & Fixed Position elements

- -

CSS "Float"

-
-Block elements can be positioned alongside each other using the CSS property float: left or right. The clear property can also be used, set as left|right|both. Float is only supported on block elements (i.e. not SPAN etc.) and is not fully compliant with the CSS specification. -Float only works properly if a width is set for the float, otherwise the width is set to the maximum available (full width, or less if floats already set). -
-Margin-right can still be set for a float:right and vice-versa. -
-A block element next to a float has the padding adjusted so that content fits in the remaining width. Text next to a float should wrap correctly, but backgrounds and borders will overlap and/or lie under the floats in a mess. -
-NB The width that is set defines the width of the content-box. So if you have two floats with width=50% and either of them has padding, margin or border, they will not fit together on the page. -
- -
-This is text in a <div> element that is set to float:right and width:28%. It also has an image with float:right inside. With this exception, you cannot nest elements with the float property set inside one another. -
-
-This is text in a <div> element that is set to float:left and width:54%. -
- -
-This is text that follows a <div> element that is set to clear:both. - -

CSS "Position"

-At the bottom of the page are two DIV elements with position:fixed and position:absolute set - -
1 Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
- -
2 Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
- - -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example11_overflow_auto.php b/mpdf/examples/example11_overflow_auto.php deleted file mode 100644 index 6fd990f..0000000 --- a/mpdf/examples/example11_overflow_auto.php +++ /dev/null @@ -1,81 +0,0 @@ - -

mPDF

-

Fixed-position block element with Autofit

-
Using the CSS properties position and overflow:auto it is possible to fit text to a single page:
- -

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- -
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
-
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
- -
Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
- -
Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
- - - - - -
Styles - tt(teletype) italic bold big small emphasis strong
new lines
-code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
- -

Paragraph using the in-line style to determine the font-size (15pt) and colour

- -

Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

-

This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

- -

This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

The above repeated, but starting with a paragraph with font-size specified (7pt)

- -

This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

- -

This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

- -

This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

This tests underline and strikethrough when they are used together as they both use text-decoration

- -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

- -

Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

- - -'; - - - - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c'); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example12_paging_html.php b/mpdf/examples/example12_paging_html.php deleted file mode 100644 index 44c5374..0000000 --- a/mpdf/examples/example12_paging_html.php +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - -
Left header p {PAGENO}Right header
-
- - - - - - -
Outer headerInner header p {PAGENO}
-
- - - - - - - - - -

Introduction

-
Introduction
-

Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

- - - -

Section 2

-
Section 2
-

Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

- - - -

Section 3

-
Section 3
-

Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

- - - -

Section 4

-
Section 4
-

Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

- - - - - -

Section 5

-
Section 5
-

Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

- -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); -$mpdf=new mPDF('c'); - -$mpdf->mirrorMargins = true; - -$mpdf->SetDisplayMode('fullpage','two'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example13_paging_css.php b/mpdf/examples/example13_paging_css.php deleted file mode 100644 index 256a8a0..0000000 --- a/mpdf/examples/example13_paging_css.php +++ /dev/null @@ -1,94 +0,0 @@ - -
{PAGENO}
- - -
{PAGENO}
-
- -
{PAGENO}
-
- -
{PAGENO}
-
- - - - - - - -

mPDF 1

-

Paged Media using CSS

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

- - -

mPDF 2

-

Paged Media using CSS

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

- - -

mPDF 3

-

Paged Media using CSS

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

- - -

mPDF 4

-

Paged Media using CSS

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

- - -

mPDF 5

-

Paged Media using CSS

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

- - -

mPDF 6

-

Paged Media using CSS

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

- - -

mPDF 7

-

Paged Media using CSS

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

- -'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',5,5,5,5,0,0); - -$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins (1 or 0) - -$mpdf->SetDisplayMode('fullpage','two'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstylePaged.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php b/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php deleted file mode 100644 index 16e34f1..0000000 --- a/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php +++ /dev/null @@ -1,155 +0,0 @@ -Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

"; -//============================================================== -//============================================================== -//============================================================== - - -$html = ' - - - - - - - -

mPDF

-

Table of Contents & Bookmarks

- - - - -'; - -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->mirrorMargins = 1; - -$mpdf->defaultPageNumStyle = 'i'; - -$mpdf->SetDisplayMode('fullpage','two'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - - -// Alternative ways to mark ToC entries and Bookmarks -// This will automatically generate entries from the

tag -$mpdf->h2toc = array('H4'=>0); -$mpdf->h2bookmarks = array('H4'=>0); - -//============================================================== -// CONTENT -for ($j = 1; $j<7; $j++) { - if ($j==2) $mpdf->WriteHTML('',2); - if ($j==3) $mpdf->WriteHTML('',2); - if ($j==4) $mpdf->WriteHTML('',2); - if ($j==5) $mpdf->WriteHTML('',2); - if ($j==6) $mpdf->WriteHTML('
ODD
',2); - for ($x = 1; $x<7; $x++) { - - - $mpdf->WriteHTML('

Section '.$j.'.'.$x.'

',2); - - $html = ''; - // Split $lorem into words - $words = preg_split('/([\s,\.]+)/',$lorem,-1,PREG_SPLIT_DELIM_CAPTURE); - foreach($words as $i => $e) { - if($i%2==0) { - $y = rand(1,10); // every tenth word - // If it is just a word use it as an index entry - if (preg_match('/^[a-zA-Z]{4,99}$/',$e) && ($y > 8)) { - $content = trim($e); - $html .= ''; - $html .= ''.$e . ''; - } - else { $html .= $e; } - } - else { $html .= $e; } - } - $mpdf->WriteHTML($html); - } -} -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// INDEX -$html = ' - -

Index

- - -'; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example16_headers_method_2.php b/mpdf/examples/example16_headers_method_2.php deleted file mode 100644 index 8ca966d..0000000 --- a/mpdf/examples/example16_headers_method_2.php +++ /dev/null @@ -1,49 +0,0 @@ -mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins - -$header = ' - - - - -
Left header p {PAGENO}Right header
-'; -$headerE = ' - - - - -
Outer headerInner header p {PAGENO}
-'; - -$footer = ''; -$footerE = ''; - - -$mpdf->SetHTMLHeader($header); -$mpdf->SetHTMLHeader($headerE,'E'); -$mpdf->SetHTMLFooter($footer); -$mpdf->SetHTMLFooter($footerE,'E'); - - -$html = ' -

mPDF

-

Headers & Footers Method 2

-

Odd / Right page

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- -

Even / Left page

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

-'; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - -?> \ No newline at end of file diff --git a/mpdf/examples/example18_headers_method_4.php b/mpdf/examples/example18_headers_method_4.php deleted file mode 100644 index 16e8bca..0000000 --- a/mpdf/examples/example18_headers_method_4.php +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -

mPDF

-

Headers & Footers Method 4

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - -

Headers & Footers Method 4

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - - - -

Headers & Footers Method 4

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

-'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,47,47,10,10); - -$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example19_page_sizes.php b/mpdf/examples/example19_page_sizes.php deleted file mode 100644 index 6c3ca94..0000000 --- a/mpdf/examples/example19_page_sizes.php +++ /dev/null @@ -1,59 +0,0 @@ - -
 {PAGENO} 
- - -
 {PAGENO} 
-
- - -'; - -//============================================================== -$html = ' -

mPDF Page Sizes

-

Changing page (sheet) sizes within the document

-'; -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4'); - -$mpdf->WriteHTML($hhtml); - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

This should print on an A4 (portrait) sheet

'); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

This page appears just after the ToC and should print on an A4 (landscape) sheet

'); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

This should print on an A5 (landscape) sheet

'); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

This should print on an Letter sheet

'); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

This should print on a sheet 150mm x 150mm

'); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

This should print on a sheet 11.69in x 8.27in = A4 landscape

'); - - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example20_justify.php b/mpdf/examples/example20_justify.php deleted file mode 100644 index 39c9e7f..0000000 --- a/mpdf/examples/example20_justify.php +++ /dev/null @@ -1,130 +0,0 @@ -mPDF

-

Justification

- -

Tables

-

Text can be justified in table cells using in-line or stylesheet CSS. (Note that <p> tags are removed within cells along with any style definition or attributes.)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col/Row Header -

Second column header p

-
Third column header
Row header 1This is dataThis is data
Row header 2 -

This is data p

-
-

This is data

-
-

Row header 3

-
-

This is long data

-
This is data
-

Row header 4

-

<th> cell acting as header

-

Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

-

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
-

 

- -

Testing Justification with Long Words

-

http://www-950.ibm.com/software/globalization/icu/demo/converters?s=ALL&snd=4356&dnd=4356

-
Should not split
-

Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplit neque sit amet erat

-

Maecenas feugiat pede vel risus. Nulla et lectus eleifend et verylongwordthatwontsplit neque sit amet erat

- -
Non-breaking Space &nbsp;

The next example has a non-breaking space between eleifend and the very long word.

Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

Nbsp will only work in fonts that have a glyph to represent the character i.e. not in the CJK languages nor some Unicode fonts.

- - - -

Testing Justification with mixed Styles

-

This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

-

This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47 and then more text. -

-

Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text -

-

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text -

- -

This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

-

This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47 then more text. -

-

-

-Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text -

-'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -// SPACING -$mpdf->WriteHTML("

Spacing

mPDF uses both letter- and word-spacing for text justification. The default is a mixture of both, set by the configurable values jSWord and jSmaxChar. (Only word spacing is used when cursive languages such as Arabic or Indic are detected.)

"); - -$mpdf->jSWord = 0; // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character -$mpdf->jSmaxChar = 0; // Maximum spacing to allocate to character spacing. (0 = no maximum) -$mpdf->WriteHTML("
Character spacing

Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

"); - -// Back to default settings -$mpdf->jSWord = 0.4; -$mpdf->jSmaxChar = 2; -$mpdf->WriteHTML("
Word spacing

Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

"); - -$mpdf->WriteHTML("
Mixed Character and Word spacing

Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

"); - - - - -$mpdf->Output(); -exit; - - -?> \ No newline at end of file diff --git a/mpdf/examples/example21_hyphenation.php b/mpdf/examples/example21_hyphenation.php deleted file mode 100644 index ac51dfe..0000000 --- a/mpdf/examples/example21_hyphenation.php +++ /dev/null @@ -1,39 +0,0 @@ -Little Women -

Chapter One

-

Playing Pilgrims

- -

Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

Jo immediately sat up, put her hands in her pockets, and began to whistle.

Don\'t, Jo. It\'s so boyish!

That\'s why I do it.

I detest rude, unladylike girls!

I hate affected, niminy-piminy chits!

Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the `Mouse\' was the pet of the family.

As young readers like to know `how people look\', we will take this moment to give them a little sketch of the four sisters, who sat knitting away in the twilight, while the December snow fell quietly without, and the fire crackled cheerfully within. It was a comfortable room, though the carpet was faded and the furniture very plain, for a good picture or two hung on the walls, books filled the recesses, chrysanthemums and Christmas roses bloomed in the windows, and a pleasant atmosphere of home peace pervaded it.

Margaret, the eldest of the four, was sixteen, and very pretty, being plump and fair, with large eyes, plenty of soft brown hair, a sweet mouth, and white hands, of which she was rather vain. Fifteen-year-old Jo was very tall, thin, and brown, and reminded one of a colt, for she never seemed to know what to do with her long limbs, which were very much in her way. She had a decided mouth, a comical nose, and sharp, gray eyes, which appeared to see everything, and were by turns fierce, funny, or thoughtful. Her long, thick hair was her one beauty, but it was usually bundled into a net, to be out of her way. Round shoulders had Jo, big hands and feet, a fly-away look to her clothes, and the uncomfortable appearance of a girl who was rapidly shooting up into a woman and didn\'t like it. Elizabeth, or Beth, as everyone called her, was a rosy, smooth-haired, bright-eyed girl of thirteen, with a shy manner, a timid voice, and a peaceful expression which was seldom disturbed. Her father called her `Little Miss Tranquillity\', and the name suited her excellently, for she seemed to live in a happy world of her own, only venturing out to meet the few whom she trusted and loved. Amy, though the youngest, was a most important person, in her own opinion at least. A regular snow maiden, with blue eyes, and yellow hair curling on her shoulders, pale and slender, and always carrying herself like a young lady mindful of her manners. What the characters of the four sisters were we will leave to be found out.

The clock struck six and, having swept up the hearth, Beth put a pair of slippers down to warm. Somehow the sight of the old shoes had a good effect upon the girls, for Mother was coming, and everyone brightened to welcome her. Meg stopped lecturing, and lighted the lamp, Amy got out of the easy chair without being asked, and Jo forgot how tired she was as she sat up to hold the slippers nearer to the blaze.

They are quite worn out. Marmee must have a new pair.

I thought I\'d get her some with my dollar, said Beth.

No, I shall! cried Amy.

I\'m the oldest, began Meg, but Jo cut in with a decided, I\'m the man of the family now Papa is away, and I shall provide the slippers, for he told me to take special care of Mother while he was gone.

I\'ll tell you what we\'ll do, said Beth, let\'s each get her something for Christmas, and not get anything for ourselves.

That\'s like you, dear! What will we get? exclaimed Jo.

Everyone thought soberly for a minute, then Meg announced, as if the idea was suggested by the sight of her own pretty hands, I shall give her a nice pair of gloves.

Army shoes, best to be had, cried Jo.

Some handkerchiefs, all hemmed, said Beth.

I\'ll get a little bottle of cologne. She likes it, and it won\'t cost much, so I\'ll have some left to buy my pencils, added Amy.

How will we give the things? asked Meg.

Put them on the table, and bring her in and see her open the bundles. Don\'t you remember how we used to do on our birthdays? answered Jo.

I used to be so frightened when it was my turn to sit in the chair with the crown on, and see you all come marching round to give the presents, with a kiss. I liked the things and the kisses, but it was dreadful to have you sit looking at me while I opened the bundles, said Beth, who was toasting her face and the bread for tea at the same time.

Let Marmee think we are getting things for ourselves, and then surprise her. We must go shopping tomorrow afternoon, Meg. There is so much to do about the play for Christmas night, said Jo, marching up and down, with her hands behind her back, and her nose in the air.

I don\'t mean to act any more after this time. I\'m getting too old for such things, observed Meg, who was as much a child as ever about `dressing-up\' frolics.

You won\'t stop, I know, as long as you can trail round in a white gown with your hair down, and wear gold-paper jewelry. You are the best actress we\'ve got, and there\'ll be an end of everything if you quit the boards, said Jo. We ought to rehearse tonight. Come here, Amy, and do the fainting scene, for you are as stiff as a poker in that.

I can\'t help it. I never saw anyone faint, and I don\'t choose to make myself all black and blue, tumbling flat as you do. If I can go down easily, I\'ll drop. If I can\'t, I shall fall into a chair and be graceful. I don\'t care if Hugo does come at me with a pistol, returned Amy, who was not gifted with dramatic power, but was chosen because she was small enough to be borne out shrieking by the villain of the piece.

Do it this way. Clasp your hands so, and stagger across the room, crying frantically, `Roderigo` Save me! Save me! and away went Jo, with a melodramatic scream which was truly thrilling.

Amy followed, but she poked her hands out stiffly before her, and jerked herself along as if she went by machinery, and her Ow! was more suggestive of pins being run into her than of fear and anguish. Jo gave a despairing groan, and Meg laughed outright, while Beth let her bread burn as she watched the fun with interest.

It\'s no use! Do the best you can when the time comes, and if the audience laughs, don\'t blame me. Come on, Meg.

Then things went smoothly, for Don Pedro defied the world in a speech of two pages without a single break. Hagar, the witch, chanted an awful incantation over her kettleful of simmering toads, with weird effect. Roderigo rent his chains asunder manfully, and Hugo died in agonies of remorse and arsenic, with a wild, Ha! Ha!

It\'s the best we\'ve had yet, said Meg, as the dead villain sat up and rubbed his elbows.

I don\'t see how you can write and act such splendid things, Jo. You\'re a regular Shakespeare! exclaimed Beth, who firmly believed that her sisters were gifted with wonderful genius in all things.

Not quite, replied Jo modestly. I do think THE WITCHES CURSE, an Operatic Tragedy is rather a nice thing, but I\'d like to try MacBETH, if we only had a trapdoor for Banquo. I always wanted to do the killing part. `Is that a dagger that I see before me? muttered Jo, rolling her eyes and clutching at the air, as she had seen a famous tragedian do.

No, it\'s the toasting fork, with Mother\'s shoe on it instead of the bread. Beth\'s stage-struck! cried Meg, and the rehearsal ended in a general burst of laughter.

Glad to find you so merry, my girls, said a cheery voice at the door, and actors and audience turned to welcome a tall, motherly lady with a `can I help you\' look about her which was truly delightful. She was not elegantly dressed, but a noble-looking woman, and the girls thought the gray cloak and unfashionable bonnet covered the most splendid mother in the world.

Well, dearies, how have you got on today? There was so much to do, getting the boxes ready to go tomorrow, that I didn\'t come home to dinner. Has anyone called, Beth? How is your cold, Meg? Jo, you look tired to death. Come and kiss me, baby.

While making these maternal inquiries Mrs. March got her wet things off, her warm slippers on, and sitting down in the easy chair, drew Amy to her lap, preparing to enjoy the happiest hour of her busy day. The girls flew about, trying to make things comfortable, each in her own way. Meg arranged the tea table, Jo brought wood and set chairs, dropping, over-turning, and clattering everything she touched. Beth trotted to and fro between parlor kitchen, quiet and busy, while Amy gave directions to everyone, as she sat with her hands folded.

As they gathered about the table, Mrs. March said, with a particularly happy face, I\'ve got a treat for you after supper.

A quick, bright smile went round like a streak of sunshine. Beth clapped her hands, regardless of the biscuit she held, and Jo tossed up her napkin, crying, A letter! A letter! Three cheers for Father!

Yes, a nice long letter. He is well, and thinks he shall get through the cold season better than we feared. He sends all sorts of loving wishes for Christmas, and an especial message to you girls, said Mrs. March, patting her pocket as if she had got a treasure there.

Hurry and get done! Don\'t stop to quirk your little finger and simper over your plate, Amy, cried Jo, choking on her tea and dropping her bread, butter side down, on the carpet in her haste to get at the treat.

Beth ate no more, but crept away to sit in her shadowy corner and brood over the delight to come, till the others were ready.

I think it was so splendid in Father to go as chaplain when he was too old to be drafted, and not strong enough for a soldier, said Meg warmly.

Don\'t I wish I could go as a drummer, a vivan—what\'s its name? Or a nurse, so I could be near him and help him, exclaimed Jo, with a groan.

It must be very disagreeable to sleep in a tent, and eat all sorts of bad-tasting things, and drink out of a tin mug, sighed Amy.

When will he come home, Marmee? asked Beth, with a little quiver in her voice.

Not for many months, dear, unless he is sick. He will stay and do his work faithfully as long as he can, and we won\'t ask for him back a minute sooner than he can be spared. Now come and hear the letter.

They all drew to the fire, Mother in the big chair with Beth at her feet, Meg and Amy perched on either arm of the chair, and Jo leaning on the back, where no one would see any sign of emotion if the letter should happen to be touching. Very few letters were written in those hard times that were not touching, especially those which fathers sent home. In this one little was said of the hardships endured, the dangers faced, or the homesickness conquered. It was a cheerful, hopeful letter, full of lively descriptions of camp life, marches, and military news, and only at the end did the writer\'s heart over-flow with fatherly love and longing for the little girls at home.

Give them all of my dear love and a kiss. Tell them I think of them by day, pray for them by night, and find my best comfort in their affection at all times. A year seems very long to wait before I see them, but remind them that while we wait we may all work, so that these hard days need not be wasted. I know they will remember all I said to them, that they will be loving children to you, will do their duty faithfully, fight their bosom enemies bravely, and conquer themselves so beautifully that when I come back to them I may be fonder and prouder than ever of my little women.

Everybody sniffed when they came to that part. Jo wasn\'t ashamed of the great tear that dropped off the end of her nose, and Amy never minded the rumpling of her curls as she hid her face on her mother\'s shoulder and sobbed out, I am a selfish girl! But I\'ll truly try to be better, so he mayn\'t be disappointed in me by-and-by.

We all will, cried Meg. I think too much of my looks and hate to work, but won\'t any more, if I can help it.

I\'ll try and be what he loves to call me, `a little woman\' and not be rough and wild, but do my duty here instead of wanting to be somewhere else, said Jo, thinking that keeping her temper at home was a much harder task than facing a rebel or two down South.

Beth said nothing, but wiped away her tears with the blue army sock and began to knit with all her might, losing no time in doing the duty that lay nearest her, while she resolved in her quiet little soul to be all that Father hoped to find her when the year brought round the happy coming home.

Mrs. March broke the silence that followed Jo\'s words, by saying in her cheery voice, Do you remember how you used to play Pilgrims Progress when you were little things? Nothing delighted you more than to have me tie my piece bags on your backs for burdens, give you hats and sticks and rolls of paper, and let you travel through the house from the cellar, which was the City of Destruction, up, up, to the housetop, where you had all the lovely things you could collect to make a Celestial City.

What fun it was, especially going by the lions, fighting Apollyon, and passing through the valley where the hob-goblins were, said Jo.

I liked the place where the bundles fell off and tumbled downstairs, said Meg.

I don\'t remember much about it, except that I was afraid of the cellar and the dark entry, and always liked the cake and milk we had up at the top. If I wasn\'t too old for such things, I\'d rather like to play it over again, said Amy, who began to talk of renouncing childish things at the mature age of twelve.

We never are too old for this, my dear, because it is a play we are playing all the time in one way or another. Out burdens are here, our road is before us, and the longing for goodness and happiness is the guide that leads us through many troubles and mistakes to the peace which is a true Celestial City. Now, my little pilgrims, suppose you begin again, not in play, but in earnest, and see how far on you can get before Father comes home.

Really, Mother? Where are our bundles? asked Amy, who was a very literal young lady.

Each of you told what your burden was just now, except Beth. I rather think she hasn\'t got any, said her mother.

Yes, I have. Mine is dishes and dusters, and envying girls with nice pianos, and being afraid of people.

Beth\'s bundle was such a funny one that everybody wanted to laugh, but nobody did, for it would have hurt her feelings very much.

Let us do it, said Meg thoughtfully. It is only another name for trying to be good, and the story may help us, for though we do want to be good, it\'s hard work and we forget, and don\'t do our best.

We were in the Slough of Despond tonight, and Mother came and pulled us out as Help did in the book. We ought to have our roll of directions, like Christian. What shall we do about that? asked Jo, delighted with the fancy which lent a little romance to the very dull task of doing her duty.

Look under your pillows Christmas morning, and you will find your guidebook, replied Mrs. March.

They talked over the new plan while old Hannah cleared the table, then out came the four little work baskets, and the needles flew as the girls made sheets for Aunt March. It was uninteresting sewing, but tonight no one grumbled. They adopted Jo\'s plan of dividing the long seams into four parts, and calling the quarters Europe, Asia, Africa, and America, and in that way got on capitally, especially when they talked about the different countries as they stitched their way through them.

At nine they stopped work, and sang, as usual, before they went to bed. No one but Beth could get much music out of the old piano, but she had a way of softly touching the yellow keys and making a pleasant accompaniment to the simple songs they sang. Meg had a voice like a flute, and she and her mother led the little choir. Amy chirped like a cricket, and Jo wandered through the airs at her own sweet will, always coming out at the wrong place with a croak or a quaver that spoiled the most pensive tune. They had always done this from the time they could lisp . . . Crinkle, crinkle, \'ittle \'tar, and it had become a household custom,, for the mother was a born singer. The first sound in the morning was her voice as she went about the house singing like a lark, and the last sound at night was the same cheery sound, for the girls never grew too old for that familiar lullaby.'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$stylesheet .= ' -p { hyphens: auto; } -'; -$mpdf->WriteHTML($stylesheet,1); - -$mpdf->WriteHTML('

Automatic Hyphenation

'); - -$mpdf->SetColumns(4,'J'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example22_columns.php b/mpdf/examples/example22_columns.php deleted file mode 100644 index 6b9aac5..0000000 --- a/mpdf/examples/example22_columns.php +++ /dev/null @@ -1,80 +0,0 @@ -mPDF -

Columns

-'; -//============================================================== - -$loremH = "

Lectus facilisis

-

Sed auctor viverra diam. In lacinia lectus.

-

Praesent tincidunt massa in dolor. Morbi viverra leo quis ipsum. In vitae velit. In aliquam nulla nec mi. Sed accumsan, justo id congue fringilla, diam mauris volutpat ligula, sed aliquet elit diam at felis. Quisque et velit sed eros convallis posuere.

-
Nunc tincidunt
-

Nunc diam ipsum, consectetuer nec, hendrerit vitae, malesuada a, ante. Nulla ornare aliquet ante. Maecenas in lectus. Morbi porttitor mauris. Praesent ut.

-

Pede quis ante tincidunt blandit. Maecenas bibendum erat. Curabitur sit amet ante quis velit ultricies facilisis. Ut hendrerit dolor commodo magna. In nec ligula a purus tincidunt adipiscing. Etiam non ante.

Suspendisse potenti. Suspendisse accumsan euismod lectus. Nunc commodo pede et turpis. Pellentesque porta mauris sed lorem. Ut nec augue vitae elit eleifend eleifend.Quisque ornare feugiat diam. Duis nulla metus, tempus sit amet, scelerisque a, rutrum at, nisl. Nulla facilisi. Duis metus turpis, molestie nec, laoreet tincidunt, ultrices et, purus. Nullam faucibus aliquam nisi.

Ut leo. Etiam tempus interdum tortor. Donec porta, arcu vel tincidunt placerat, lacus lorem iaculis diam, id sagittis sapien metus eu nunc. Morbi vitae nunc.
Mauris sapien. Phasellus elementum velit sed sapien. Nullam ante diam, consectetuer commodo, dignissim vitae, tempor vel, magna. Donec dictum. Nullam ultrices leo volutpat magna. Mauris blandit purus nec turpis. Curabitur nunc. Aliquam condimentum eleifend32 lectus. Praesent vitae nibh et libero ullamcorper scelerisque. Nullam auctor. Mauris ipsum nulla, malesuada id, aliquet at, feugiat vitae, eros.

- -
Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. -
Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
- Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
-

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-"; - - - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -// Bullets in columns are probably best not indented -$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list - -$mpdf->max_colH_correction = 1.1; - - - $mpdf->WriteHTML($html,2); - $mpdf->WriteHTML($loremH,2); - - // consider reducing lineheight when using columns - especially if vAligned justify - $mpdf->SetDefaultBodyCSS('line-height', 1.2); - - $mpdf->SetColumns(3,'J'); - $mpdf->WriteHTML($loremH,2); - - $mpdf->SetColumns(0); - $mpdf->WriteHTML('
'); - - - $mpdf->SetColumns(2,'J'); - $mpdf->WriteHTML($loremH,2); - $mpdf->WriteHTML('
'); - $mpdf->SetColumns(0); - $mpdf->WriteHTML('
'); - - $mpdf->SetColumns(3,'J'); - $mpdf->WriteHTML($loremH,2); - - $mpdf->SetColumns(0); - $mpdf->WriteHTML('
'); - $mpdf->SetColumns(2,'J'); - $mpdf->WriteHTML($loremH,2); - - - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example23_orientation.php b/mpdf/examples/example23_orientation.php deleted file mode 100644 index 88ecb2b..0000000 --- a/mpdf/examples/example23_orientation.php +++ /dev/null @@ -1,132 +0,0 @@ -mPDF -

Page Orientation

- -

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

-

Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

-

Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

- -
- -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - - -$mpdf=new mPDF('c','A4','','',42,15,67,67,20,15); - -$mpdf->SetDisplayMode('fullpage','two'); - -$mpdf->mirrorMargins = 1; - - -$header = ' - - - - -
Left header p {PAGENO}Right header
-'; -$headerE = ' - - - - -
Outer headerInner header p {PAGENO}
-'; -$longfooter = ' - - - - -
Left footer p {PAGENO}Right footer
-'; -$longfooterE = ' - - - - -
Outer footerInner footer p {PAGENO}
-'; - -$footer = '
{DATE j-m-Y} » {PAGENO} » My document
'; -$footerE = '
Even page footer - {PAGENO} -
'; - -$shortheader = '
{DATE j-m-Y} » {PAGENO} » My document
'; -$shortheaderE = '
Even page header - {PAGENO} -
'; - - -$mpdf->SetHTMLHeader($header); -$mpdf->SetHTMLHeader($headerE,'E'); -$mpdf->setFooter('{PAGENO} of {nbpg} pages||{PAGENO} of {nbpg} pages') ; - - -$mpdf->WriteHTML($html); - - -$mpdf->setHeader(); // Clear headers before adding page -$mpdf->AddPage('L','','','','',25,25,55,45,18,12); - -$mpdf->SetHTMLHeader($shortheader,'',true); // New parameter in v1.4 to add the header to the new page -$mpdf->SetHTMLHeader($shortheaderE,'E',true); -$mpdf->SetHTMLFooter($longfooter); -$mpdf->SetHTMLFooter($longfooterE,'E'); - - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - - - -$mpdf->setHeader('{PAGENO} of {nbpg} pages||{PAGENO} of {nbpg} pages') ; -$mpdf->SetHTMLFooter($footer); -$mpdf->SetHTMLFooter($footerE,'E'); - - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - - -$mpdf->setHeader(); // Clear headers before adding page -$mpdf->AddPage('','','','','',42,15,67,67,20,15); // Default is Portrait (because that was the document default) - - -$mpdf->SetHTMLHeader($shortheader,'',true); // true adds the header to the new page -$mpdf->SetHTMLHeader($shortheaderE,'E',true); -$mpdf->SetHTMLFooter($longfooter); -$mpdf->SetHTMLFooter($longfooterE,'E'); - - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - - -$mpdf->SetHTMLHeader($header); -$mpdf->SetHTMLHeader($headerE,'E'); -$mpdf->SetHTMLFooter($footer); -$mpdf->SetHTMLFooter($footerE,'E'); - - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - - -$mpdf->Output('mpdf.pdf','I'); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example24_orientation_2.php b/mpdf/examples/example24_orientation_2.php deleted file mode 100644 index 1cbbfda..0000000 --- a/mpdf/examples/example24_orientation_2.php +++ /dev/null @@ -1,200 +0,0 @@ -mPDF -

Page Orientation

- -

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

-

Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

-

Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - -'; - -$htmlL = ' -
Table in Landscape
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDetailsNotes
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti. Fusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
MechanismsFusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
-Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti. Fusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
MechanismsFusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
-Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti. Fusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
MechanismsFusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
-Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti. Fusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
MechanismsFusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
-Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti. Fusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
MechanismsFusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
-Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
-'; - -//============================================================== - -$loremH = "

Lectus facilisis

-

Sed auctor viverra diam. In lacinia lectus.

-

Praesent tincidunt massa in dolor. Morbi viverra leo quis ipsum. In vitae velit. In aliquam nulla nec mi. Sed accumsan, justo id congue fringilla, diam mauris volutpat ligula, sed aliquet elit diam at felis. Quisque et velit sed eros convallis posuere.

-
Nunc tincidunt
-

Nunc diam ipsum, consectetuer nec, hendrerit vitae, malesuada a, ante. Nulla ornare aliquet ante. Maecenas in lectus. Morbi porttitor mauris. Praesent ut.

-

Pede quis ante tincidunt blandit. Maecenas bibendum erat. Curabitur sit amet ante quis velit ultricies facilisis. Ut hendrerit dolor commodo magna. In nec ligula a purus tincidunt adipiscing. Etiam non ante.

Suspendisse potenti. Suspendisse accumsan euismod lectus. Nunc commodo pede et turpis. Pellentesque porta mauris sed lorem. Ut nec augue vitae elit eleifend eleifend. Quisque ornare feugiat diam. Duis nulla metus, tempus sit amet, scelerisque a, rutrum at, nisl. Nulla facilisi. Duis metus turpis, molestie nec, laoreet tincidunt, ultrices et, purus. Nullam faucibus aliquam nisi.

Ut leo. Etiam tempus interdum tortor. Donec porta, arcu vel tincidunt placerat, lacus lorem iaculis diam, id sagittis sapien metus eu nunc. Morbi vitae nunc.
Mauris sapien. Phasellus elementum velit sed sapien. Nullam ante diam, consectetuer commodo, dignissim vitae, tempor vel, magna. Donec dictum. Nullam ultrices leo volutpat magna. Mauris blandit purus nec turpis. Curabitur nunc. Aliquam condimentum eleifend32 lectus. Praesent vitae nibh et libero ullamcorper scelerisque. Nullam auctor. Mauris ipsum nulla, malesuada id, aliquet at, feugiat vitae, eros.

- -
Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

-"; - -//============================================================== -$header = ' - - - - -
Left header p {PAGENO}Right header
-'; -$headerE = ' - - - - -
Outer headerInner header p {PAGENO}
-'; -$header = '
{DATE j-m-Y} » {PAGENO} » My document
My document
See documentation manual
My document
'; -$headerE = '
Even page footer - {PAGENO} -
My document
My document
My document
'; -$footer = '
{DATE j-m-Y} » {PAGENO} » My document
My document
See documentation manual
My document
'; -$footerE = '
Even page footer - {PAGENO} -
My document
My document
My document
'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - - -$mpdf=new mPDF('c','A4','','',42,15,57,57,20,17); - -$mpdf->displayDefaultOrientation = true; - -$mpdf->forcePortraitHeaders = true; -$mpdf->forcePortraitMargins = true; - -$mpdf->SetDisplayMode('fullpage','two'); - -$mpdf->mirrorMargins = 1; - -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); - -$mpdf->SetHTMLHeader($header); -$mpdf->SetHTMLHeader($headerE,'E'); -$mpdf->SetHTMLFooter($footer); -$mpdf->SetHTMLFooter($footerE,'E'); - -$mpdf->WriteHTML($html); - -$mpdf->AddPage('L'); - -$mpdf->WriteHTML($htmlL); -$mpdf->WriteHTML($htmlL); - -// Columns -$mpdf->AddPage('L'); -$mpdf->SetColumns(3,'J'); -$mpdf->WriteHTML($loremH); - -$mpdf->SetColumns(0); -$mpdf->WriteHTML('
'); - - -$mpdf->SetColumns(2,'J'); -$mpdf->WriteHTML($loremH); -$mpdf->WriteHTML('
'); -$mpdf->SetColumns(0); - -$mpdf->AddPage('L'); - -$mpdf->WriteHTML($htmlL); -$mpdf->WriteHTML($htmlL); - -$mpdf->AddPage(); - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example26_RTL.php b/mpdf/examples/example26_RTL.php deleted file mode 100644 index 08906c2..0000000 --- a/mpdf/examples/example26_RTL.php +++ /dev/null @@ -1,363 +0,0 @@ - -div.mpdf_index_main { - font-family: xbriyaz; -} -div.mpdf_index_entry { - font-family: xbriyaz; -} -div.mpdf_index_letter { - font-family: xbriyaz; -} - - - -

mPDF

-

RTL Languages

- -

English

-

Please note that I do not understand any of the scripts below. The texts are borrowed from News websites, and I have used words and bits of phrases just to demonstrate the program.‎

- -

Hebrew (pangram)‎

-

דג סקרן שט בים מאוכזב ולפתע מצא חברה

- -

או הנסה אלהים, לבוא לקחת לו גוי מקרב גוי, במסת באתת ובמופתים ובמלחמה וביד חזקה ובזרוע נטויה, ובמוראים גדלים: ככל אשר-עשה לכם יהוה אלהיכם, במצרים--לעיניך

- -

לכן חכו לי נאם יהוה ליום קומי לעד, כי משפטי לאסף גוים לקבצי ממלכות, לשפך עליהם זעמי כל חרון אפי, כי באש קנאתי תאכל כל הארץ

- -

שפן אכל קצת גזר בטעם חסה, ודי.

- - - - - -

Arabic

-

الامريكي جورج بوش في حديث متلفز - في الذكرى الرابعة للغزو الامريكي للعراق ان الاولوية حاليا لاعادة الامن للعراق.

- - -

هل ستسفر الجهود الدبلوماسية الجارية عن حلول؟ وكيف تنظر للاتهامات لبعض هذه الدول بالتدخل في الشأن العراقي، والتورط في دعم عمليات العنف؟ والى اي مدى يبدو الوضع في العراق انعكاسا للصراعات الإقليمية في المنطقة؟

- -

وادان البيت الابيض "بشدة" تفجير ايلات فيما اعربت وزارة الخارجية الروسية عن "ادانتها الشديدة" للحادث" واصفة اياه بـ"المتطرف" الذي استهدف "مدنيين مسالمين".

- -

واضافت وزارة الخارجية الروسية في بيانها: "من المؤسف ان يأتي هذا الحادث بينما تبذل الجهود لتخطي الازمة الفلسطينية الداخلية".

- -

ودعت موسكو السلطات الفلسطينية الى "بذل كل ما يمكن من اجل احتواء مظاهر التطرف التي لا مبرر لها والتي لا تفيد مصالح الشعب الفلسطيني على الامد الطويل".

- -

ودعت موسكو السلطات الفلسطينية الى "بذل كل ما ودعت موسكو السلطات الفلسطينية الى "بذل كل

-

-ودعت موسكو السلطات الفلسطينية الى ودعت موسكو السلطات الفلسطينية الى "بذل كل ما يمكن من اجل

- - -

كما ادان الفارو دي سوتو مبعوث الامم المتحدة الخاص الى الشرق الاوسط العملية وقال "انه كان هجوما على اشخاص عاديين كانوا يقومون بنشاطهم اليومي وهذا امر لا يمكن تبريره".

- -

Farsi / Persian (fa)‎

-

محمد البرادعی رئيس آژانس بين المللی انرژی اتمی پيشنهاد کرده است تهران برنامه جنجالی غنی سازی اورانيوم را متوقف کند و غرب نيز اجرای تحريم های تنبيهی مورد تائيد سازمان ملل متحد را به تعويق بياندازد.

- -

جورج بوش، در چهارمین سالگرد اشغال عراق می گوید استراتژی استقرار نیروهای آمریکایی بیشتری در بغداد، مدتی طول خواهد کشید.

- -

آمریکا ویزای رئیس جمهور ایران را به منظور حضور وی در جلسه رای گیری شورای امنیت برای قطعنامه تازه علیه این کشور صادر کرد.

- - -

Urdu

-

جسٹس افتخار کی جبری رخصت پر لاہورہائی کورٹ کے ایک اور سندھ میں کئی سول جج مستعفی ہوگئے ہیں۔

- -

چیف جسٹس کی سرگرمیاں محدود کرنے اور پولیس تعیناتی کے حکم نامے پر دستخط کرکے غلط کیا: جنرل مشرف

- -

‪Pashto (ps)‬

-

په کابل او کندهار کې دوو ځانمرگو بريدونو لږ تر لږه يو ماشوم وژلى او اته تنه نور ىې ټپيان کړي.

- -

ه عراق کې يوه تازه نظر شمېرنه ښيي چې عراقيان په زياتېدونکي توگه د حالاتو په اړه بدبينه دي او د بې باوري احساس کوي، خو خپل هيواد يوموټى غواړي.

- - -

Symbols

-

©®™µ•…′″§<>≤≥°−±÷⁄׃∫∑∞√≈≠≡∏¬∩∂

-

ΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ

-

αβγδεζηθικλμνξοπρςστυφχψω

-

←↑→↓↔◊♣♥♦

- -

Dingbats

-

§<>→↔♣♥♦

- -

win-1252

-

¢€©®™‰µ·•…§ß‹›«»‘’“”‚„<>–—ˆ˜°±÷×¼½¾ƒ¬†‡

-

ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØŒŠÙÚÛÜÝŸ

-

àáâãäåæçèéêëìíîïðñòôõöøœšùúûüýþÿ

- -

Bidirectional text

-
-

Text alignment, unless specified, is neutral and therefore dictated by the \'direction\' of the paragraph.

- -

Ttext is analysed at the end of every block element (div, p, td). If the text contains RTL characters, those characters and words are reversed according to the Unicode BiDirectional algorithm e.g.

- -

وادان البيت الابيض "بشدة" تفجير with some english in the middle ايلات فيما اعربت وزارة

- -

To set the \'directionality\' of the whole document e.g. to reverse default alignment, tables, lists etc. you can set the dir attribute or the direction CSS property on the HTML or BODY tag to \'rtl\' e.g.

-

<body style="direction: rtl">

-

<body dir="rtl">

-

or you can use $mpdf->SetDirectionality(\'rtl\');

-
- -
-The document now has a baseline direction; this determines the:
-- text-alignment in blocks for which text-align has not been specifically set
-- layout of mirrored page-margins, columns, ToC and Indexes, headers and footers
-- base direction can be set by any of:
-	- $mpdf->SetDirectionality(\'rtl\');
-	- <html dir="rtl" or style="direction: rtl;">
-	- <body dir="rtl" or style="direction: rtl;">
-Base direction is an inherited CSS property, so will affect all content, unless...
-- direction can be set for all HTML block elements e.g. 
-	<DIV><P><TABLE><TD><UL><LI> etc using
-	- CSS property < style="direction: rtl;"> 
-NOTE
-- block/table margins/paddings are NOT reversed by direction
-	NB mPDF <5.1 reversed the margins/paddings for blocks when RTL set.
-- language (either CSS "lang", using Autofont, or through initial set-up e.g. $mpdf = new mPDF(\'ar\') ) 
-	no longer affects direction in any way.
-	- config_cp.php has been changed as a result; any values of "dir" set here are now ineffective
-- default text-align is now as per CSS spec: "a nameless value which is dependent on direction" 
-	NB default text-align removed from default stylesheet in config.php 
-- once text-align is specified, it is respected and inherited
-	NB mPDF <5.1 reversed the text-align property for all blocks when RTL set.
-- the configurable value is depracated, as it is no longer required
-- the algorithm for handling bidirectioal text was substantially re-written/improved in mPDF v 6.0
-
-
- - -

Tables

-

Tables are automatically transposed when the direction is rtl:‎

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
الامريكي -

الامريكي

-
الامريكي
قالالرئيسالرئيس
قال -

قال الرئيس الامريكي جورج بوش في حديث متلفز

-
-

قال الرئيس الامريكي جورج بوش في حديث متلفز

-
-

قال

-
-

الرئيس

-
الرئيس
-

قال

-

الرئيس

-
الرئيس -

الرئيس

-
قالالرئيسالرئيس
قالالرئيسالرئيس
قالالرئيسالرئيس
قالالرئيسالرئيس
-

 

-

Lists

-

Lists will automatically reverse as well (note the use of list-style to set numbering):‎

-
-
    -
  1. قال الرئيس
  2. -
  3. الامريكي -
    • جورج بوش في جورج بوش في جورج بوش في جورج بوش في جورج بوش في جورج
    • -
    • حديث متلفز -
        -
      • في الذكرى الرابعة
      • -
      • للغزو الامريكي
      • -
      -
    • -
  4. -
  5. للعراق ان الاولوية حاليا
  6. -
  7. لاعادة الامن للعراق
  8. -
-
-'; - -//============================================================== - // Set Header and Footer - $h = array ( - 'odd' => - array ( - 'R' => - array ( - 'content' => '{PAGENO}', - 'font-size' => 8, - 'font-style' => 'B', - ), - 'L' => - array ( - 'content' => "\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", - 'font-size' => 8, - 'font-style' => 'B', - ), - 'line' => 1, - ), - 'even' => - array ( - 'L' => - array ( - 'content' => '{PAGENO}', - 'font-size' => 8, - 'font-style' => 'B', - ), - 'R' => - array ( - 'content' => "\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", - 'font-size' => 8, - 'font-style' => 'B', - ), - 'line' => 1, - ), -); - - $f = array ( - 'odd' => - array ( - 'L' => - array ( - 'content' => '{DATE Y-m-d}', - 'font-size' => 8, - 'font-style' => 'BI', - ), - 'C' => - array ( - 'content' => '- {PAGENO} -', - 'font-size' => 8, - ), - 'R' => - array ( - 'content' => "\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", - 'font-size' => 8, - ), - 'line' => 1, - ), - 'even' => - array ( - 'L' => - array ( - 'content' => "\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", - 'font-size' => 8, - 'font-style' => 'B', - ), - 'C' => - array ( - 'content' => '- {PAGENO} -', - 'font-size' => 8, - ), - 'R' => - array ( - 'content' => '{DATE Y-m-d}', - 'font-size' => 8, - 'font-style' => 'BI', - ), - 'line' => 1, - ), -); - -//============================================================== -// Create Index entries from random words in $html - // Split $html into words - $a =preg_split('/<(.*?)>/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE); - $html = ''; - foreach($a as $i => $e) { - if($i%2==0) { - - $words = preg_split('/([\s,\.]+)/',$e,-1,PREG_SPLIT_DELIM_CAPTURE); - foreach($words as $w) { - - $y = rand(1,10); // every tenth word - // If it is just a word use it as an index entry - if (preg_match("/^(&#x[0]{0,1}6[0-9a-f][0-9a-f];){4,30}$/i",$w) && ($y > 8)) { - $content = trim($w); - $html .= ''; - } - $html .= $w; - } - } - else { $html .= '<'.$e.'>'; } - } -//============================================================== -//============================================================== -include("../mpdf.php"); - - -$mpdf=new mPDF('','A4','','',32,25,27,25,16,13); - -$mpdf->SetDirectionality('rtl'); -$mpdf->mirrorMargins = true; -$mpdf->SetDisplayMode('fullpage','two'); - -$mpdf->autoLangToFont = true; - -$mpdf->defaultPageNumStyle = 'arabic-indic'; - -$mpdf->setHeader($h); -$mpdf->setFooter($f); - -$mpdf->debug = true; - -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); -$mpdf->AddPage(); - -$mpdf->SetColumns(2,'J'); -$mpdf->WriteHTML($html); -$mpdf->SetColumns(0); - - -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// INDEX -$html = ' - -

Index

- - -'; - -$mpdf->WriteHTML($html); -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example27_CJK_using_Adobe_fonts.php b/mpdf/examples/example27_CJK_using_Adobe_fonts.php deleted file mode 100644 index 6fca629..0000000 --- a/mpdf/examples/example27_CJK_using_Adobe_fonts.php +++ /dev/null @@ -1,85 +0,0 @@ - -p { text-align: justify; } -td { text-align: justify; } - -

mPDF

-

CJK Languages

- - - - -

Japanese (pangrams)

-
Iroha Uta
- -

いろはにほへと ちりぬるを わかよたれそ つねならむ うゐのおくやま けふこえて あさきゆめみし ゑひもせす

- -

色は匂へど 散りぬるを 我が世誰ぞ 常ならむ 有為の奥山 今日越えて 浅き夢見じ 酔ひもせず(ん)

- -
Tori Naku Uta
- -

とりなくこゑす ゆめさませ みよあけわたる ひんかしを そらいろはえて おきつへに ほふねむれゐぬ もやのうち

- -

鳥啼く声す 夢覚ませ 見よ明け渡る 東を 空色栄えて 沖つ辺に 帆船群れゐぬ 靄の中

- -
Ametsuchi No Uta
- -

あめ つち ほし そら / やま かは みね たに / くも きり むろ こけ / ひと いぬ うへ すゑ / ゆわ さる おふ せよ / えのえ*を なれ ゐて

- -

天 地 星 空 / 山 川 峰 谷 / 雲 霧 室 苔 / 人 犬 上 末 / 硫黄 猿 生ふ 為よ / 榎の 枝を 馴れ 居て

- -
Taini no Uta
- -

たゐにいて なつむわれをそ きみめすと あさりおひゆく やましろの うちゑへるこら もはほせよ えふねかけぬ

- -

田居に出で 菜摘むわれをぞ 君召すと 求食り追ひゆく 山城の 打酔へる子ら 藻葉干せよ え舟繋けぬ

- - - -

Chinese (simplified) GB2312

- -

来自商务部新闻办公室的消息称,中方免除与中国有外交关系的所有非洲重债穷国及最不发达国家截至2005年底对华到期政府无息贷款债务。有关部门已对相关债务进行全面清理核对,对与中国有外交关系的33个非洲重债穷国和最不发达国家,免除其截至2005年底168笔对华到期无息贷款债务。拟于2007年底前与受援国办理完免债协议。

- - - -

Chinese (Traditional - Hong Kong)

- -

「憂鬱小王子」是一個教育網站,它成功結合了香港賽馬會防止自殺研究中心各方面的專才,為青少年人提供精神健康的訊息,對普及抑鬱症知識的貢獻良多。在香港,它曾獲選為「2004年十大健康網站」之一,該項選舉自2005年起改名現時的「優秀網站選舉」。其貢獻在國際間亦備受肯定,2005年,該網站榮獲第八屆「亞洲創新大獎」銀獎。

- - - - -

Korean

-

키스의 고유조건은 입술끼리 만나야 하고 특별한 기술은 필요치 않다.

- - - -'; -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('+aCJK','A4','','',32,25,27,25,16,13); -$mpdf->SetDisplayMode('fullpage'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->autoLangToFont = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example28_CJK_using_embedded_fonts.php b/mpdf/examples/example28_CJK_using_embedded_fonts.php deleted file mode 100644 index 49db78d..0000000 --- a/mpdf/examples/example28_CJK_using_embedded_fonts.php +++ /dev/null @@ -1,85 +0,0 @@ - -p { text-align: justify; } -td { text-align: justify; } - -

mPDF

-

CJK Languages

- - - - -

Japanese (pangrams)

-
Iroha Uta
- -

いろはにほへと ちりぬるを わかよたれそ つねならむ うゐのおくやま けふこえて あさきゆめみし ゑひもせす

- -

色は匂へど 散りぬるを 我が世誰ぞ 常ならむ 有為の奥山 今日越えて 浅き夢見じ 酔ひもせず(ん)

- -
Tori Naku Uta
- -

とりなくこゑす ゆめさませ みよあけわたる ひんかしを そらいろはえて おきつへに ほふねむれゐぬ もやのうち

- -

鳥啼く声す 夢覚ませ 見よ明け渡る 東を 空色栄えて 沖つ辺に 帆船群れゐぬ 靄の中

- -
Ametsuchi No Uta
- -

あめ つち ほし そら / やま かは みね たに / くも きり むろ こけ / ひと いぬ うへ すゑ / ゆわ さる おふ せよ / えのえ*を なれ ゐて

- -

天 地 星 空 / 山 川 峰 谷 / 雲 霧 室 苔 / 人 犬 上 末 / 硫黄 猿 生ふ 為よ / 榎の 枝を 馴れ 居て

- -
Taini no Uta
- -

たゐにいて なつむわれをそ きみめすと あさりおひゆく やましろの うちゑへるこら もはほせよ えふねかけぬ

- -

田居に出で 菜摘むわれをぞ 君召すと 求食り追ひゆく 山城の 打酔へる子ら 藻葉干せよ え舟繋けぬ

- - - -

Chinese (simplified) GB2312

- -

来自商务部新闻办公室的消息称,中方免除与中国有外交关系的所有非洲重债穷国及最不发达国家截至2005年底对华到期政府无息贷款债务。有关部门已对相关债务进行全面清理核对,对与中国有外交关系的33个非洲重债穷国和最不发达国家,免除其截至2005年底168笔对华到期无息贷款债务。拟于2007年底前与受援国办理完免债协议。

- - - -

Chinese (Traditional - Hong Kong)

- -

「憂鬱小王子」是一個教育網站,它成功結合了香港賽馬會防止自殺研究中心各方面的專才,為青少年人提供精神健康的訊息,對普及抑鬱症知識的貢獻良多。在香港,它曾獲選為「2004年十大健康網站」之一,該項選舉自2005年起改名現時的「優秀網站選舉」。其貢獻在國際間亦備受肯定,2005年,該網站榮獲第八屆「亞洲創新大獎」銀獎。

- - - - -

Korean

-

키스의 고유조건은 입술끼리 만나야 하고 특별한 기술은 필요치 않다.

- - - -'; -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('-aCJK','A4','','',32,25,27,25,16,13); -$mpdf->SetDisplayMode('fullpage'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->autoLangToFont = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example29_multilingual_autofont.php b/mpdf/examples/example29_multilingual_autofont.php deleted file mode 100644 index 6663327..0000000 --- a/mpdf/examples/example29_multilingual_autofont.php +++ /dev/null @@ -1,392 +0,0 @@ - - -body { font-family: sans; text-align: justify; } -p { font-family: sans; } -div { font-family: sans; } - - - -

This document includes many languages. Selection of appropriate fonts is done automatically by using AutoFont.

-

Pangrams - (from Wikipedia)

-

The quick brown fox jumps over a lazy dog

- -

Bulgarian

-

Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.

- -

За миг бях в чужд плюшен скърцащ фотьойл.

- -

Catalan

-

Jove xef, porti whisky amb quinze glaçons d\'hidrogen, coi!

- -

Aqueix betzol, Jan, comprava whisky de figa

- -

Czech

-

Příliš žluťoučký kůň úpěl ďábelské ódy

- -

Danish

-

Høj bly gom vandt fræk sexquiz på wc

- -

Dutch

-

Doch Bep, flink sexy qua vorm, zwijgt

- -

Pa\'s wijze lynx bezag vroom het fikse aquaduct

- -

Finnish

-

Törkylempijä vongahdus

- -

French

-

Portez ce vieux whisky au juge blond qui fume

- -

Bâchez la queue du wagon-taxi avec les pyjamas du fakir

- -

Voyez le brick géant que j\'examine près du wharf

- -

German

-

Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich

- -

"Fix, Schwyz!" quäkt Jürgen blöd vom Paß

- -

"Falsches Üben von Xylophonmusik quält jeden größeren Zwerg"

- -

Hungarian

-

Egy hűtlen vejét fülöncsípő, dühös mexikói úr Wesselényinél mázol Quitóban.

- -

Icelandic

-

Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa

- -

Irish

-

D\'fhuascail Íosa Úrmhac na hÓighe Beannaithe pór Éava agus Ádhaimh

- -

D\'ḟuascail Íosa Úrṁac na hÓiġe Beannaiṫe pór Éaḃa agus Áḋaiṁ

- -

Italian

-

"Quel fez sghembo copre davanti"

- -

"Ma la volpe col suo balzo ha raggiunto il quieto Fido"

- -

"Quel vituperabile xenofobo zelante assaggia il whisky ed esclama: alleluja!"

- -

Lithuanian

-

Įlinkdama fechtuotojo špaga sublykčiojusi pragręžė apvalų arbūzą

- -

Norwegian

-

Vår sære Zulu fra badeøya spilte jo whist og quickstep i min taxi.

- -

Høvdingens kjære squaw får litt pizza i Mexico by

- -

Polish

-

Pójdźże, kiń tę chmurność w głąb flaszy!

- -

Pchnąć w tę łódź jeża lub ośm skrzyń fig.

- -

Mężny bądź, chroń pułk twój i sześć flag.

- -

Portuguese

-

Blitz prende ex-vesgo com cheque fajuto.

- -

Gazeta publica hoje no jornal uma breve nota de faxina na quermesse.

- -

À noite, vovô Kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz.

- -

Luís argüia à Júlia que «brações, fé, chá, óxido, pôr, zângão» eram palavras do português.

- -

Romanian

-

Gheorghe, obezul, a reuşit să obţină jucându-se un flux în Quebec de o mie kilowaţioră.

- -

Russian

-

В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!

- -

(Using quasiobsolete spelling for last word to include ъ) В чащах юга жил бы цитрус? Да, но фальшивый экземпляръ!

- -

Эх, чужак! Общий съём цен шляп (юфть) — вдрызг!

- -

Экс-граф? Плюш изъят. Бьём чуждый цен хвощ!

- -

Съешь ещё этих мягких французских булок, да выпей же чаю.

- -

Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.

- -

Serbian

-

Љубазни фењерџија чађавог лица хоће да ми покаже штос.

- -

Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos.

- -

Slovene

-

Šerif bo za vajo spet kuhal domače žgance

- -

Piškur molče grabi fižol z dna cezijeve hoste

- -

Spanish

-

El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.

- -

El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, añoraba a su querido cachorro.

- -

Jovencillo emponzoñado de whisky: ¡qué figurota exhibe!

- -

Ese libro explica en su epígrafe las hazañas y aventuras de Don Quijote de la Mancha en Kuwait.

- -

Queda gazpacho, fibra, látex, jamón, kiwi y viñas.

- -

Whisky bueno: ¡excitad mi frágil pequeña vejez!

- -

Swedish

-

Flygande bäckasiner söka hwila på mjuka tuvor.

- -

Yxskaftbud, ge vår wczonmö iqhjälp.

- -

Ukrainian

-

Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів!

- -

Жебракують філософи при ґанку церкви в Гадячі, ще й шатро їхнє п\'яне знаємо.

- -

Turkish (pangram)

-

Pijamalı hasta yağız şoföre çabucak güvendi.

- -

Greek

-
Monotonic
-

Πάτερ ημών ο εν τοις ουρανοίς αγιασθήτω το όνομά σου· ελθέτω η βασιλεία σου· γενηθήτω το θέλημά σου, ως εν ουρανώ και επί της γης· τον άρτον ημών τον επιούσιον δος ημίν σήμερον· και άφες ημίν τα οφελήματα ημών, ως και ημείς αφίεμεν τοις οφειλέταις ημών· και μη εισενέγκης ημάς εις πειρασμόν, αλλά ρύσαι ημάς από του πονηρού. αμήν.

- -
Polytonic
-

Πάτερ ἡμῶν ὁ ἐν τοῖς οὐρανοῖς ἁγιασθήτω τὸ ὄνομά σου· ἐλθέτω ἡ βασιλεία σου· γενηθήτω τὸ θέλημά σου, ὡς ἐν οὐρανῷ καὶ ἐπὶ τῆς γῆς· τὸν ἄρτον ἡμῶν τὸν ἐπιούσιον δὸς ἡμῖν σήμερον· καὶ ἄφες ἡμῖν τὰ ὀφελήματα ἡμῶν, ὡς καὶ ἡμεῖς ἀφίεμεν τοῖς ὀφειλέταις ἡμῶν· καὶ μὴ εἰσενέγκῃς ἡμᾶς εἰς πειρασμόν, ἀλλὰ ρῦσαι ἡμᾶς ἀπὸ τοῦ πονηροῦ. ἀμήν.

- - -

Languages

-

(The following are used for demonstration purposes only. Some of the following excerpts are taken from web pages from the BBC Foreign News just to show the script - I have no idea what they actually say!!)

- -

Latvian

-

Latvijas institūts veic konsultatīvi koordinējošas funkcijas Latvijas starptautiskās atpazīstamības jomā; -gatavo un izplata plašai sabiedrībai pieejamu, svarīgu pamatinformāciju saturošu, viegli izprotamu un iegaumējamu, kā arī pozitīvu iespaidu izraisošu vispārēju pamatinformāciju par Latviju, Latvijas dabu, sabiedrību, kultūru un vēsturi;

- -

Azeri (az)

-

Qaz kəmərinin açılışında İran və Ermənistanın prezidentləri iştirak ediblər.

- -

İran qazını Ermənistana nəql edəcək bu kəmər Yerevan üçün xüsusi önəm daşıyır, belə ki, böyük etnik azərbaycanlı toplumuna malik İran təlatümlü regionda öz maraqlarını qorumaq üçün çox vaxt Ermənistanın müttəfiqi kimi görünüb.

- -

Bulgarian

-

Последните донаборници в българската армия ще служат 9 месеца, както постановява закона 6 месеца е съкратеният срок само за завършилите висше образование - така министър Веселин Близнаков отхвърли различните интерпретации в публичното пространство по темата. Министърът на отбраната разформирова в Казанлък Втората ни рота от Ашраф и Втори пехотен взвод, завърнал се от миротворческа мисия от Баня Лука в Босна и Херцеговина.

- -

Macedonian (mk)

-

Буш рече оти е суштински да се осигури безбедноста на Багдад и да се обнови нормалниот живот во остатокот од земјата.

- -

Митрева ја прозва владата за индолентен однос кон ова битката за зачувивање на уставното име на земјата.

- -

Uzbek (uz)

-

Ироқликлар орасида тушкунлик ортиб бораяпти

- -

Ироқда ўтказилган сўнгги жамоатчилик фикрини ўрганиш натижаларига кўра, мамлакат келажаги борасида тушкун кайфиятда бўлган ироқликлар сони тобора ортиб бормоқда.

- -

Kyrgyz (ky)

-

Казакстанда айыл тургундары уруша кетип 3 киши каза тапты -Казакстандын Алматы шаарынын тушундагы айылда эки киши ортосундагы чатак чоң урушка айланып, ага элүү чакты киши аралашкан.

- - - -

Albanian (sq)

-

Një anketë sugjeron se irakianët kanë një pesimizëm në rritje për të ardhmen e vendit të tyre.

- -

Presidenti shqiptar Alfred Moisiu dekretoi të hënën ndryshimet e propozuara nga kryeministri Sali Berisha në kabinetin e tij, pas zgjedhjeve lokale.

- - -

Vietnamese (vi)

-

Một khảo sát mới cho biết người dân Iraq ngày càng cảm thấy bi quan và không tin tưởng vào chính phủ cũng như liên quân

- -

Nga đang thực hiện chiến dịch cứu hộ sau khi có vụ nổ khí methane tại một mỏ than ở Siberia làm ít nhất 61 người thiệt mạng

- -

Thai (pangram)

-

เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋า น่าฟังเอยฯ

- - - -
- -

Hebrew (pangram)

-

דג סקרן שט בים מאוכזב ולפתע מצא חברה

- -

או הנסה אלהים, לבוא לקחת לו גוי מקרב גוי, במסת באתת ובמופתים ובמלחמה וביד חזקה ובזרוע נטויה, ובמוראים גדלים: ככל אשר-עשה לכם יהוה אלהיכם, במצרים--לעיניך

- - - - -

Arabic

-

قال الرئيس الامريكي جورج بوش في حديث متلفز في الذكرى الرابعة للغزو الامريكي للعراق ان الاولوية حاليا لاعادة الامن للعراق.

- -

هل ستسفر الجهود الدبلوماسية الجارية عن حلول؟ وكيف تنظر للاتهامات لبعض هذه الدول بالتدخل في الشأن العراقي، والتورط في دعم عمليات العنف؟ والى اي مدى يبدو الوضع في العراق انعكاسا للصراعات الإقليمية في المنطقة؟

- - -

Persian / Farsi

-

محمد البرادعی رئيس آژانس بين المللی انرژی اتمی پيشنهاد کرده است تهران برنامه جنجالی غنی سازی اورانيوم را متوقف کند و غرب نيز اجرای تحريم های تنبيهی مورد تائيد سازمان ملل متحد را به تعويق بياندازد.

- - - -

Urdu

-

تمام انسان آزاد اور حقوق و عزت کے اعتبار سے برابر پیدا ہوۓ ہیں۔ انہیں ضمیر اور عقل ودیعت ہوئی ہی۔ اسلۓ انہیں ایک دوسرے کے ساتھ بھائی چارے کا سلوک کرنا چاہیۓ۔ -

- -

Pashto (ps)

-

په کابل او کندهار کې دوو ځانمرگو بريدونو لږ تر لږه يو ماشوم وژلى او اته تنه نور ىې ټپيان کړي. -

- - -

Sindhi (sd)

-

-واشنگٽن (م ڊ) آمريڪا چيو آهي ته ڪيري لوگربل تي پاڪ فوج جي تحفظات سان پاڪستان ۾ جمهوري طور آيل زرداري جي حڪومت کي ڪوبه خطرو ناهي، ان سوال تي تي ڪيري لوگربل ۾ پاڪستان کي غير مشروط امداد ڏيڻ جي ڳالهه ڪئي وئي آهي، جڏهن ته فوجي امداد تي شرط لاڳو ڪيا -

- -
- - -

Indic Scripts

- -

-Malayalam -

-

സംസ്ഥാനത്ത് രാഷ്ട്രീയ പുകമറ സൃഷ്ടിക്കാനാണ് വോട്ടര്‍പട്ടിക വിവാദത്തിലൂടെ കോണ്‍ഗ്രസ് ശ്രമിക്കുന്നതെന്ന് സിപി‌എം സംസ്ഥാന സെക്രട്ടറി പിണറായി വിജയന്‍ കുറ്റപ്പെടുത്തി। ഉദ്യോഗസ്ഥരെ ഭീഷണിപ്പെടുത്തി വരുതിയില്‍ നിര്‍ത്താനാണ് വയലാര്‍ രവി ഉള്‍പ്പെടെയുള്ളവര്‍ ശ്രമിക്കുന്നതെന്നും പിണറാ‍യി പ്രസ്താവനയില്‍ ആരോപിച്ചു। -

- -

Kannada

-

-ತಮ್ಮದೇ ಕುಟುಂಬದ ಯುವತಿಯೊಬ್ಬಳನ್ನು ಸತತ ಹಲವಾರು ವರ್ಷ ಭೋಗಿಸಿದ ಭಾರತೀಯ ಮೂಲದ ಮೂವರು ದುರುಳ ಸಂಬಂಧಿಕರು ಅಪರಾಧಿಗಳೆಂದು ಸಾಬೀತಾಗಿದ್ದು, ಇಂಗ್ಲೆಂಡ್ ನ್ಯಾಯಾಲಯವು ದೀರ್ಘಾವಧಿ ಕಠಿಣ ಶಿಕ್ಷೆ ವಿಧಿಸಿದೆ. -

- -

Telegu

-

ఆగ్నేయ ఇరాన్‌లో ఆదివారం నాడు ఓ ఆత్మాహుతి దాడి జరగడంతో ఇరవై మంది మృతి చెందారు. -
- -ఆగ్నేయ ఇరాన్‌లో ఆత్మాహుతి దాడి జరగడంతో ఐదుగురు ఎలిట్ రెవల్యూషనరీ గార్డ్‌లతో సహా ప్రముఖ కమాండర్‌లతోసహా మొత్తం ఇరవై మంది మృతి చెందినట్లు ఇరాన్ లోక్‌సభ స్పీకర్ అలీ లారిజానీ తెలిపారు. -

- - - -

Tamil (ta)

-

இராக்கிய மக்கள் அவநம்பிக்கையுடன் இருப்பதாகவும், ஷியா மற்றும் சுனிக்கள் முரண்பட்ட கருத்துக்களுடன் துருவப்பட்ட நிலையில் இருப்பதாகவும் கருத்துக் கணிப்பு ஒன்று கூறுகிறது.

- - -

Oriya

-

ଓଡ଼ିଆ ଉଇକିପେଡିଆ ଆପଣଙ୍କୁ ସ୍ବାଗତ କରୁଛି। ଏହି ଉନ୍ମୁକ୍ତ ଜ୍ଞାନକୋଷଟି ଇଣ୍ଟରନେଟ ଉପରେ ଆଧାରିତ ଏବଂ ଏହା ବିଶ୍ବର ୫୦ଟି ଭାଷାରେ ଉପଲବ୍ଧ । ଏହାକୁ ଆପଣ ମଧ୍ୟ ବର୍ଦ୍ଧିତ ଓ ପରିବର୍ତିତ କରିପାରିବେ ଏବଂ ଏହାକୁ ଉନ୍ନତ କରିବା ପାଇଁ ନିଜର ଅବଦାନ ଦେଇ ପାରିବେ । ଆପଣଙ୍କ ପସନ୍ଦର ବିଷୟ ଗୁଡିକୁ ଆପଣ ନୂତନ ଭାବେରେ ଯୋଗ କରିପାରିବେ କିମ୍ବା ଏହି ପୃଷ୍ଠାକୁ ସମ୍ପାଦନ କରି ଏହା ସହିତ ଯୋଗ କରିପାରିବ । ସମସ୍ତ ପାଠ ଗୁଡିକ GNU ମୁକ୍ତ ଦଲିଲକରଣ ଲାଇସେନ୍ସର ସର୍ତ୍ତ ଅଧୀନରେ ଉପଲବ୍ଧ । ତଥାପି, ଆପଣ ଏହାକୁ ମୁକ୍ତ ଭାବେର ଇଲେକ୍ଟ୍ରୋନିକ୍ସ ପ୍ରିଣ୍ଟ୍ କିମ୍ବା ଅନ୍ୟାନ୍ୟ ପ୍ରିଣ୍ଟର ମାଧ୍ୟମରେ ବ୍ୟବହାର କରିପାରିବ । -

- -

Punjabi

-

ਕੇਂਦਰੀ ਗ੍ਰਹਿਮੰਤਰੀ ਪੀ.ਚਿਦੰਬਰਮ ਨੇ ਐਤਵਾਰ ਨੂੰ ਤਮਿਲਨਾਢੂ ਦੇ ਮੁੱਖਮੰਤਰੀ ਐਮ.ਕਰੁਣਾਨਿਧੀ ਨਾਲ ਮੁਲਾਕਾਤ ਕੀਤੀ।ਉਨ੍ਹਾ ਨੇ ਸ਼੍ਰੀਲੰਕਾ \'ਚ ਲਿੱਟੇ ਦੇ ਖਿਲਾਫ਼ ਯੁੱਧ ਦੌਰਾਨ ਉੱਝੜੇ ਹੋਏ ਲੱਗਭਗ ਢਾਈ ਲੱਖ ਤਮਿਲਾਂ ਦੀ ਮੁੜ ਰਿਹਾਇਸ਼ \'ਤੇ ਚਰਚਾ ਕੀਤੀ। -

- -

Gujarati (gu)

-

-આ વાત હજાર વાર કહેવામાં આવી છે કે ફિલ્મ બનાવતી વખેત હંમેશા સૌથી વધુ ધ્યાન વાર્તા અને સ્ક્રીનપ્લે પર આપવુ જોઈએ. કારણ કે આ કોઈ પણ ફિલ્મની સફળતાનો મુખ્ય આધાર હોય છે. -
-મોટા ફિલ્મ સ્ટાર્સ સાઈન કરવાથી, સ્ટંટ અને ગીતોથી પાણીની અંદર કે આકાશમાં કરોડો રૂપિયા ખર્ચ કરી ફિલ્માવેલા દ્રશ્યોથી કશુ જ નથી થતુ. પરંતુ આ બુનિયાદી વાત અત્યાર સુધી કોઈ લોકોને સમજાતી નથી. -

- - -

Hindi (hi)

-

भारत और बरमूडा के बीच बारिश के कारण रुका मैच दोबारा शुरु हो गया है. भारत ने बरमूडा के सामने रिकॉर्ड 414 रनों का लक्ष्य रखा है. बरमूडा ने दो विकेट खो दिए हैं.

- - -

Nepali (ne) - Devanagari

-

अन्तरिम सरकारको गठनमा ढीलाइ हुनुका साथै आउंदो जेठ महिनाभित्र संविधानसभाको चुनाव होला कि नहोला भन्ने बहस चर्कीरहेको बेला चुनावकै विषयमा निर्वाचन आयोग र आठ दलको बेग्ला, बेग्लै भनाइ रहेको देखिएको छ।

- - -

Bengali (bn)

-

-দক্ষিণ ওয়াজিরিস্থানে কর্মরত স্বেচ্ছাসেবী ও ত্রাণ সংস্থাগুলো ধারণা করছে সেনা অভিযানের তীব্রতা বাড়লে এই সংখ্যাটা আরও অনেক বেড়ে যাবে -
-শরণার্থীদের স্রোত সামলাতে তারা ইতিমধ্যেই হিমশিম খাচ্ছেন, ফলে লড়াই থেকে পালিয়ে আসা বেসামরিক মানুষজনের সংখ্যা আরও বাড়লে স্বভাবতই সঙ্কট আরও জটিল হয়ে উঠবে -

- - -

Assamese

-

অসমীয়া ৱিকিপিডিয়াৰ উদ্দেশ্য হ\'ল সম্পূৰ্ণ অসমীয়া ভাষাত এখনি বিশ্বকোষ প্ৰণয়ন কৰা। অন্য কোনো ভাষাৰ প্ৰবন্ধ এই বিশ্বকোষৰ বাবে গ্ৰহন কৰা নহ\'ব। বিশ্বকোষৰ অৱদানকাৰীসকললৈ সাদৰেৰে অনুৰোধ জনোৱা হ\'ল যাতে তেখেতসকলে অসমীয়া ভাষাৰ প্ৰচলিত বানান পদ্ধতি মানি চলে। বিদেশী শব্দৰ অসমীয়া প্ৰতিৰূপৰ ক্ষেত্ৰত যিহেতু অসমীয়া সাহিত্যিকসকল এতিয়াও ঐক্যমতত উপনীত হ\'ব পৰা নাই, ৱিকিপিডিয়াত বিদেশী শব্দৰ যিকোনো ধৰনৰ অসমীয়া ৰূপ গ্ৰাহ্য কৰা হ\'ব। -

- - - - -

Japanese (pangrams)

-
Iroha Uta SJIS
- -

いろはにほへと ちりぬるを わかよたれそ つねならむ うゐのおくやま けふこえて あさきゆめみし ゑひもせす

- -
Tori Naku Uta
- -

とりなくこゑす ゆめさませ みよあけわたる ひんかしを そらいろはえて おきつへに ほふねむれゐぬ もやのうち

- -
Ametsuchi No Uta
- -

あめ つち ほし そら / やま かは みね たに / くも きり むろ こけ / ひと いぬ うへ すゑ / ゆわ さる おふ せよ / えのえ*を なれ ゐて

- -
Taini no Uta
- -

たゐにいて なつむわれをそ きみめすと あさりおひゆく やましろの うちゑへるこら もはほせよ えふねかけぬ

- -

Chinese (simplified) GB2312 GB

- -

来自商务部新闻办公室的消息称,中方免除与中国有外交关系的所有非洲重债穷国及最不发达国家截至2005年底对华到期政府无息贷款债务。有关部门已对相关债务进行全面清理核对,对与中国有外交关系的33个非洲重债穷国和最不发达国家,免除其截至2005年底168笔对华到期无息贷款债务。拟于2007年底前与受援国办理完免债协议。

- - -

Chinese (Traditional - Hong Kong) Big5

- -

「憂鬱小王子」是一個教育網站,它成功結合了香港賽馬會防止自殺研究中心各方面的專才,為青少年人提供精神健康的訊息,對普及抑鬱症知識的貢獻良多。在香港,它曾獲選為「2004年十大健康網站」之一,該項選舉自2005年起改名現時的「優秀網站選舉」。其貢獻在國際間亦備受肯定,2005年,該網站榮獲第八屆「亞洲創新大獎」銀獎。

- - - -

Korean UHC

- -

키스의 고유조건은 입술끼리 만나야 하고 특별한 기술은 필요치 않다.

- - -

Mixed

-

Distinguishes multiple languages enclosed in same element (tags): Arabic قال الرئيس -English Cat sat on the large mat -Tamil ஷியா -Hindi भारत और -Japanese いろはにほへと -Chinese 来自商务部新闻办公 -Thai เป็นมนุษย -Viet Một khảo sát mới cho biết người dân -Tamil ஷியா -Chinese 来自商务部新闻办公 -English Cat sat on the large mat -

- - -

Unicode Plane 2

-
-Unicode Plane 0 (BMP U+0000 - U+FFFF): -鼂 鼈 鼗 鼦 鼧 鼹 齄 齅 齐 齓 齚 齢 齩 齿 龎 龙 龟 龥 -------- -Unicode Plane 2 (SIP characters > U+20000): -𠀡 𠀾 𠁆 𠁎 𠁨 𠂆 𠂇 𠂊 𠂔 𠃊 𠃋 𠃌 𠃍 𠃑 𠃮 𠄌 𠄎 𠄘 𠆤 𠆩 𠆫 𠇁 𠇔 𠇲 𠈄 𠈌 𠈔 𠈹 𠉛 𠉴 𠉵 𠊙 𠊞 𠊠 𠊷 𠊿 𠋀 𠋥 𠌊 -------- -Unicode Plane 0 (BMPU+0000 - U+FFFF): -鼂 鼈 鼗 鼦 鼧 鼹 齄 齅 齐 齓 齚 齢 齩 齿 龎 龙 龟 龥
-
-'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->autoScriptToLang = true; -$mpdf->baseScript = 1; -$mpdf->autoVietnamese = true; -$mpdf->autoArabic = true; - -$mpdf->autoLangToFont = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example32_indic.php b/mpdf/examples/example32_indic.php deleted file mode 100644 index b7e2b81..0000000 --- a/mpdf/examples/example32_indic.php +++ /dev/null @@ -1,106 +0,0 @@ - -body, p, div { font-size: 14pt; font-family: freeserif;} -h3 { font-size: 15pt; margin-bottom:0; font-family: sans-serif; } - - -

Indic Fonts and Languages

- -

Malayalam

-

സംസ്ഥാനത്ത് രാഷ്ട്രീയ പുകമറ സൃഷ്ടിക്കാനാണ് വോട്ടര്‍പട്ടിക വിവാദത്തിലൂടെ കോണ്‍ഗ്രസ് ശ്രമിക്കുന്നതെന്ന് സിപി‌എം സംസ്ഥാന സെക്രട്ടറി പിണറായി വിജയന്‍ കുറ്റപ്പെടുത്തി. ഉദ്യോഗസ്ഥരെ ഭീഷണിപ്പെടുത്തി വരുതിയില്‍ നിര്‍ത്താനാണ് വയലാര്‍ രവി ഉള്‍പ്പെടെയുള്ളവര്‍ ശ്രമിക്കുന്നതെന്നും പിണറാ‍യി പ്രസ്താവനയില്‍ ആരോപിച്ചു. -
- -൦൧൨൩൪൫൬൭൮൯ -

- -

Kannada

-

-ತಮ್ಮದೇ ಕುಟುಂಬದ ಯುವತಿಯೊಬ್ಬಳನ್ನು ಸತತ ಹಲವಾರು ವರ್ಷ ಭೋಗಿಸಿದ ಭಾರತೀಯ ಮೂಲದ ಮೂವರು ದುರುಳ ಸಂಬಂಧಿಕರು ಅಪರಾಧಿಗಳೆಂದು ಸಾಬೀತಾಗಿದ್ದು, ಇಂಗ್ಲೆಂಡ್ ನ್ಯಾಯಾಲಯವು ದೀರ್ಘಾವಧಿ ಕಠಿಣ ಶಿಕ್ಷೆ ವಿಧಿಸಿದೆ. -
-೦೧೨೩೪೫೬೭೮೯ -

- -

Telegu

-

ఆగ్నేయ ఇరాన్‌లో ఆదివారం నాడు ఓ ఆత్మాహుతి దాడి జరగడంతో ఇరవై మంది మృతి చెందారు. -
- -ఆగ్నేయ ఇరాన్‌లో ఆత్మాహుతి దాడి జరగడంతో ఐదుగురు ఎలిట్ రెవల్యూషనరీ గార్డ్‌లతో సహా ప్రముఖ కమాండర్‌లతోసహా మొత్తం ఇరవై మంది మృతి చెందినట్లు ఇరాన్ లోక్‌సభ స్పీకర్ అలీ లారిజానీ తెలిపారు. -
-౦౧౨౩౪౫౬౭౮౯ -

- - - -

Tamil

- -

இராக்கில் அமெரிக்க மற்றும் பிரிட்டிஷ் துருப்புகளைக் கொன்ற வெடிமருந்துத் தொழில் நுட்பம் உட்பட பல்வேறு உதவிகளை இராக்கில் உள்ள தீவிரவாதிகளுக்கு இரான் வழங்கியதற்கான ஆதாரங்கள் அதிகரித்து வருவதை அமெரிக்கா கவனிக்கிறது என்று அமெரிக்க அரசுத் துறைத் துணைச் செயலர் நிக்கலஸ் பேர்ண்ஸ் கூறியிருக்கிறார். -
-௦௧௨௩௪௫௬௭௮௯ -

- - -

Oriya

-

ଓଡ଼ିଆ ଉଇକିପେଡିଆ ଆପଣଙ୍କୁ ସ୍ବାଗତ କରୁଛି। ଏହି ଉନ୍ମୁକ୍ତ ଜ୍ଞାନକୋଷଟି ଇଣ୍ଟରନେଟ ଉପରେ ଆଧାରିତ ଏବଂ ଏହା ବିଶ୍ବର ୫୦ଟି ଭାଷାରେ ଉପଲବ୍ଧ । ଏହାକୁ ଆପଣ ମଧ୍ୟ ବର୍ଦ୍ଧିତ ଓ ପରିବର୍ତିତ କରିପାରିବେ ଏବଂ ଏହାକୁ ଉନ୍ନତ କରିବା ପାଇଁ ନିଜର ଅବଦାନ ଦେଇ ପାରିବେ । ଆପଣଙ୍କ ପସନ୍ଦର ବିଷୟ ଗୁଡିକୁ ଆପଣ ନୂତନ ଭାବେରେ ଯୋଗ କରିପାରିବେ କିମ୍ବା ଏହି ପୃଷ୍ଠାକୁ ସମ୍ପାଦନ କରି ଏହା ସହିତ ଯୋଗ କରିପାରିବ । ସମସ୍ତ ପାଠ ଗୁଡିକ GNU ମୁକ୍ତ ଦଲିଲକରଣ ଲାଇସେନ୍ସର ସର୍ତ୍ତ ଅଧୀନରେ ଉପଲବ୍ଧ । ତଥାପି, ଆପଣ ଏହାକୁ ମୁକ୍ତ ଭାବେର ଇଲେକ୍ଟ୍ରୋନିକ୍ସ ପ୍ରିଣ୍ଟ୍ କିମ୍ବା ଅନ୍ୟାନ୍ୟ ପ୍ରିଣ୍ଟର ମାଧ୍ୟମରେ ବ୍ୟବହାର କରିପାରିବ । -
-୦୧୨୩୪୫୬୭୮୯ -

- -

Punjabi

-

ਕੇਂਦਰੀ ਗ੍ਰਹਿਮੰਤਰੀ ਪੀ.ਚਿਦੰਬਰਮ ਨੇ ਐਤਵਾਰ ਨੂੰ ਤਮਿਲਨਾਢੂ ਦੇ ਮੁੱਖਮੰਤਰੀ ਐਮ.ਕਰੁਣਾਨਿਧੀ ਨਾਲ ਮੁਲਾਕਾਤ ਕੀਤੀ।ਉਨ੍ਹਾ ਨੇ ਸ਼੍ਰੀਲੰਕਾ \'ਚ ਲਿੱਟੇ ਦੇ ਖਿਲਾਫ਼ ਯੁੱਧ ਦੌਰਾਨ ਉੱਝੜੇ ਹੋਏ ਲੱਗਭਗ ਢਾਈ ਲੱਖ ਤਮਿਲਾਂ ਦੀ ਮੁੜ ਰਿਹਾਇਸ਼ \'ਤੇ ਚਰਚਾ ਕੀਤੀ। -
-੦੧੨੩੪੫੬੭੮੯ - -

- -

Gujarati

-

આ વાત હજાર વાર કહેવામાં આવી છે કે ફિલ્મ બનાવતી વખેત હંમેશા સૌથી વધુ ધ્યાન વાર્તા અને સ્ક્રીનપ્લે પર આપવુ જોઈએ. કારણ કે આ કોઈ પણ ફિલ્મની સફળતાનો મુખ્ય આધાર હોય છે. -
-૦૧૨૩૪૫૬૭૮૯ -

- - -

Hindi

-

भारत और बरमूडा के बीच बारिश के कारण रुका मैच दोबारा शुरु हो गया है. भारत ने बरमूडा के सामने रिकॉर्ड 414 रनों का लक्ष्य रखा है. बरमूडा ने दो विकेट खो दिए हैं.

- -

पाकिस्तान में सुप्रीम कोर्ट के मुख्य न्यायाधीश को निलंबित किए जाने के विरोध में कई जजों ने अपने पद से इस्तीफ़ा दे दिया है. -
-०१२३४५६७८९ -

- -

Nepali - (Devanagari)

-

अन्तरिम सरकारको गठनमा ढीलाइ हुनुका साथै आउंदो जेठ महिनाभित्र -संविधानसभाको चुनाव होला कि नहोला भन्ने बहस चर्कीरहेको बेला चुनावकै विषयमा निर्वाचन आयोग र आठ दलको बेग्ला, बेग्लै भनाइ रहेको देखिएको छ। -

- - -

Bengali

-

দক্ষিণ ওয়াজিরিস্থানে কর্মরত স্বেচ্ছাসেবী ও ত্রাণ সংস্থাগুলো ধারণা করছে সেনা অভিযানের তীব্রতা বাড়লে এই সংখ্যাটা আরও অনেক বেড়ে যাবে -
-শরণার্থীদের স্রোত সামলাতে তারা ইতিমধ্যেই হিমশিম খাচ্ছেন, ফলে লড়াই থেকে পালিয়ে আসা বেসামরিক মানুষজনের সংখ্যা আরও বাড়লে স্বভাবতই সঙ্কট আরও জটিল হয়ে উঠবে -
-০১২৩৪৫৬৭৮৯ -

- - -

Assamese

-

অসমীয়া ৱিকিপিডিয়াৰ উদ্দেশ্য হ\'ল সম্পূৰ্ণ অসমীয়া ভাষাত এখনি বিশ্বকোষ প্ৰণয়ন কৰা। অন্য কোনো ভাষাৰ প্ৰবন্ধ এই বিশ্বকোষৰ বাবে গ্ৰহন কৰা নহ\'ব। বিশ্বকোষৰ অৱদানকাৰীসকললৈ সাদৰেৰে অনুৰোধ জনোৱা হ\'ল যাতে তেখেতসকলে অসমীয়া ভাষাৰ প্ৰচলিত বানান পদ্ধতি মানি চলে। বিদেশী শব্দৰ অসমীয়া প্ৰতিৰূপৰ ক্ষেত্ৰত যিহেতু অসমীয়া সাহিত্যিকসকল এতিয়াও ঐক্যমতত উপনীত হ\'ব পৰা নাই, ৱিকিপিডিয়াত বিদেশী শব্দৰ যিকোনো ধৰনৰ অসমীয়া ৰূপ গ্ৰাহ্য কৰা হ\'ব। -

-'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(''); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example33_unicode_supplementary_planes.php b/mpdf/examples/example33_unicode_supplementary_planes.php deleted file mode 100644 index b1e8709..0000000 --- a/mpdf/examples/example33_unicode_supplementary_planes.php +++ /dev/null @@ -1,282 +0,0 @@ - -body { - font-family: sans-serif; - font-size: 10pt; -} -h4 { - font-variant: small-caps; -} -h5 { - margin-bottom: 0; - color: #110044; -} -dl { - margin: 0; -} - -

mPDF

-

Unicode Supplementary Planes

-

The original Unicode allocated characters between x0000 and xFFFF (65,536 characters). This \'Basic Multilingual Plane\' supported most characters in common use, including a large number of Unified Chinese-Japanese-Korean characters (CJK). Later the Unicode standard was extended to 16 Planes.

- -

The first plane (plane 0), the Basic Multilingual Plane (BMP), is where most characters have been assigned so far.

-

Plane 1, the Supplementary Multilingual Plane (SMP), is mostly used for historic scripts such as Linear B, but is also used for musical and mathematical symbols.

-

Plane 2, the Supplementary Ideographic Plane (SIP), is used for about 40,000 Unified Han (CJK) Ideographs.

- -

mPDF supports fonts containing characters from all Unicode Planes. By choosing the correct font, almost every single character from Unicode 5 can be displayed in a PDF file.

- -

Unicode Supplementary Multilingual Plane (SMP or Plane 1) U+10000 - U+1FFFF

-
Gothic text
-
-This paragraph shows Gothic text. These characters lie in the Unicode Supplementary Multilingual Plane U+10330 - U+1034F. -
-
-
-𐌰 𐌱 𐌲 𐌳 𐌴 𐌵 𐌶 𐌷 𐌸 𐌹 𐌺 𐌻 𐌼 𐌽 𐌾 𐌿 𐍀 𐍁 𐍂 𐍃 𐍄 𐍅 𐍆 𐍇 𐍈 𐍉 𐍊 -
-
-
-Font: MPH2BDamase (damase_v.2.ttf) available from: http://www.wazu.jp/gallery/views/View_MPH2BDamase.html -
- -
Egyptian Hieroglyphics
-
-This paragraph shows Egyptian Hieroglyphics. These characters lie in the Unicode Supplementary Multilingual Plane U+13000 - U+1342F. -
-
-
-𓀀 𓀁 𓀂 𓀃 𓀄 𓀅 𓀆 𓀇 𓀈 𓀉 𓀊 𓀋 𓀌 𓀍 𓀎 𓀏 𓀐 𓀑 -
-
-
-Font: Aegyptus.otf available from: http://users.teilar.gr/~g1951d/ -
- -

SMP contains mainly ancient scripts - see http://mpdf1.com/manual/index.php?tid=451 for full list.

- -

mPDF uses a different method to embed fonts in the PDF file if they include characters from SMP or SIP, because the characters cannot be represented by a 4 character hex code 0000-FFFF. This method is less eficient than the default method, and it can be suppressed by adding the font name to the array \'BMPonly\' in the config_fonts.php configuration file.

- -

Note that the DejaVu fonts distributed with mPDF and (GNU)FreeSans and FreeSerif fonts do contain a few characters in the SMP plane, but most users will not require them and by default they have been added to the array \'BMPonly\'.

- - - -

CJK characters

-

Below are examples of all the CJK Unicode blocks contained in the Basic Multilingual Plane and Supplemental Ideographic Plane

- -
-
Plane 0 (BMP)
-
-
CJK Radicals Supplement
-
⺎ ⺏ ⺐ ⺑ ⺒ ⺓ ⺔ ⺕ ⺖ ⺗ ⺘ ⺙ ⺛ ⺜ ⺝ ⺞ ⺟ ⺠ ⺡ ⺢ ⺣ ⺤ ⺥ ⺦ ⺧ ⺨ ⺩ ⺪
-
Kangxi Radicals
-
⼳ ⼴ ⼵ ⼶ ⼷ ⼸ ⼹ ⼺ ⼻ ⼼ ⼽ ⼾ ⼿ ⽀ ⽁ ⽂ ⽃ ⽄ ⽅ ⽆ ⽇ ⽈ ⽉ ⽊ ⽋ ⽌ ⽍
-
Ideographic Description Characters
-
⿰ ⿱ ⿲ ⿳ ⿴ ⿵ ⿶ ⿷ ⿸ ⿹ ⿺ ⿻
-
CJK Symbols and Punctuation
-
 〈 〉 《 》 「 」 『 』 【 】 〒 〓 〔 〕 〖 〗 〘 〙 〚 〛 〜 〝 〞 〦 〧 〨 〩 〪
-
Hiragana
-
ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ く ぐ け げ こ ご さ ざ
-
Katakana
-
゠ ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ
-
Bopomofo
-
ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ
-
Hangul Compatibility Jamo
-
ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄸ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ
-
Kanbun
-
㆐ ㆑ ㆒ ㆓ ㆔ ㆕ ㆖ ㆗ ㆘ ㆙ ㆚ ㆛ ㆜ ㆝ ㆞ ㆟
-
Bopomofo Extended
-
ㆠ ㆡ ㆢ ㆣ ㆤ ㆥ ㆦ ㆧ ㆨ ㆩ ㆪ ㆫ ㆬ ㆭ ㆮ ㆯ ㆰ ㆱ ㆲ ㆳ ㆴ ㆵ ㆶ ㆷ
-
Katakana Phonetic Extensions
-
ㇰ ㇱ ㇲ ㇳ ㇴ ㇵ ㇶ ㇷ ㇸ ㇹ ㇺ ㇻ ㇼ ㇽ ㇾ ㇿ
-
Enclosed CJK Letters and Months
-
㈄ ㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌ ㈍ ㈎ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔ ㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛ ㈜
-
CJK Compatibility
-
㌀ ㌁ ㌂ ㌃ ㌄ ㌅ ㌆ ㌇ ㌈ ㌉ ㌊ ㌋ ㌌ ㌍ ㌎ ㌏ ㌐ ㌑ ㌒ ㌓ ㌔ ㌕ ㌖ ㌗ ㌘
-
CJK Unified Ideographs Extension A
-
㐀 㐁 㐂 㐃 㐄 㐅 㐆 㐇 㐈 㐉 㐊 㐋 㐌 㐍 㐎 㐏 㐐 㐑 㐒 㐓 㐔 㐕 㐖 㐗 㐘
-
CJK Unified Ideographs
-
一 丁 丂 七 丄 丅 丆 万 丈 三 上 下 丌 不 与 丏 丐 丑 丒 专 且 丕 世 丗 丘
-
Yi Syllables
-
ꀀ ꀁ ꀂ ꀃ ꀄ ꀅ ꀆ ꀇ ꀈ ꀉ ꀊ ꀋ ꀌ ꀍ ꀎ ꀏ ꀐ ꀑ ꀒ ꀓ ꀔ ꀕ ꀖ ꀗ ꀘ ꀙ ꀚ
-
Yi Radicals
-
꒐ ꒑ ꒒ ꒓ ꒔ ꒕ ꒖ ꒗ ꒘ ꒙ ꒚ ꒛ ꒜ ꒝ ꒞ ꒟ ꒠ ꒡ ꒢ ꒣ ꒤ ꒥ ꒦ ꒧ ꒨ ꒩
-
Hangul Syllables
-
가 각 갂 갃 간 갅 갆 갇 갈 갉 갊 갋 갌 갍 갎 갏 감 갑 값 갓 갔 강 갖 갗 갘
-
CJK Compatibility Ideographs
-
豈 更 車 賈 滑 串 句 龜 契 金 喇 奈 懶 癩 羅 蘿 螺 裸 邏 樂 洛 烙 珞 落 酪
-
- -
Plane 2 (SIP)
-
-
CJK Unified Ideographs Extension B
-
𠀀 𠀁 𠀂 𠀃 𠀄 𠀅 𠀆 𠀇 𠀈 𠀉 𠀊 𠀋 𠀌 𠀍 𠀎 𠀏 𠀐 𠀑 𠀒 𠀓
- -
CJK Unified Ideographs Extension C
-
𪜀 𪜁 𪜂 𪜃 𪜄 𪜅 𪜆 𪜇 𪜈 𪜉 𪜊 𪜋 𪜌 𪜍 𪜎 𪜏 𪜐 𪜑 𪜒 𪜓
- -
CJK Compatibility Ideographs Supplement
-
丽 丸 乁 𠄢 你 侮 侻 倂 偺 備 僧 像 㒞 𠘺 免 兔 兤 具 𠔜 㒹
-
- -
- - - -

Using CJK fonts in mPDF

- -

Fonts containing CJK characters are large files, typically 10-30MB. Adobe provides a free download of an \'Asian font pack\' allowing you to create PDF files without including (embedding) the font information in the file. This keeps the file size to a minimum and minimises resource usage on your website generating the PDF file. However, users will have to download the Adobe font packs to read the file, and other PDF software will not display the text correctly.

- -

mPDF allows you to embed subsets of CJK fonts keeping file size down, although there is increased memory usage to generate these files.

- -

Some CJK fonts are broken up into 2 files because of the size of the files. One freely available font with almost complete coverage of all CJK characters (in both BMP and SIP) is \'Sun\' available from Alan Wood\'s excellent website: http://www.alanwood.net/unicode/fonts-east-asian.html. This comes as 2 files, Sun-ExtA and Sun-ExtB (both about 20MB in size) containing the characters from BMP and SIP respectively. -

- -

mPDF allows you to treat these as one font by defining the second file as an SIP-extension of the first in the config_fonts.php configuration file. The following text includes random characters from the BMP and SIP mixed together:

- -
-
-鼂 鼈 鼗 𣈏 𣈥 鼦 鼧 𣈯 𣈱 鼹 齄 𣈲 𣈳 齅 齐 𣈴 𣉖 齓 齚 𣉢 𣊁 齢 齩 𣊉 𣊊 -
-
- -

This is the entry in the config_fonts.php configuration file:

-
-$this->fontdata = array(
-...
-       "sun-exta" => array(
-             \'R\' => "Sun-ExtA.ttf",
-             \'sip-ext\' => \'sun-extb\',
-       ),
-       "sun-extb" => array(
-             \'R\' => "Sun-ExtB.ttf",
-       ),
-
-...
-); -
- - -

This is the HTML code - note only the sun-exta font-family needs to be referenced:

-
-<div style="font-family:sun-extA;"> -&#40706; &#40712; &#40727; &#x2320f; &#x23225; &#40742; &#40743; &#x2322f; &#x23231; &#40761; &#40772; &#x23232; &#x23233; &#40773; &#40784; &#x23234; &#x23256; &#40787; &#40794; &#x23262; &#x23281; &#40802; &#40809; &#x23289; &#x2328a; -</div> -
- -

NB You may also need to edit the value $this->useAdobeCJK=false in config.php or use new mPDF(\'-aCJK\'), and edit the config_cp.php configuration file.

- - - - -

TrueType Collections

- -

TrueType Collections (.ttc files) contain more than one font. mPDF treats each font separately by defining the TTCfontID array in the config_fonts.php configuration file.

- -

This example uses the Windows MingLiU fonts, which consist of 2 files containing 6 fonts (note that mingliub is not a Bold variant):

- -

Font collection file (mingliu.ttc) contains the following fonts:
-[1] MingLiU (mingliu) Regular
-[2] PMingLiU (pmingliu) Regular (Proportional)
-[3] MingLiU_HKSCS (mingliu_hkscs) Regular
-

- -

Font collection file (mingliub.ttc) contains the following fonts:
-[1] MingLiU-ExtB (mingliu-extb) Regular
-[2] PMingLiU-ExtB (pmingliu-extb) Regular (Proportional)
-[3] MingLiU_HKSCS-ExtB (mingliu_hkscs-extb) Regular
-

- -

This is a sample entry in the config_fonts.php configuration file:

-
-$this->fontdata = array(
-       "mingliu" => array(
-             \'R\' => "mingliu.ttc",
-             \'TTCfontID\' => array (
-                 \'R\' => 1,
-             ),
-             \'sip-ext\' => \'mingliu-extb\',
-       ),
- -       "pmingliu" => array(
-             \'R\' => "mingliu.ttc",
-             \'TTCfontID\' => array (
-                 \'R\' => 2,
-             ),
-             \'sip-ext\' => \'pmingliu-extb\',
-       ),
- -       "mingliu_hkscs" => array(
-             \'R\' => "mingliu.ttc",
-             \'TTCfontID\' => array (
-                 \'R\' => 3,
-             ),
-             \'sip-ext\' => \'mingliu_hkscs-extb\',
-       ),
- -       "mingliu-extb" => array(
-             \'R\' => "mingliub.ttc",
-             \'TTCfontID\' => array (
-                 \'R\' => 1,
-             ),
-       ),
- -       "pmingliu-extb" => array(
-             \'R\' => "mingliub.ttc",
-             \'TTCfontID\' => array (
-                 \'R\' => 2,
-             ),
-       ),
- -       "mingliu_hkscs-extb" => array(
-             \'R\' => "mingliub.ttc",
-             \'TTCfontID\' => array (
-                 \'R\' => 3,
-             ),
-       ),
-); -
- - -

This is sample HTML code:

-
-<div style="font-family:mingliu;"> -&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; -</div> -
-<div style="font-family:mingliu_hkscs;"> -&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; -</div> -
-<div style="font-family:pmingliu;"> -&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; -</div> -
- - -'; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example34_invoice_example.php b/mpdf/examples/example34_invoice_example.php deleted file mode 100644 index 0bb41c2..0000000 --- a/mpdf/examples/example34_invoice_example.php +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - - -
Date: 13th November 2008
- - - - - -
SOLD TO:

345 Anotherstreet
Little Village
Their City
CB22 6SO
 SHIP TO:

345 Anotherstreet
Little Village
Their City
CB22 6SO
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ref. No.QuantityDescriptionUnit PriceAmount
MF123456710Large pack Hoover bags£2.56£25.60
MX378019821Womans waterproof jacket
Options - Red and charcoal.
£102.11£102.11
MR700929825Steel nails; oval head; 30mm x 3mm. Packs of 1000.£12.26£325.60
MF123456710Large pack Hoover bags£2.56£25.60
MX378019821Womans waterproof jacket
Options - Red and charcoal.
£102.11£102.11
MR700929825Steel nails; oval head; 30mm x 3mm. Packs of 1000.£12.26£325.60
MF123456710Large pack Hoover bags£2.56£25.60
MX378019821Womans waterproof jacket
Options - Red and charcoal.
£102.11£102.11
MR700929825Steel nails; oval head; 30mm x 3mm. Packs of 1000.£12.26£325.60
MF123456710Large pack Hoover bags£2.56£25.60
MX378019821Womans waterproof jacket
Options - Red and charcoal.
£102.11£102.11
MR700929825Steel nails; oval head; 30mm x 3mm. Packs of 1000.£12.26£325.60
MF123456710Large pack Hoover bags£2.56£25.60
MX378019821Womans waterproof jacket
Options - Red and charcoal.
£102.11£102.11
MF123456710Large pack Hoover bags£2.56£25.60
MX378019821Womans waterproof jacket
Options - Red and charcoal.
£102.11£102.11
MR700929825Steel nails; oval head; 30mm x 3mm. Packs of 1000.£12.26£325.60
MR700929825Steel nails; oval head; 30mm x 3mm. Packs of 1000.£12.26£325.60
MF123456710Large pack Hoover bags£2.56£25.60
MX378019821Womans waterproof jacket
Options - Red and charcoal.
£102.11£102.11
MR700929825Steel nails; oval head; 30mm x 3mm. Packs of 1000.£12.26£325.60
Subtotal:£1825.60
Tax:£18.25
Shipping:£42.56
TOTAL:£1882.56
Deposit:£100.00
Balance due:£1782.56
- - -
Payment terms: payment due in 30 days
- - - - -'; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -define('_MPDF_PATH','../'); -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',20,15,48,25,10,10); -$mpdf->SetProtection(array('print')); -$mpdf->SetTitle("Acme Trading Co. - Invoice"); -$mpdf->SetAuthor("Acme Trading Co."); -$mpdf->SetWatermarkText("Paid"); -$mpdf->showWatermarkText = true; -$mpdf->watermark_font = 'DejaVuSansCondensed'; -$mpdf->watermarkTextAlpha = 0.1; -$mpdf->SetDisplayMode('fullpage'); - - - -$mpdf->WriteHTML($html); - - -$mpdf->Output(); exit; - -exit; - -?> \ No newline at end of file diff --git a/mpdf/examples/example35_watermarks.php b/mpdf/examples/example35_watermarks.php deleted file mode 100644 index a4c1ae6..0000000 --- a/mpdf/examples/example35_watermarks.php +++ /dev/null @@ -1,58 +0,0 @@ -mPDF -

Watermarks

-

P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- -
- -
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
-
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
- -
Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
- -
Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
- -'; - - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('c'); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->SetWatermarkText('DRAFT'); -$mpdf->watermark_font = 'DejaVuSansCondensed'; -$mpdf->showWatermarkText = true; - -$mpdf->WriteHTML($html); -$mpdf->AddPage(); - -$mpdf->SetWatermarkImage('tiger.wmf', 1, '', array(160,10)); -$mpdf->showWatermarkImage = true; - -$mpdf->WriteHTML('

Using a Watermark as a Header

'); -$mpdf->WriteHTML($html); -$mpdf->AddPage(); - -$mpdf->SetWatermarkImage('tiger.wmf', 0.15, 'F'); - -$mpdf->WriteHTML('

Using a Watermark Image as Background

'); -$mpdf->WriteHTML($html); - - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example36_annotations_and_Attached_files.php b/mpdf/examples/example36_annotations_and_Attached_files.php deleted file mode 100644 index 63e8c5d..0000000 --- a/mpdf/examples/example36_annotations_and_Attached_files.php +++ /dev/null @@ -1,36 +0,0 @@ -mPDF -

Annotations

-
Heading 5
-
Heading 6
-

P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- -'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c'); - -$mpdf->title2annots = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example37_barcodes.php b/mpdf/examples/example37_barcodes.php deleted file mode 100644 index 34ec882..0000000 --- a/mpdf/examples/example37_barcodes.php +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - - -

mPDF

-

Barcodes

-

NB Quiet zones - The barcode object includes space to the right/left or top/bottom only when the specification states a \'quiet zone\' or \'light margin\'. All the examples below also have CSS property set on the barcode object i.e. padding: 1.5mm;

- -

EAN-13 Barcodes (EAN-2 and EAN-5)

-

NB EAN-13, UPC-A, UPC-E, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

-

A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
CODEDESCRIPTIONBARCODE
EAN13Standard EAN-13 barcode. Accepts 12 or 13 characters (creating checksum digit if required). [0-9] numeric only.
ISBNStandard EAN-13 barcode with \'ISBN\' number shown above [shown at height="0.66"]
ISSNStandard EAN-13 barcode with \'ISSN\' number shown above [shown at size="0.8"]
- -

EAN-8, UPC-A and UPC-E Barcodes

-

UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

-

A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
CODEDESCRIPTIONBARCODE
UPCAUPC-A barcode. This is a subset of the EAN-13. (098277211236) Accepts 11 or 12 characters (creating checksum digit if required). [0-9] numeric only
UPCEUPC-E barcode. Requires the UPC-A code to be entered as above (e.g. 042100005264 to give 425261). NB mPDF will die with an error message if the code is not valid, as only some UPC-A codes can be converted into valid UPC-E codes. UPC-E doesn\'t have a check digit encoded explicity, rather the check digit is encoded in the parity of the other six characters. The check digit that is encoded is the check digit from the original UPC-A barcode.
EAN8EAN-8. Accepts 7 or 8 characters (creating checksum digit if required). [0-9] numeric only
- -

EAN-2 and EAN-5 supplements, and combined forms

-

UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CODEDESCRIPTIONBARCODE
EAN2EAN-2 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Used to denote an issue of a periodical. EAN-2 supplement accepts 2 digits [0-9] only, EAN-5 five.
EAN5EAN-5 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Usually used in conjunction with EAN-13 for the price of books. 90000 is the code for no price.
EAN13P2Standard EAN-13 barcode with 2-digit UPC supplement (07)
ISBNP2Standard EAN-13 barcode with \'ISBN\' number shown above, and 2-digit EAN-2 supplement
ISSNP2Standard EAN-13 barcode with \'ISSN\' number shown above, and 2-digit EAN-2 supplement
UPCAP2UPC-A barcode with 2-digit EAN-2 supplement. This is a subset of the EAN-13.
UPCEP2UPC-E barcode with 2-digit EAN-2 supplement.
EAN8P2EAN-8 barcode with 2-digit EAN-2 supplement
EAN13P5Standard EAN-13 barcode with 5-digit UPC supplement (90000)
ISBNP5Standard EAN-13 barcode with \'ISBN\' number shown above, and 5-digit EAN-5 supplement
ISSNP5Standard EAN-13 barcode with \'ISSN\' number shown above, and 5-digit EAN-5 supplement
UPCAP5UPC-A barcode with 5-digit EAN-5 supplement. This is a subset of the EAN-13
UPCEP5UPC-E barcode with 5-digit EAN-5 supplement. (042100005264 90000)
EAN8P5EAN-8 barcode with 5-digit EAN-5 supplement (55123457 90000)
- -

Postcode Barcodes

-

These all have sizes fixed by their specification. Although they can be altered using \'size\' it is not recommended. \'height\' is ignored.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CODEDESCRIPTIONBARCODE
IMBIntelligent Mail Barcode - also known as: USPS OneCode 4-State Customer Barcode, OneCode 4CB, USPS 4CB, 4-CB, 4-State Customer Barcode, USPS OneCode Solution Barcode. (01234567094987654321-01234567891) Accepts: Up to 31 digits (required 20-digit Tracking Code, and up to 11-digit Routing Code; this may be 0, 5, 9, or 11 digits). If the Routing code is included, it should be spearated by a hyphen - like this example.
RM4SCCRoyal Mail 4-state Customer barcode (SN34RD1A). Accepts: max. 9 characters. Valid characters: [A-Z,0-9] Checksum digit: automatic.
KIXDutch KIX version of Royal Mail 4-state Customer barcode (SN34RD1A). Valid characters: [A-Z,0-9]. Checksum digit: automatic.
POSTNETPOSTNET barcode. Accepts 5, 9 or 11 digits. Valid characters: [0-9]. Checksum digit: automatic.
PLANETPLANET barcode. Accepts 11 or 13 digits. Valid characters: [0-9]. Checksum digit: automatic.
- - -

Variable width Barcodes

-

These barcodes are all of variable length depending on the code entered. There is no recommended maximum size for any of these specs, but all recommend a minimum X-dimension (width of narrowest bar) as 7.5mil (=0.19mm). The default used here is twice the minimum i.e. X-dim = 0.38mm.

-

The specifications give a minimum height of 15% of the barcode length (which can be variable). The bar height in mPDF is set to a default value of 10mm.

-

\'size\' will scale the barcode in both dimensions. mPDF will accept any number, but bear in mind that size="0.5" will set the bar width to the minimum. The \'height\' attribute further allows scaling - this factor is applied to already scaled barcode. Thus size="2" height="0.5" will give a barcode twice the default width (X-dim=0.76mm) and at the default height set in mPDF i.e. 10mm.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CODEDESCRIPTIONBARCODE
C128ACODE 128 A. Valid characters: [A-Z uppercase and control chars ASCII 0-31]. Checksum digit: automatic.
C128BCODE 128 B. Valid characters: [Upper / Lower Case + All ASCII Printable Characters]. Checksum digit: automatic.
C128CCODE 128 C. Valid characters: [0-9]. Must be an even number of digits. Checksum digit: automatic.
EAN128C [A/B/C]EAN128 (A, B, and C). Specified variant of Code 128, utilising an FNC1 start code. Also known as UCC/EAN-128 or GS1-128. Valid characters: [cf. Code 128]. Checksum digit: automatic.
C39CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. Valid characters: [0-9 A-Z \'-\' . Space $/+%]
C39+CODE 39 + CHECKSUM. Checksum digit: automatic.
C39ECODE 39 EXTENDED. Valid characters: [ASCII-characters between 0..127]
C39E+CODE 39 EXTENDED + CHECKSUM. Checksum digit: automatic.
S25Standard 2 of 5. Valid characters: [0-9]
S25+Standard 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
I25Interleaved 2 of 5. Valid characters: [0-9]
I25+Interleaved 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
I25BInterleaved 2 of 5 with bearer bars. Valid characters: [0-9]
I25B+Interleaved 2 of 5 + CHECKSUM with bearer bars. Valid characters: [0-9]. Checksum digit: automatic.
C93CODE 93 - USS-93 (extended). Valid characters: [ASCII-characters between 0..127]. Checksum digits: automatic.
MSIMSI. Modified Plessey. Valid characters: [0-9]
MSI+MSI + CHECKSUM (module 11). Checksum digit: automatic.
CODABARCODABAR. Valid characters: [0-9 \'-\' $:/.+ ABCD] ABCD are used as stop and start characters e.g. A34698735B
CODE11CODE 11. Valid characters: [0-9 and \'-\']. Checksum digits: 1 (or 2 if length of code is > 10 characters) - automatic.
- - - - -
- -
-
Useful links
-

http://www.adams1.com

-

http://www.tec-it.com/Download/PDF/Barcode_Reference_EN.pdf

-

http://www.tec-it.com/en/support/knowbase/symbologies/barcode-overview/linear/Default.aspx

-

http://www.gs1uk.org/downloads/bar_code/Bar%20coding%20getting%20it%20right.pdf

-

http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm (EAN2 and EAN5)

-

http://www.barcodeisland.com/ean13.phtml (UPC-A)

-

http://www.idautomation.com/fonts/postnet/#Specifications

-

http://www.outputlinks.com/sites/AFP/ibm_bcocafaq.pdf

-

https://ribbs.usps.gov/intelligentmail_mailpieces/documents/tech_guides/USPSIMB_Tech_Resource_Guide.pdf (Intelligent Mail)

-

http://www.mailsorttechnical.com/downloads_mailsort_user_guide.cfm

- -

http://www.mailsorttechnical.com/docs/mug_jun_2009/MUG_10_2008_Mailsort_700.pdf page 20

- - -
- - -
-

Human-readable text

-Human-readable text is only produced as part of the barcode object in EAN-13, ISBN, ISSN, EAN-8, UPC-A and UPC-E. Here is an example to add text to a barcode: -
- -
- -<div style="position:fixed; right: 50mm; top: 60mm; border: 0.2mm solid #000000; text-align: center; padding: 0.5mm; padding-top: 2mm;">
-<barcode code="00034698735346987355" type="EAN128C" /><br />
-<div style="font-family: ocrb;">(00) 0346987 35346987 355</div>
-</div> - -
- -
-
-
(00) 0346987 35346987 355
-
- - - -'; -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('','','','',20,15,25,25,10,10); -$mpdf->WriteHTML($html); -$mpdf->Output(); - -exit; - -?> \ No newline at end of file diff --git a/mpdf/examples/example38_dot_tab.php b/mpdf/examples/example38_dot_tab.php deleted file mode 100644 index 6d9d425..0000000 --- a/mpdf/examples/example38_dot_tab.php +++ /dev/null @@ -1,43 +0,0 @@ - -dottab.menu { - outdent: 4em; -} -p.menu { - text-align: left; - padding-right: 4em; -} - - -

Menu

- -
- - - - - - - - - -
-'; - - -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - - - -?> \ No newline at end of file diff --git a/mpdf/examples/example39_PDFA_compliance.php b/mpdf/examples/example39_PDFA_compliance.php deleted file mode 100644 index f43b023..0000000 --- a/mpdf/examples/example39_PDFA_compliance.php +++ /dev/null @@ -1,31 +0,0 @@ -mPDF -

PDFA Compliance

-

PDF/A1-b is a file format for the long-term archiving of electronic documents. This is an example of a PDF/A1-b compliant files.

-'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->PDFA = true; -$mpdf->PDFAauto = true; -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example40_MPDFI_thumbnails.php b/mpdf/examples/example40_MPDFI_thumbnails.php deleted file mode 100644 index 709ea8d..0000000 --- a/mpdf/examples/example40_MPDFI_thumbnails.php +++ /dev/null @@ -1,20 +0,0 @@ -SetImportUse(); - -$mpdf->Thumbnail('sample_orientation2.pdf', 4, 5); // number per row // spacing in mm - -$mpdf->WriteHTML('
Now with rotated pages
'); - -$mpdf->Thumbnail('sample_orientation3.pdf', 4); // number per row // spacing in mm - - -$mpdf->Output(); - -exit; - - -?> \ No newline at end of file diff --git a/mpdf/examples/example41_MPDFI_template.php b/mpdf/examples/example41_MPDFI_template.php deleted file mode 100644 index 12f592d..0000000 --- a/mpdf/examples/example41_MPDFI_template.php +++ /dev/null @@ -1,36 +0,0 @@ -SetImportUse(); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->SetCompression(false); - -// Add First page -$pagecount = $mpdf->SetSourceFile('sample_basic.pdf'); - -$crop_x = 50; -$crop_y = 50; -$crop_w = 100; -$crop_h = 100; - -$tplIdx = $mpdf->ImportPage(2, $crop_x, $crop_y, $crop_w, $crop_h); - -$x = 50; -$y = 50; -$w = 100; -$h = 100; - -$mpdf->UseTemplate($tplIdx, $x, $y, $w, $h); - -$mpdf->Rect($x, $y, $w, $h); - -$mpdf->Output('newpdf.pdf', 'I'); - -exit; - - -?> \ No newline at end of file diff --git a/mpdf/examples/example42_MPDFI_templatedoc.php b/mpdf/examples/example42_MPDFI_templatedoc.php deleted file mode 100644 index 2b670ca..0000000 --- a/mpdf/examples/example42_MPDFI_templatedoc.php +++ /dev/null @@ -1,35 +0,0 @@ -SetImportUse(); - -$mpdf->SetDocTemplate('sample_logoheader2.pdf',1); // 1|0 to continue after end of document or not - used on matching page numbers - -//=================================================== -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -//=================================================== - -$mpdf->RestartDocTemplate(); - -//=================================================== -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -//=================================================== - - -$mpdf->Output(); - -exit; - -?> \ No newline at end of file diff --git a/mpdf/examples/example43_MPDFI_booklet.php b/mpdf/examples/example43_MPDFI_booklet.php deleted file mode 100644 index 8144a3a..0000000 --- a/mpdf/examples/example43_MPDFI_booklet.php +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -

mPDF Example Booklet

-

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

- -

Little Women - Chapter One - Playing Pilgrims

- -

Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

Jo immediately sat up, put her hands in her pockets, and began to whistle.

Don\'t, Jo. It\'s so boyish!

That\'s why I do it.

I detest rude, unladylike girls!

I hate affected, niminy-piminy chits!

Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

- -

Little Women - Chapter One - Playing Pilgrims

- -

Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

Jo immediately sat up, put her hands in her pockets, and began to whistle.

Don\'t, Jo. It\'s so boyish!

That\'s why I do it.

I detest rude, unladylike girls!

I hate affected, niminy-piminy chits!

Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

- -'; - -//============================================================== -//============================================================== -//============================================================== - - -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->mirrorMargins = 1; -$mpdf->SetDisplayMode('fullpage','two'); -$mpdf->useOnlyCoreFonts = true; -$mpdf->defaultfooterfontsize = 13; -$mpdf->AddPage(); -$mpdf->Image('clematis.jpg',0,0,210,297,'jpg','',true, false); // e.g. the last "false" allows a full page picture -$mpdf->y = 70; -$mpdf->Shaded_box('mPDF Example File', 'Arial', '', 28, '70%', 'DF', 3, '#FFFFFF', '#000044', 10); - -$mpdf->AddPage(); -$mpdf->SetFooter('{PAGENO}'); -$mpdf->WriteHTML($html); - - -$mpdf->AddPage('','NEXT-EVEN'); -$mpdf->SetFooter(); -$mpdf->SetAlpha(0.5); -$mpdf->Image('clematis.jpg',0,0,210,297,'jpg','',true, false); // e.g. the last "false" allows a full page picture -$mpdf->SetAlpha(1); - -$mpdf->writeBarcode('978-0-9542246-0-8', 1, 130, 230, 1,0, 3,3,4,4); - -// Save the pages to a file -$mpdf->Output('test.pdf','F'); -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -function GetBookletPages($np, $backcover=true) { - $lastpage = $np; - $np = 4*ceil($np/4); - $pp = array(); - for ($i=1; $i<=$np/2; $i++) { - $p1 = $np - $i + 1; - if ($backcover) { - if ($i == 1) { $p1 = $lastpage; } - else if ($p1 >= $lastpage) { $p1 = 0; } - } - if ($i % 2 == 1) { - $pp[] = array( $p1, $i ); - } - else { - $pp[] = array( $i, $p1 ); - } - } - return $pp; -} - - - -$mpdf=new mPDF('','A4-L','','',0,0,0,0,0,0); -$mpdf->SetImportUse(); -$ow = $mpdf->h; -$oh = $mpdf->w; -$pw = $mpdf->w / 2; -$ph = $mpdf->h; - -$mpdf->SetDisplayMode('fullpage'); - -$pagecount = $mpdf->SetSourceFile('test.pdf'); -$pp = GetBookletPages($pagecount); - -foreach($pp AS $v) { - $mpdf->AddPage(); - if ($v[0]>0 && $v[0]<=$pagecount) { - $tplIdx = $mpdf->ImportPage($v[0], 0,0,$ow,$oh); - $mpdf->UseTemplate($tplIdx, 0, 0, $pw, $ph); - } - if ($v[1]>0 && $v[1]<=$pagecount) { - $tplIdx = $mpdf->ImportPage($v[1], 0,0,$ow,$oh); - $mpdf->UseTemplate($tplIdx, $pw, 0, $pw, $ph); - } -} - -$mpdf->Output(); - -exit; - -?> \ No newline at end of file diff --git a/mpdf/examples/example44_MPDFI_yearbook.php b/mpdf/examples/example44_MPDFI_yearbook.php deleted file mode 100644 index 2420b9f..0000000 --- a/mpdf/examples/example44_MPDFI_yearbook.php +++ /dev/null @@ -1,150 +0,0 @@ - -div { text-align: justify; } - -

Joanne Smith 2002-2007

This is the normal text in the div: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque, risus at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
-'; - -$html2 = ' - -

Tim Another 2001-2007

This is the normal text in the div: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque, risus at eleifend lacus sapien et risus. Phasellus metus, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
-Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
-'; - -for($i=1; $i<=10; $i++) { - // $html = $html; - if ($i % 3 == 1) { $html = $html2; } - else { $html = $html1; } - $pph[$i] = SinglePage($html, $pw, $ph, $minK) ; // $pph saves the actual height of each page -} -//============================================================== -// Save the pages to a file -$mpdf->Output('test.pdf','F'); - -// Now collate those pages using IMPORT - 4 pages to one page - -$mpdf=new mPDF(); -$mpdf->SetImportUse(); -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->SetHeader('{DATE j-m-Y}|My Yearbook 2005|{PAGENO}'); -$mpdf->SetFooter('|Printed using mPDF|'); - -$pagecount = $mpdf->SetSourceFile('test.pdf'); -for($i=1; $i<=$pagecount; $i++) { - if ($i % 4 == 1) { $mpdf->AddPage(); } - $pgheight = $mpdf->h - $mpdf->tMargin - $mpdf->bMargin; - $hspacing = min($spacing,($mpdf->pgwidth - $pw*2) ); - $vspacing = min($spacing,($pgheight - $ph*2) ); - $x1 = $mpdf->lMargin + ($mpdf->pgwidth/2 - $hspacing/2 - $pw)/2; - $x2 = $mpdf->lMargin + $mpdf->pgwidth/2 + $hspacing/2 + ($mpdf->pgwidth/2 - $hspacing/2 - $pw)/2; - $y1 = $mpdf->tMargin + ($pgheight /2 - $vspacing/2 - $ph)/2; - $y2 = $mpdf->tMargin + $pgheight /2 + $vspacing/2 + ($pgheight /2 - $vspacing/2 - $ph)/2; - if ($i % 4 == 1) { $x = $x1; $y = $y1; } - else if ($i % 4 == 2) { $x = $x2; $y = $y1; } - else if ($i % 4 == 3) { $x = $x1; $y = $y2; } - else if ($i % 4 == 0) { $x = $x2; $y = $y2; } - $tplIdx = $mpdf->ImportPage($i, 0,0,$pw,$pph[$i]); - - if ($align=='T') { $mpdf->UseTemplate($tplIdx, $x, $y, $pw, $pph[$i]); } - else { $mpdf->UseTemplate($tplIdx, $x, ($y + (($ph - $pph[$i])/2)), $pw, $pph[$i]); } - - if ($border >= 0) { $mpdf->Rect($x-$border, $y-$border, $pw+2*$border, $ph+2*$border); } -} - -$mpdf->Output(); - -exit; - -//============================================================== -function SinglePage($html, $pw, $ph, $minK=1, $inc=0.1) { -// returns height of page -global $mpdf; - $mpdf->AddPage('','','','','','',($mpdf->w - $pw),'',($mpdf->h - $ph),0,0); - $k = 1; - - $currpage = $mpdf->page; - $mpdf->WriteHTML($html); - - $newpage = $mpdf->page; - while($currpage != $newpage) { - for($u=0;$u<=($newpage-$currpage);$u++) { - // DELETE PAGE - the added page - unset($mpdf->pages[$mpdf->page]); - if (isset($mpdf->ktAnnots[$mpdf->page])) { unset( $mpdf->ktAnnots[$mpdf->page] ); } - if (isset($mpdf->tbrot_Annots[$mpdf->page])) { unset( $mpdf->tbrot_Annots[$mpdf->page] ); } - if (isset($mpdf->kwt_Annots[$mpdf->page])) { unset( $mpdf->kwt_Annots[$mpdf->page] ); } - if (isset($mpdf->PageAnnots[$mpdf->page])) { unset( $mpdf->PageAnnots[$mpdf->page] ); } - if (isset($mpdf->ktBlock[$mpdf->page])) { unset( $mpdf->ktBlock[$mpdf->page] ); } - if (isset($mpdf->PageLinks[$mpdf->page])) { unset( $mpdf->PageLinks[$mpdf->page] ); } - if (isset($mpdf->pageoutput[$mpdf->page])) { unset( $mpdf->pageoutput[$mpdf->page] ); } - // Go to page before - so can addpage - $mpdf->page--; - } - // mPDF 2.4 Float Images - if (count($mpdf->floatbuffer)) { - $mpdf->objectbuffer[] = $mpdf->floatbuffer['objattr']; - $mpdf->printobjectbuffer(false); - $mpdf->objectbuffer = array(); - $mpdf->floatbuffer = array(); - $mpdf->float = false; - } - - - $k += $inc; - if ((1/$k) < $minK) { die("Page no. ".$mpdf->page." is too large to fit"); } - $w = $pw * $k; - $h = $ph * $k; - $mpdf->_beginpage('','',($mpdf->w - $w),'',($mpdf->h - $h)); - $currpage = $mpdf->page; - - $mpdf->_out('2 J'); - $mpdf->_out(sprintf('%.2f w',0.1*$mpdf->k)); - $mpdf->SetFont($mpdf->default_font,'',$mpdf->default_font_size ,true,true); // forces write - $mpdf->SetDrawColor(0); - $mpdf->SetFillColor(255); - $mpdf->SetTextColor(0); - $mpdf->ColorFlag=false; - - // Start Transformation - $mpdf->StartTransform(); - $mpdf->transformScale((100/$k), (100/$k), 0, 0); - - $mpdf->WriteHTML($html); - - $newpage = $mpdf->page; - - //Stop Transformation - $mpdf->StopTransform(); - } - return ($mpdf->y / $k); -} -?> \ No newline at end of file diff --git a/mpdf/examples/example46_progress_bars_simple.php b/mpdf/examples/example46_progress_bars_simple.php deleted file mode 100644 index 165678c..0000000 --- a/mpdf/examples/example46_progress_bars_simple.php +++ /dev/null @@ -1,1652 +0,0 @@ - - - - - - - - -
mPDF Example File
-
- -
mPDF Example File
-
- -
{PAGENO}/{nbpg}
-
- -
{PAGENO}/{nbpg}
-
- - - - - - - -
- -
- -
-
-mPDF Example File -
-
- - - -

The front cover can also be produced like this:

- -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture - -$mpdf->y = 70; -$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10); -')) .'
- - - - - - - - - - - - - -

(H1) mPDF

-

(H2) Section 1

-

(H3) HTML Markup

- - - - -

Heading 4

-
Heading 5
-
Heading 6
-

P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- -
- -
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
-
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
- -
Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
- -
Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
- -
PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
-nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
-dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
-sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
-Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
-ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
- - - -
Styles - tt(teletype) italic bold big small emphasis strong
new lines
-code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
- -

Paragraph using the in-line style to determine the font-size (15pt) and colour

- - -

Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

-

This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

- -

This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

The above repeated, but starting with a paragraph with font-size specified (7pt)

- -

This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

- -

This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

- -

This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

This tests underline and strikethrough when they are used together as they both use text-decoration

- - -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -
    -
  1. Item 1
  2. -
  3. Item 232
  4. -
  5. Item 3
  6. -
  7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. -
      -
    • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
    • -
    • Subitem 2 -
        -
      • -Level 3 subitem -
      • -
      -
    • -
    -
  8. -
  9. Item 5
  10. -
- -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DataDataDataData
2nd line
More DataMore DataMore DataData
2nd line
DataDataDataData
2nd line
DataDataDataData
2nd line
- -This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding. -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

- - - - - -

Hyphenation

- -

Little Women - Chapter One - Playing Pilgrims

- - -

Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

Jo immediately sat up, put her hands in her pockets, and began to whistle.

Don\'t, Jo. It\'s so boyish!

That\'s why I do it.

I detest rude, unladylike girls!

I hate affected, niminy-piminy chits!

Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

- - - - - - - - - - -

Lists

-
-
    -
  1. Text here lorem ipsum ibisque totum.
  2. -
  3. Text here lorem ipsum ibisque totum.
  4. -
  5. Text here lorem ipsum ibisque totum.
  6. -
  7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
  8. -
  9. Text here lorem ipsum ibisque totum.
  10. -
  11. Text here lorem ipsum ibisque totum. -
      -
    1. Text here lorem ipsum ibisque totum.
    2. -
    3. Text here lorem ipsum ibisque totum.
    4. -
    5. Text here lorem ipsum ibisque totum.
    6. -
    7. Text here lorem ipsum ibisque totum.
    8. -
    9. Text here lorem ipsum ibisque totum.
    10. -
    11. Text here lorem ipsum ibisque totum. -
        -
      1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum. -
      4. -
      5. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum. -
            -
          1. Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum.
          4. -
          5. Text here lorem ipsum ibisque totum.
          6. -
          7. Text here lorem ipsum ibisque totum.
          8. -
          9. Text here lorem ipsum ibisque totum.
          10. -
          -
        10. -
        11. Text here lorem ipsum ibisque totum.
        12. -
        13. Text here lorem ipsum ibisque totum.
        14. -
        15. Text here lorem ipsum ibisque totum.
        16. -
        17. Text here lorem ipsum ibisque totum.
        18. -
        -
      6. -
      7. Text here lorem ipsum ibisque totum.
      8. -
      -
    12. -
    13. Text here lorem ipsum ibisque totum.
    14. -
    15. Text here lorem ipsum ibisque totum.
    16. -
    17. Text here lorem ipsum ibisque totum.
    18. -
    19. Text here lorem ipsum ibisque totum.
    20. -
    -
  12. -
  13. Text here lorem ipsum ibisque totum.
  14. -
  15. Text here lorem ipsum ibisque totum. -
      -
    1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
    2. -
    3. Text here lorem ipsum ibisque totum.
    4. -
    5. Text here lorem ipsum ibisque totum. -
        -
      1. Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum.
      4. -
      5. Text here lorem ipsum ibisque totum.
      6. -
      7. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        -
      8. -
      9. Text here lorem ipsum ibisque totum.
      10. -
      11. Text here lorem ipsum ibisque totum.
      12. -
      13. Text here lorem ipsum ibisque totum. -
          -
        1. No class specified. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        -
      14. -
      -
    6. -
    -
  16. -
  17. Text here lorem ipsum ibisque totum.
  18. -
  19. Text here lorem ipsum ibisque totum.
  20. -
  21. Text here lorem ipsum ibisque totum.
  22. -
  23. Text here lorem ipsum ibisque totum.
  24. -
  25. Text here lorem ipsum ibisque totum.
  26. -
  27. Text here lorem ipsum ibisque totum.
  28. -
  29. Text here lorem ipsum ibisque totum.
  30. -
-
- - - -

Tables

-

mPDF supports all in-line properties inside tables.

- - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-This is data out of p -

This is bold data p

-This is bold data out of p
-This is normal data after br -

Heading 3 inside a table

-Text here lorem ipsum ibisque totum.32 -
This is data div
-This is data out of div -
This is data div (bold)
-This is data out of div -
Also data
- -

This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

- - - - -
Row 1This is dataThis is data
Row 2

This is data p

More data

Row 3

This is long data

This is data
- - -

Tables

-

The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

-

bpmTopic Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-
-

More data

-
-

Row 3

-
-

This is long data

-
This is data
-

Row 4 <td> cell

-
This is data -

This is data

-
Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
- -

 

- -

bpmTopicC Class (centered) Odd and Even rows

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col/Row Header -

Second column header p

-
Third column header
Row header 1This is dataThis is data
Row header 2 -

This is data p

-
-

This is data

-
-

Row header 3

-
-

This is long data

-
This is data
-

Row header 4

-

<th> cell acting as header

-
This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
- -

 

- -

bpmTopnTail Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-
-

This is data

-
-

Row 3

-
-

This is long data

-
This is data
-

Row 4 <td> cell

-
This is data -

This is data

-
Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
-

 

-

bpmTopnTailC Class (centered) Odd and Even rows

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col/Row Header -

Second column header p

-
Third column header
Row header 1This is dataThis is data
Row header 2 -

This is data p

-
-

This is data

-
-

Row header 3

-
-

This is long data

-
This is data
-

Row header 4

-

<th> cell acting as header

-
This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
- -

 

- -

TopnTail Class

- - - - - - - - - - - - - - - - - - - - - - - - - -
Col and Row Header -

Second

-

column

-
Top right align
-

Row header 1 p

-
This is dataThis is data
Row header 2Bottom right align -

This is data. Can use

-

bold italic sub or sup text

-
-

Bottom right align

-
-

This is data. This cell

-

uses Cell Styles to set

-

the borders.

-

All borders are collapsible

-

in mPDF.

-
This is data
Row header 4 -

This is data p

-
More data
Row header 5Also data merged and centered
- -

 

- -

Lists in a Table

- - - - - - - - - - - - - - -
Col and Row Header -

Second

-

column

-
Top right align
-

Row header 1 p

-
This is dataThis is data
Row header 2 -
    -
  1. Item 1
  2. -
  3. Item 2 -
      -
    1. Subitem of ordered list
    2. -
    3. Subitem 2 -
        -
      1. Level 3 subitem
      2. -
      3. Level 3 subitem
      4. -
      -
    4. -
    -
  4. -
  5. Item 3
  6. -
  7. Another Item
  8. -
  9. Subitem -
      -
    1. Level 3 subitem
    2. -
    -
  10. -
  11. Another Item
  12. -
-
-Unordered list: -
    -
  • Item 1
  • -
  • Item 2 -
      -
    • Subitem of unordered list
    • -
    • Subitem 2 -
        -
      • Level 3 subitem
      • -
      • Level 3 subitem
      • -
      • Level 3 subitem
      • -
      -
    • -
    -
  • -
  • Item 3
  • -
-
-

 

- - -

Automatic Column Width

- - - - - - - - - -
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti
MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
- - -

Column span

- - - - - - - - - - -
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti
MechanismsFusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
-Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
- - - -

Header & Footer Rows

-

A table using a header or footer row should repeat the header/footer row across pages:

-

bpmTopicC Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col and Row Header -

Second column header

-
Third column header
Col and Row Footer -

Second column footer

-
Third column footer
Row header 1This is dataThis is data
Row header 2This is data -

This is data

-
-

Row header 3

-
-

This is data

-
This is data
Row header 4This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
Row header 9Also dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
-

 

- -

Autosizing Tables

-

Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

- -
Periodic Table
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
- - - -

Rotated Tables

-

This is set to rotate -90 degrees (counterclockwise).

- -
Periodic Table
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
-

 

- - -

Rotated text in Tables

- -
Periodic Table
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Element type 1A

Second line

Element type longer 2A

Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
HHe
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
- - - - - - -

Nested Tables

- -
-Text before table - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is dataThis is dataThis is data
This is dataThis is dataThis is data
This is dataThis is dataThis is dataThis is data
- -
- - - -

Text before table

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is data -Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2C3C4
Row DD2D3D4
-

Text after table

-
This is data
Row 2This is dataThis is dataThis is data
Row 3 - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B4
Row CC2 - - - - - - - - - - -
F1F2
Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
-
C4
Row DD2D3D4
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2C3C4
Row DD2D3D4
-
This is data
Row 4This is data - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B4
Row CC2 - - - - - - - - - - -
F1F2
Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
-
C4
Row DD2D3D4
-
This is data
- - -
- - - - -

Forms

-
-Textarea - -

-Select - followed by text -

-Input Radio - No      Keep      Choice -

-Input Text - -

-Input Password - -

- Checkboxes
- Not selected
- Disabled
- Selected -

- - - - -

-
- - - - -

Annotations

-

Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

-

P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - - - -

Full Images & Barcode

-

On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".

- - - -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->SetAlpha(0.5); -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture -$mpdf->SetAlpha(1); -')) .'
- - -

The back cover also has an ISBN barcode

- - -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); -')) .'
- - -

But next is inserted the Index, which can also be done like this:

- - -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1); -$mpdf->WriteHTML(\'

Index

\'); -$mpdf->WriteHTML(\'\'); -')) .'
- - - - - - -

Index

- - - - - - -
- -
- -
- -
- - - -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('','A4','','',25,15,21,22,10,10); - -$mpdf->StartProgressBarOutput(); - -$mpdf->mirrorMargins = 1; -$mpdf->SetDisplayMode('fullpage','two'); -$mpdf->list_number_suffix = ')'; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example47_progress_bars_simple_custom.php b/mpdf/examples/example47_progress_bars_simple_custom.php deleted file mode 100644 index 07b5d3f..0000000 --- a/mpdf/examples/example47_progress_bars_simple_custom.php +++ /dev/null @@ -1,1659 +0,0 @@ - - - - - - - - -
mPDF Example File
-
- -
mPDF Example File
-
- -
{PAGENO}/{nbpg}
-
- -
{PAGENO}/{nbpg}
-
- - - - - - - -
- -
- -
-
-mPDF Example File -
-
- - - -

The front cover can also be produced like this:

- -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture - -$mpdf->y = 70; -$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10); -')) .'
- - - - - - - - - - - - - -

(H1) mPDF

-

(H2) Section 1

-

(H3) HTML Markup

- - - - -

Heading 4

-
Heading 5
-
Heading 6
-

P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- -
- -
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
-
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
- -
Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
- -
Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
- -
PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
-nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
-dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
-sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
-Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
-ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
- - - -
Styles - tt(teletype) italic bold big small emphasis strong
new lines
-code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
- -

Paragraph using the in-line style to determine the font-size (15pt) and colour

- - -

Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

-

This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

- -

This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

The above repeated, but starting with a paragraph with font-size specified (7pt)

- -

This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

- -

This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

- -

This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

This tests underline and strikethrough when they are used together as they both use text-decoration

- - -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -
    -
  1. Item 1
  2. -
  3. Item 232
  4. -
  5. Item 3
  6. -
  7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. -
      -
    • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
    • -
    • Subitem 2 -
        -
      • -Level 3 subitem -
      • -
      -
    • -
    -
  8. -
  9. Item 5
  10. -
- -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DataDataDataData
2nd line
More DataMore DataMore DataData
2nd line
DataDataDataData
2nd line
DataDataDataData
2nd line
- -This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding. -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

- - - - - -

Hyphenation

- -

Little Women - Chapter One - Playing Pilgrims

- - -

Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

Jo immediately sat up, put her hands in her pockets, and began to whistle.

Don\'t, Jo. It\'s so boyish!

That\'s why I do it.

I detest rude, unladylike girls!

I hate affected, niminy-piminy chits!

Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

- - - - - - - - - - -

Lists

-
-
    -
  1. Text here lorem ipsum ibisque totum.
  2. -
  3. Text here lorem ipsum ibisque totum.
  4. -
  5. Text here lorem ipsum ibisque totum.
  6. -
  7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
  8. -
  9. Text here lorem ipsum ibisque totum.
  10. -
  11. Text here lorem ipsum ibisque totum. -
      -
    1. Text here lorem ipsum ibisque totum.
    2. -
    3. Text here lorem ipsum ibisque totum.
    4. -
    5. Text here lorem ipsum ibisque totum.
    6. -
    7. Text here lorem ipsum ibisque totum.
    8. -
    9. Text here lorem ipsum ibisque totum.
    10. -
    11. Text here lorem ipsum ibisque totum. -
        -
      1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum. -
      4. -
      5. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum. -
            -
          1. Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum.
          4. -
          5. Text here lorem ipsum ibisque totum.
          6. -
          7. Text here lorem ipsum ibisque totum.
          8. -
          9. Text here lorem ipsum ibisque totum.
          10. -
          -
        10. -
        11. Text here lorem ipsum ibisque totum.
        12. -
        13. Text here lorem ipsum ibisque totum.
        14. -
        15. Text here lorem ipsum ibisque totum.
        16. -
        17. Text here lorem ipsum ibisque totum.
        18. -
        -
      6. -
      7. Text here lorem ipsum ibisque totum.
      8. -
      -
    12. -
    13. Text here lorem ipsum ibisque totum.
    14. -
    15. Text here lorem ipsum ibisque totum.
    16. -
    17. Text here lorem ipsum ibisque totum.
    18. -
    19. Text here lorem ipsum ibisque totum.
    20. -
    -
  12. -
  13. Text here lorem ipsum ibisque totum.
  14. -
  15. Text here lorem ipsum ibisque totum. -
      -
    1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
    2. -
    3. Text here lorem ipsum ibisque totum.
    4. -
    5. Text here lorem ipsum ibisque totum. -
        -
      1. Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum.
      4. -
      5. Text here lorem ipsum ibisque totum.
      6. -
      7. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        -
      8. -
      9. Text here lorem ipsum ibisque totum.
      10. -
      11. Text here lorem ipsum ibisque totum.
      12. -
      13. Text here lorem ipsum ibisque totum. -
          -
        1. No class specified. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        -
      14. -
      -
    6. -
    -
  16. -
  17. Text here lorem ipsum ibisque totum.
  18. -
  19. Text here lorem ipsum ibisque totum.
  20. -
  21. Text here lorem ipsum ibisque totum.
  22. -
  23. Text here lorem ipsum ibisque totum.
  24. -
  25. Text here lorem ipsum ibisque totum.
  26. -
  27. Text here lorem ipsum ibisque totum.
  28. -
  29. Text here lorem ipsum ibisque totum.
  30. -
-
- - - -

Tables

-

mPDF supports all in-line properties inside tables.

- - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-This is data out of p -

This is bold data p

-This is bold data out of p
-This is normal data after br -

Heading 3 inside a table

-Text here lorem ipsum ibisque totum.32 -
This is data div
-This is data out of div -
This is data div (bold)
-This is data out of div -
Also data
- -

This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

- - - - -
Row 1This is dataThis is data
Row 2

This is data p

More data

Row 3

This is long data

This is data
- - -

Tables

-

The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

-

bpmTopic Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-
-

More data

-
-

Row 3

-
-

This is long data

-
This is data
-

Row 4 <td> cell

-
This is data -

This is data

-
Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
- -

 

- -

bpmTopicC Class (centered) Odd and Even rows

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col/Row Header -

Second column header p

-
Third column header
Row header 1This is dataThis is data
Row header 2 -

This is data p

-
-

This is data

-
-

Row header 3

-
-

This is long data

-
This is data
-

Row header 4

-

<th> cell acting as header

-
This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
- -

 

- -

bpmTopnTail Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-
-

This is data

-
-

Row 3

-
-

This is long data

-
This is data
-

Row 4 <td> cell

-
This is data -

This is data

-
Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
-

 

-

bpmTopnTailC Class (centered) Odd and Even rows

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col/Row Header -

Second column header p

-
Third column header
Row header 1This is dataThis is data
Row header 2 -

This is data p

-
-

This is data

-
-

Row header 3

-
-

This is long data

-
This is data
-

Row header 4

-

<th> cell acting as header

-
This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
- -

 

- -

TopnTail Class

- - - - - - - - - - - - - - - - - - - - - - - - - -
Col and Row Header -

Second

-

column

-
Top right align
-

Row header 1 p

-
This is dataThis is data
Row header 2Bottom right align -

This is data. Can use

-

bold italic sub or sup text

-
-

Bottom right align

-
-

This is data. This cell

-

uses Cell Styles to set

-

the borders.

-

All borders are collapsible

-

in mPDF.

-
This is data
Row header 4 -

This is data p

-
More data
Row header 5Also data merged and centered
- -

 

- -

Lists in a Table

- - - - - - - - - - - - - - -
Col and Row Header -

Second

-

column

-
Top right align
-

Row header 1 p

-
This is dataThis is data
Row header 2 -
    -
  1. Item 1
  2. -
  3. Item 2 -
      -
    1. Subitem of ordered list
    2. -
    3. Subitem 2 -
        -
      1. Level 3 subitem
      2. -
      3. Level 3 subitem
      4. -
      -
    4. -
    -
  4. -
  5. Item 3
  6. -
  7. Another Item
  8. -
  9. Subitem -
      -
    1. Level 3 subitem
    2. -
    -
  10. -
  11. Another Item
  12. -
-
-Unordered list: -
    -
  • Item 1
  • -
  • Item 2 -
      -
    • Subitem of unordered list
    • -
    • Subitem 2 -
        -
      • Level 3 subitem
      • -
      • Level 3 subitem
      • -
      • Level 3 subitem
      • -
      -
    • -
    -
  • -
  • Item 3
  • -
-
-

 

- - -

Automatic Column Width

- - - - - - - - - -
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti
MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
- - -

Column span

- - - - - - - - - - -
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti
MechanismsFusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
-Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
- - - -

Header & Footer Rows

-

A table using a header or footer row should repeat the header/footer row across pages:

-

bpmTopicC Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col and Row Header -

Second column header

-
Third column header
Col and Row Footer -

Second column footer

-
Third column footer
Row header 1This is dataThis is data
Row header 2This is data -

This is data

-
-

Row header 3

-
-

This is data

-
This is data
Row header 4This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
Row header 9Also dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
-

 

- -

Autosizing Tables

-

Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

- -
Periodic Table
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
- - - -

Rotated Tables

-

This is set to rotate -90 degrees (counterclockwise).

- -
Periodic Table
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
-

 

- - -

Rotated text in Tables

- -
Periodic Table
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Element type 1A

Second line

Element type longer 2A

Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
HHe
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
- - - - - - -

Nested Tables

- -
-Text before table - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is dataThis is dataThis is data
This is dataThis is dataThis is data
This is dataThis is dataThis is dataThis is data
- -
- - - -

Text before table

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is data -Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2C3C4
Row DD2D3D4
-

Text after table

-
This is data
Row 2This is dataThis is dataThis is data
Row 3 - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B4
Row CC2 - - - - - - - - - - -
F1F2
Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
-
C4
Row DD2D3D4
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2C3C4
Row DD2D3D4
-
This is data
Row 4This is data - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B4
Row CC2 - - - - - - - - - - -
F1F2
Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
-
C4
Row DD2D3D4
-
This is data
- - -
- - - - -

Forms

-
-Textarea - -

-Select - followed by text -

-Input Radio - No      Keep      Choice -

-Input Text - -

-Input Password - -

- Checkboxes
- Not selected
- Disabled
- Selected -

- - - - -

-
- - - - -

Annotations

-

Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

-

P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - - - - -

Full Images & Barcode

-

On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".

- - - -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->SetAlpha(0.5); -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture -$mpdf->SetAlpha(1); -')) .'
- - -

The back cover also has an ISBN barcode

- - -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); -')) .'
- - -

But next is inserted the Index, which can also be done like this:

- - -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1); -$mpdf->WriteHTML(\'

Index

\'); -$mpdf->WriteHTML(\'\'); -')) .'
- - - - - - -

Index

- - - - - - -
- -
- -
- -
- - - -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('','A4','','',25,15,21,22,10,10); -$mpdf->progbar_altHTML = ' -
Creating PDF file. Please wait...
'; -$mpdf->StartProgressBarOutput(); - -$mpdf->mirrorMargins = 1; -$mpdf->SetDisplayMode('fullpage','two'); -$mpdf->list_number_suffix = ')'; - -$mpdf->debug = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example48_progress_bars_advanced.php b/mpdf/examples/example48_progress_bars_advanced.php deleted file mode 100644 index 7d1a634..0000000 --- a/mpdf/examples/example48_progress_bars_advanced.php +++ /dev/null @@ -1,1658 +0,0 @@ - - - - - - - - -
mPDF Example File
-
- -
mPDF Example File
-
- -
{PAGENO}/{nbpg}
-
- -
{PAGENO}/{nbpg}
-
- - - - - - - -
- -
- -
-
-mPDF Example File -
-
- - - -

The front cover can also be produced like this:

- -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture - -$mpdf->y = 70; -$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10); -')) .'
- - - - - - - - - - - - - -

(H1) mPDF

-

(H2) Section 1

-

(H3) HTML Markup

- - - - -

Heading 4

-
Heading 5
-
Heading 6
-

P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- -
- -
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
-
DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
- -
Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
- -
Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
- -
PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
-nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
-dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
-sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
-Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
-ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
- - - -
Styles - tt(teletype) italic bold big small emphasis strong
new lines
-code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
- -

Paragraph using the in-line style to determine the font-size (15pt) and colour

- - -

Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

-

This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

- -

This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

The above repeated, but starting with a paragraph with font-size specified (7pt)

- -

This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

- -

This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

- -

This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

- -

This tests underline and strikethrough when they are used together as they both use text-decoration

- - -

Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -

Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

- -
    -
  1. Item 1
  2. -
  3. Item 232
  4. -
  5. Item 3
  6. -
  7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. -
      -
    • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
    • -
    • Subitem 2 -
        -
      • -Level 3 subitem -
      • -
      -
    • -
    -
  8. -
  9. Item 5
  10. -
- -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DataDataDataData
2nd line
More DataMore DataMore DataData
2nd line
DataDataDataData
2nd line
DataDataDataData
2nd line
- -This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding. -

Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

- - - - - -

Hyphenation

- -

Little Women - Chapter One - Playing Pilgrims

- - -

Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

Jo immediately sat up, put her hands in her pockets, and began to whistle.

Don\'t, Jo. It\'s so boyish!

That\'s why I do it.

I detest rude, unladylike girls!

I hate affected, niminy-piminy chits!

Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

- - - - - - - - - - -

Lists

-
-
    -
  1. Text here lorem ipsum ibisque totum.
  2. -
  3. Text here lorem ipsum ibisque totum.
  4. -
  5. Text here lorem ipsum ibisque totum.
  6. -
  7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
  8. -
  9. Text here lorem ipsum ibisque totum.
  10. -
  11. Text here lorem ipsum ibisque totum. -
      -
    1. Text here lorem ipsum ibisque totum.
    2. -
    3. Text here lorem ipsum ibisque totum.
    4. -
    5. Text here lorem ipsum ibisque totum.
    6. -
    7. Text here lorem ipsum ibisque totum.
    8. -
    9. Text here lorem ipsum ibisque totum.
    10. -
    11. Text here lorem ipsum ibisque totum. -
        -
      1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum. -
      4. -
      5. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum. -
            -
          1. Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum.
          4. -
          5. Text here lorem ipsum ibisque totum.
          6. -
          7. Text here lorem ipsum ibisque totum.
          8. -
          9. Text here lorem ipsum ibisque totum.
          10. -
          -
        10. -
        11. Text here lorem ipsum ibisque totum.
        12. -
        13. Text here lorem ipsum ibisque totum.
        14. -
        15. Text here lorem ipsum ibisque totum.
        16. -
        17. Text here lorem ipsum ibisque totum.
        18. -
        -
      6. -
      7. Text here lorem ipsum ibisque totum.
      8. -
      -
    12. -
    13. Text here lorem ipsum ibisque totum.
    14. -
    15. Text here lorem ipsum ibisque totum.
    16. -
    17. Text here lorem ipsum ibisque totum.
    18. -
    19. Text here lorem ipsum ibisque totum.
    20. -
    -
  12. -
  13. Text here lorem ipsum ibisque totum.
  14. -
  15. Text here lorem ipsum ibisque totum. -
      -
    1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
    2. -
    3. Text here lorem ipsum ibisque totum.
    4. -
    5. Text here lorem ipsum ibisque totum. -
        -
      1. Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum.
      4. -
      5. Text here lorem ipsum ibisque totum.
      6. -
      7. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        -
      8. -
      9. Text here lorem ipsum ibisque totum.
      10. -
      11. Text here lorem ipsum ibisque totum.
      12. -
      13. Text here lorem ipsum ibisque totum. -
          -
        1. No class specified. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        -
      14. -
      -
    6. -
    -
  16. -
  17. Text here lorem ipsum ibisque totum.
  18. -
  19. Text here lorem ipsum ibisque totum.
  20. -
  21. Text here lorem ipsum ibisque totum.
  22. -
  23. Text here lorem ipsum ibisque totum.
  24. -
  25. Text here lorem ipsum ibisque totum.
  26. -
  27. Text here lorem ipsum ibisque totum.
  28. -
  29. Text here lorem ipsum ibisque totum.
  30. -
-
- - - -

Tables

-

mPDF supports all in-line properties inside tables.

- - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-This is data out of p -

This is bold data p

-This is bold data out of p
-This is normal data after br -

Heading 3 inside a table

-Text here lorem ipsum ibisque totum.32 -
This is data div
-This is data out of div -
This is data div (bold)
-This is data out of div -
Also data
- -

This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

- - - - -
Row 1This is dataThis is data
Row 2

This is data p

More data

Row 3

This is long data

This is data
- - -

Tables

-

The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

-

bpmTopic Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-
-

More data

-
-

Row 3

-
-

This is long data

-
This is data
-

Row 4 <td> cell

-
This is data -

This is data

-
Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
- -

 

- -

bpmTopicC Class (centered) Odd and Even rows

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col/Row Header -

Second column header p

-
Third column header
Row header 1This is dataThis is data
Row header 2 -

This is data p

-
-

This is data

-
-

Row header 3

-
-

This is long data

-
This is data
-

Row header 4

-

<th> cell acting as header

-
This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
- -

 

- -

bpmTopnTail Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is dataThis is data
Row 2 -

This is data p

-
-

This is data

-
-

Row 3

-
-

This is long data

-
This is data
-

Row 4 <td> cell

-
This is data -

This is data

-
Row 5Also dataAlso data
Row 6Also dataAlso data
Row 7Also dataAlso data
Row 8Also dataAlso data
-

 

-

bpmTopnTailC Class (centered) Odd and Even rows

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col/Row Header -

Second column header p

-
Third column header
Row header 1This is dataThis is data
Row header 2 -

This is data p

-
-

This is data

-
-

Row header 3

-
-

This is long data

-
This is data
-

Row header 4

-

<th> cell acting as header

-
This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
- -

 

- -

TopnTail Class

- - - - - - - - - - - - - - - - - - - - - - - - - -
Col and Row Header -

Second

-

column

-
Top right align
-

Row header 1 p

-
This is dataThis is data
Row header 2Bottom right align -

This is data. Can use

-

bold italic sub or sup text

-
-

Bottom right align

-
-

This is data. This cell

-

uses Cell Styles to set

-

the borders.

-

All borders are collapsible

-

in mPDF.

-
This is data
Row header 4 -

This is data p

-
More data
Row header 5Also data merged and centered
- -

 

- -

Lists in a Table

- - - - - - - - - - - - - - -
Col and Row Header -

Second

-

column

-
Top right align
-

Row header 1 p

-
This is dataThis is data
Row header 2 -
    -
  1. Item 1
  2. -
  3. Item 2 -
      -
    1. Subitem of ordered list
    2. -
    3. Subitem 2 -
        -
      1. Level 3 subitem
      2. -
      3. Level 3 subitem
      4. -
      -
    4. -
    -
  4. -
  5. Item 3
  6. -
  7. Another Item
  8. -
  9. Subitem -
      -
    1. Level 3 subitem
    2. -
    -
  10. -
  11. Another Item
  12. -
-
-Unordered list: -
    -
  • Item 1
  • -
  • Item 2 -
      -
    • Subitem of unordered list
    • -
    • Subitem 2 -
        -
      • Level 3 subitem
      • -
      • Level 3 subitem
      • -
      • Level 3 subitem
      • -
      -
    • -
    -
  • -
  • Item 3
  • -
-
-

 

- - -

Automatic Column Width

- - - - - - - - - -
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti
MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
- - -

Column span

- - - - - - - - - - -
CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
-Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
-Suspendisse potenti
MechanismsFusce eleifend neque sit amet erat.
-Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
-Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
- - - -

Header & Footer Rows

-

A table using a header or footer row should repeat the header/footer row across pages:

-

bpmTopicC Class

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Col and Row Header -

Second column header

-
Third column header
Col and Row Footer -

Second column footer

-
Third column footer
Row header 1This is dataThis is data
Row header 2This is data -

This is data

-
-

Row header 3

-
-

This is data

-
This is data
Row header 4This is data -

This is data

-
Row header 5Also dataAlso data
Row header 6Also dataAlso data
Row header 7Also dataAlso data
Row header 8Also dataAlso data
Row header 9Also dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
Another Row headerAlso dataAlso data
-

 

- -

Autosizing Tables

-

Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

- -
Periodic Table
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
- - - -

Rotated Tables

-

This is set to rotate -90 degrees (counterclockwise).

- -
Periodic Table
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
-

 

- - -

Rotated text in Tables

- -
Periodic Table
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Element type 1A

Second line

Element type longer 2A

Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
HHe
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra Ac
Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
- - - - - - -

Nested Tables

- -
-Text before table - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
Row DD2D3D4
-
This is data
This is dataThis is dataThis is dataThis is data
This is dataThis is dataThis is data
This is dataThis is dataThis is dataThis is data
- -
- - - -

Text before table

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is data -Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2C3C4
Row DD2D3D4
-

Text after table

-
This is data
Row 2This is dataThis is dataThis is data
Row 3 - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B4
Row CC2 - - - - - - - - - - -
F1F2
Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
-
C4
Row DD2D3D4
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B3B4
Row CC2C3C4
Row DD2D3D4
-
This is data
Row 4This is data - - - - - - - - - - - - - - - - - - - - - - - - - -
Row AA2A3A4
Row BB2B4
Row CC2 - - - - - - - - - - -
F1F2
Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
-
C4
Row DD2D3D4
-
This is data
- - -
- - - - -

Forms

-
-Textarea - -

-Select - followed by text -

-Input Radio - No      Keep      Choice -

-Input Text - -

-Input Password - -

- Checkboxes
- Not selected
- Disabled
- Selected -

- - - - -

-
- - - - -

Annotations

-

Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

-

P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - - - -

Full Images & Barcode

-

On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".

- - - -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->SetAlpha(0.5); -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture -$mpdf->SetAlpha(1); -')) .'
- - -

The back cover also has an ISBN barcode

- - -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); -')) .'
- - -

But next is inserted the Index, which can also be done like this:

- - -
'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1); -$mpdf->WriteHTML(\'

Index

\'); -$mpdf->WriteHTML(\'\'); -')) .'
- - - - - - -

Index

- - - - - - -
- -
- -
- -
- - - -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('','A4','','',25,15,21,22,10,10); - -$mpdf->progbar_heading = 'mPDF file progress (Advanced)'; -$mpdf->StartProgressBarOutput(2); - -$mpdf->mirrorMargins = 1; -$mpdf->SetDisplayMode('fullpage','two'); -$mpdf->list_number_suffix = ')'; - -$mpdf->debug = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example52_lineheight.htm b/mpdf/examples/example52_lineheight.htm deleted file mode 100644 index 73eca93..0000000 --- a/mpdf/examples/example52_lineheight.htm +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -

Line-height & vertical alignment

-
In these examples, top and bottom padding are set to 0, so the block height = line height.
-
The inline text (set to a larger font-size) inherits the line-height as a factor of the largest font-size i.e. the line height will expand to reflect the largest font on the line.
-Line-height: "normal" (set in mPDF by default as 1.33).
-

Normal text 16pt font-size  and normal again

- -
Line-height: 2.0 When using relative line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the largest font.
-

Normal text 16pt font-size  and normal again

- -
Line-heights set as a percentages are computed on the base font-size, and are then inherited and treated the same as absolute lengths. This is also true for "em" values. The line-height of this line is set as 200% of the paragraph font-size (10pt).
-When using absolute line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the base font.
-This means that as far as possible, multiple lines will remain equally spaced
-Line-height: 200%
-

Normal text 16pt font-size  and normal again

- -
If the line includes a font-size greater than 1.6 times the computed line-height, then the text baseline is dropped so that the text will approximately fit within the line-height. -
Line-height: 2em
-

Normal text 18pt font-size  and normal again

- -
If the line includes a font-size greater than 2 times the computed line-height, then the line-height is increased to accommodate the larger fontsize.
-Line-height: 2em
-

Normal text 24pt font-size  and normal again

- - \ No newline at end of file diff --git a/mpdf/examples/example52_new_mPDF_4-2_features.php b/mpdf/examples/example52_new_mPDF_4-2_features.php deleted file mode 100644 index 6cf48c9..0000000 --- a/mpdf/examples/example52_new_mPDF_4-2_features.php +++ /dev/null @@ -1,492 +0,0 @@ - -body { - font-family: \'DejaVu Sans Condensed\'; -} -@page { - margin-top: 2.0cm; - margin-bottom: 2.0cm; - margin-left: 2.3cm; - margin-right: 1.7cm; - margin-header: 8mm; - margin-footer: 8mm; - footer: html_myHTMLFooter; - background-color:#ffffff; -} - -@page :first { - margin-top: 6.5cm; - margin-bottom: 2cm; - header: html_myHTMLHeader; - footer: _blank; - resetpagenum: 1; - background-gradient: linear #FFFFFF #FFFF44 0 0.5 1 0.5; - background: #ccffff url(bgbarcode.png) repeat-y fixed left top; -} -@page letterhead { - margin-top: 2.0cm; - margin-bottom: 2.0cm; - margin-left: 2.3cm; - margin-right: 1.7cm; - margin-header: 8mm; - margin-footer: 8mm; - footer: html_myHTMLFooter; - background-color:#ffffff; -} - -@page letterhead :first { - margin-top: 6.5cm; - margin-bottom: 2cm; - header: html_myHTMLHeader; - footer: _blank; - resetpagenum: 1; -} -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - border-radius: 2mm; - background-clip: border-box; -} -h4 { - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; -} -div.text { - padding:1em; - margin-bottom: 0.25em; - text-align:justify; -} -div.artificial { - font-family: arialuni; /* custom font using MS Arial Unicode */ -} -p { margin-top: 0; } -.code { - font-family: mono; - font-size: 9pt; - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; -} - - - - - - - - -

mPDF Version 4.2

-

New Features

- -
-
    -
  • image handling improved
  • -
  • table layout - additional control over resizing
  • -
  • vertical-alignment of images - better support for all CSS types
  • -
  • top and bottom margins collapse between block elements
  • -
  • improved support for CSS line-height
  • -
  • display progress bar whilst generating file
  • -
  • CSS @page selector can be specified when adding a pagebreak
  • -
  • CSS @page selector allows different margins, backgrounds, headers/footers on :first :left and :right pages
  • -
  • PNG images with alpha channel fully supported
  • -
  • ability to generate italic and bold font variants from base font file
  • -
  • CJK fonts to embed as subsets
  • -
  • "double" border on block elements
  • -
  • character substitution for missing characters in UTF-8 fonts
  • -
  • direct passing of dynamically produced image data
  • -
  • background-gradient and background-image can now co-exist
  • -
- -Note: automatic top- and bottom-margin to accomodate varying header/footer size was introduced in v4.0 but was not highlighted cf. AutoHeaderMargin in the Manual. - -
-
- -
-

Page backgrounds

-Background images, gradients and/or colours can be used together on the same page. On this page, the bars on the left hand side are created using a background-image, whilst a background-gradient sets the background to the whole page. -
-
- -
-

CSS "double" border

-Block elements can now use the CSS property: border(style) = double. See also the tiger logo in the header of this page. -
-
- -
-

CJK fonts to embed as subsets

-When writing documents with Chinese, Japanese or Korean characters, mPDF has previously required the end-user to download Adobe\'s free CJK font pack. -The ability to embed font subsets now makes it feasible to use open license CJK fonts. 2 fonts are now available to download as an additional font-pack: -
    -
  • zn_hannom_a - contains all characters in the SJIS, BIG-5, and GBK codepages; original file was Han Nom A font (Hi-res version) from http://vietunicode.sourceforge.net/fonts/fonts_hannom.html
  • -
  • unbatang - contains all the (Korean) characters in the UHC codepage; original file from from http://kldp.net/projects/unfonts/download
  • -
-The following characters only added an extra 15kB to the size of this PDF file, and approximately 0.15 seconds extra to compile:
- -Chinese (traditional) '."\xe6\x86\x82\xe9\xac\xb1".' ; chinese (simplified) '."\xe6\x9d\xa5\xe8\x87\xaa".' ; japanese '."\xe3\x81\x9f\xe3\x82\x90".' ; korean '."\xed\x82\xa4\xec\x8a\xa4".' -
-
- -
-

Artificial Bold and Italic

-The text in this block is in ArialUnicodeMS font. Using embedded subsets it covers most characters you want to print - BUT it does not have bold, italic, or bold-italic forms.
-From version 4.2, mPDF will create "artificial" font styles if they are not available as separate font files:
-

The quick brown fox jumps over a lazy dog

-

The quick brown fox jumps over a lazy dog

-

The quick brown fox jumps over a lazy dog

-
-
- -
-

Character substitution in UTF-8 files

-This paragraph has the font-family set to Trebuchet MS, and the document has the default font set as DejaVuSansCondensed. -The following characters are not present in the Trebuchet font, and are substituted from the core Adobe Zapfdingbats font:
- -✐ ✑ ✒ ✓ ✔ ✕ ✖ ✗ ✘ ✙ ✚ ✛ ✜ ✝ ✞ ✟
-The characters are not present in the Trebuchet font, and are substituted from the (default) DejaVuSansCondensed font:
-ʀ ʁ ʂ ʃ ʄ ʅ ʆ ʇ ʈ ʉ ʊ ʋ ʌ ʍ ʎ ʏ
-Character substitution in UTF-8 files is enabled by setting: -

-$mpdf->useSubstitutionsMB = true; -

-
NB In mPDF 5.0 this has changed to -

-$mpdf->useSubstitutions = true; -

-
-It is not recommended to enable this for regular use, as it will add to the processing time. -
- - - - - -

Margin-collapse

-

mPDF has always allowed margins to be collapsed at the top and bottom of pages. This is specified by the custom CSS property "margin-collapse: collapse"

- -

mPDF 4.2 also allows margins to collapse between block elements on the page. This is the default behaviour in browsers, and has been enabled in mPDF 4.2 by default.

- -

In the next 2 paragraphs, the first one has the margin-bottom set to 3em, and the second has the margin-top set to 0em. So the vertical-space between paragraphs is 3em:

- -

The quick brown fox jumps over a lazy dog

-

The quick brown fox jumps over a lazy dog

- -

In the next 2 paragraphs, the first one has the margin-bottom set to 2em, and the second has the margin-top set to 1em. The margins collapse to the larger of the adjoining margins i.e. 2em:

- -

The quick brown fox jumps over a lazy dog

-

The quick brown fox jumps over a lazy dog

- - - - -

Images

- -

PNG Alpha channel

-PNG alpha channel transparency is now fully supported, and works against solid backgrounds, gradients or background images: - - - - - - - - -
- -
- -

Image Border and padding

-Image padding is now supported as well as border and margin: - -
- -

Vertical alignment

-
From mPDF version 4.2 onwards, most of the values for "vertical-align" are supported: top, bottom, middle, baseline, text-top, and text-bottom.
-Note: The default value for vertical alignment has been changed to baseline, and the default padding to 0, consistent with most browsers. -
-
-
-baseline: -text-bottom: -middle: -bottom: -text-top: -top: -
- - - -

Image Alignment

-
From mPDF version 4.2 onwards, in-line images can be individually aligned (vertically). -
- -
-These images -are -top -aligned -
- -
-These images -are -text-top -aligned -
- -
-These images -are -bottom -aligned -
- -
-These images -are -text-bottom -aligned -
- -
-These images -are -baseline -aligned -
- -
-These images -are -middle -aligned -
- -
-These images -are -middle -aligned -
- - -

Images from PHP

- -
- -
-This image was created with the following code: - -

- $img = imagecreatetruecolor(200, 200);
- $white = imagecolorallocate($img, 255, 255, 255);
- $red = imagecolorallocate($img, 255, 0, 0);
- $green = imagecolorallocate($img, 0, 255, 0);
- $blue = imagecolorallocate($img, 0, 0, 255);
- imagearc($img, 100, 100, 200, 200, 0, 360, $white);
- imagearc($img, 100, 100, 150, 150, 25, 155, $red);
- imagearc($img, 60, 75, 50, 50, 0, 360, $green);
- imagearc($img, 140, 75, 50, 50, 0, 360, $blue);
- ob_start();
- imagejpeg($img);
- $mpdf->smileyface = ob_get_clean();
- imagedestroy($img);
-

-and written to the document using: -

-<img src="var:smileyface" /> -

- - - -

Line-height inheritance

-Line-height inheritance has been altered to follow the CSS2 recommendation: -
    -
  • normal is inherited as "normal"
  • -
  • 1.2 is inherited as a factor
  • -
  • 120% is converted to an actual value and then inherited as the computed value
  • -
  • em is converted to an actual value and then inherited as the computed value
  • -
  • px pt mm are inherited as fixed values
  • -
- -
Relative values (e.g. 1.3, normal)
-
-This DIV has the line-height set as "2.0" and font-size as 12pt. The line-height is therefore 24pt, but the factor of 2 is inherited...
-Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse... -
-This DIV has the font-size set as 8pt. The line-height of 2 is inherited...
-Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. -
-This DIV has the font-size set as 18pt. The line-height of 2 is inherited...
-Nulla felis erat, imperdiet eu, ullamcorper non... -
-
-
-
-
Absolute values (e.g. 130%, 1.3em, 18pt)
-
-This DIV has the line-height set as "200%" and font-size as 12pt. The computed line-height of 24pt is inherited...
-Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse... -
-This DIV has the font-size set as 8pt. The computed line-height of 24pt is inherited...
-Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. -
-This DIV has the font-size set as 18pt. The computed line-height of 24pt is inherited...
-Nulla felis erat, imperdiet eu, ullamcorper non... -
-
-
- - - -

Line-height & vertical alignment

-
In these examples, top and bottom padding are set to 0, so the block height = line height.
-
The inline text (set to a larger font-size) inherits the line-height as a factor of the largest font-size i.e. the line height will expand to reflect the largest font on the line.
-Line-height: "normal" (set in mPDF by default as 1.33).
-

Normal text 16pt font-size  and normal again

- -
Line-height: 2.0 When using relative line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the largest font.
-

Normal text 16pt font-size  and normal again

- -
Line-heights set as a percentages are computed on the base font-size, and are then inherited and treated the same as absolute lengths. This is also true for "em" values. The line-height of this line is set as 200% of the paragraph font-size (10pt).
-When using absolute line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the base font.
-This means that as far as possible, multiple lines will remain equally spaced
-Line-height: 200%
-

Normal text 16pt font-size  and normal again

- -
If the line includes a font-size greater than 1.6 times the computed line-height, then the text baseline is dropped so that the text will approximately fit within the line-height. -
Line-height: 2em
-

Normal text 18pt font-size  and normal again

- -
If the line includes a font-size greater than 2 times the computed line-height, then the line-height is increased to accommodate the larger fontsize.
-Line-height: 2em
-

Normal text 24pt font-size  and normal again

- -
-This broadly reflects the behaviour of IE and Firefox. Note that tall characters such as  may fall outside the computed line-heights. See the same in an HTML page. - - - -

Extended use of CSS @page selectors

-The CSS @page selector, together with the pseudo-selectors :first :left :right have increased support in mPDF 4.2
-A named @page can be selected when forcing a new page, e.g. this page was started with:
-<pagebreak page-selector="letterhead" /> -
-The header and background on this page (and page 1 of the document) are set by the CSS selector: @page letterhead :first {} whilst subsequent pages have no header, a footer, and no background. -
-CSS @page selectors allow different margins, backgrounds, headers/footers to be set on :first :left and :right pages. Only fixed or mirrored left- and right-margins are supported (i.e. cannot specify different margins for :left and :right). -
-This layout can be used to produce company letters with only the first page on letterheaded paper. - - -

Table Layout control

-

mPDF attempts to layout tables according to HTML and CSS specifications. However, because of the difference between screen and paged media, mPDF resizes tables when necessary to make them fit the page. This will happen if the minimum table-width is greater than the page-width. Minimum table-width is defined as the minimum width to accomodate the longest word in each column i.e. words will never be split. -

-

This resizing (minimum-width) can be disabled using a custom CSS property "overflow" on the TABLE tag. There are 4 options:

-<table style="overflow: auto"> (this is the default, using resizing) - - - - -
VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
-
-<table style="overflow: visible"> (disables resizing, but allows overflow to show) - - - - -
VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
-
- -<table style="overflow: hidden"> (disables resizing, and hides/clips any overflow) - - - - -
VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
-
- -<table style="overflow: wrap"> (forces words to break as necessary) - - - - -
VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
-
- - - -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('','A4','','',15,15,20,20,5,5); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->useSubstitutions = true; - -// Dynamically create image in var:smileyface - $img = imagecreatetruecolor(200, 200); - $white = imagecolorallocate($img, 255, 255, 255); - $red = imagecolorallocate($img, 255, 0, 0); - $green = imagecolorallocate($img, 0, 255, 0); - $blue = imagecolorallocate($img, 0, 0, 255); - imagearc($img, 100, 100, 200, 200, 0, 360, $white); - imagearc($img, 100, 100, 150, 150, 25, 155, $red); - imagearc($img, 60, 75, 50, 50, 0, 360, $green); - imagearc($img, 140, 75, 50, 50, 0, 360, $blue); - ob_start(); - imagejpeg($img); - $mpdf->smileyface = ob_get_clean(); - imagedestroy($img); - - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php b/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php deleted file mode 100644 index ec8f1b0..0000000 --- a/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php +++ /dev/null @@ -1,479 +0,0 @@ - -body { - font-family: sans-serif; - font-size: 10pt; -} -h4 { - font-variant: small-caps; -} -h5 { - margin-bottom: 0; - color: #110044; -} -p { margin-top: 0; } -dl { - margin: 0; -} -table { - border-spacing: 0.5em; - border: 7px dashed teal; -} -.table1 { - background-image: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); -} -.table1 tr.thisrow1 { - background-image-resolution: 300dpi; - background: transparent url(\'bayeux1.jpg\') repeat scroll left top; -} -.table1 tr.thisrow1 td { - height: 28mm; -} -.table1 tr.thisrow2 { - background-image: none; - background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); - background: -webkit-gradient(linear, left bottom, left top, color-stop(0.29, rgb(90,83,12)), color-stop(0.65, rgb(117,117,39)), color-stop(0.83, rgb(153,153,67))); -} -.table3 { - border-collapse: collapse; - /* background-gradient: linear #07cdde #00f200 1 0 0.5 1; */ - background: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); -} -tr.thisrow { - border: 3px dashed red; - background: transparent url(\'bayeux1.jpg\') repeat scroll left top; -} -.table3 tr.thisrow { - border: 3px dashed orange; - background: transparent url(\'bgrock.jpg\') repeat scroll left top; -} -tfoot tr { - border: 5px dashed blue; - /* background-gradient: linear #c7Fdde #FF0000 1 0 0.5 0; */ - background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); -} -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background: linear-gradient(top, #c7cdde, #f0f2ff); -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background: linear-gradient(top, #c7cdde, #f0f2ff); - border-radius: 2mm; - background-clip: border-box; -} -div.text { - padding:1em; - margin: 1em 0; - text-align:justify; -} -.code { - font-family: mono; - font-size: 9pt; - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; -} - - - -
- -

mPDF

-

New features in mPDF Version 5.1

- -
-
    -
  • CSS background (images, colours or gradients) on <TR> and <TABLE>
  • -
  • CSS border on <TR> (only in border-collapsed mode)
  • -
  • support for Mozilla and CSS3 gradient syntax: -
      -
    • -moz-linear-gradient, linear-gradient
    • -
    • -moz-radial-gradient, radial-gradient
    • -
    • -moz-repeating-linear-gradient, linear-repeating-gradient
    • -
    • -moz-repeating-radial-gradient, radial-repeating-gradient
    • -
    -
  • -
  • expanded support for gradients (including in SVG images): -
      -
    • multiple colour \'stops\'
    • -
    • opacity (transparency)
    • -
    • angle and/or position can be specified
    • -
    -
  • -
  • gradient can be used as an image mask (custom mPDF styles: gradient-mask)
  • -
  • CSS3 image-orientation supported for <IMG> (similar to existing custom mPDF attribute: rotate)
  • -
  • CSS3 image-resolution supported for <IMG>
  • -
  • background-image-resolution (custom mPDF CSS-type style) to define resolution of background images
  • -
  • improved support for SVG images
  • -
  • SVG and WMF images supported in background-image
  • -
  • file attachments (embedded in PDF file) → → → → →
  • -
-
- -
Tables: borders, background images & gradients
- -
Background images or gradients can be set on whole tables or table rows (as well as individual table cells)
- - - - - - - -
Row 1This is dataThis is data
This row hasa background-imageof the bayeux tapestry

Row 3

This is long data

This is data
This row hasa gradient setwhich spans all 3 cells
Row 5Also dataAlso data
- - -
Border can be set on table rows (only when border-collapse is set to collapse)
- - - - - -
Row 1This is dataThis is data
Row 2This is data
This is data
This is data
This is data
Also data

Row 3

This is long data

This is data
- - - - - -
- -
Mozilla and CSS3 gradient syntax
- -
-

Linear gradients

-

Angle set AND points e.g. -moz-linear-gradient(34% 84% 30deg, red, orange, yellow...

- - - - - - - - - - - - - - - - - - - - - -
top right 210 degrees   
30% 80% 60 degrees   
10px 40px 325 degrees   
bottom left 135deg   
- - -

Points set only e.g. -moz-linear-gradient(bottom left, red, orange, yellow...

- - - - - - - - - - - - - - - - - - - - - - -
bottom right  
top  
10px 40px  
30% 10%  
- - - -

Angle set but no points e.g. -moz-linear-gradient(30deg, red, orange, yellow...

- - - - - - - - - - - - - - - - - - - - - - -
90 degrees   
120 degrees   
180 degrees   
210 degrees   
- - - -
-

Linear and radial gradients are not specified in the CSS2 specification. The CSS3 draft specification gives a way of outputting gradients, but currently this is not supported by any browser.

-

Mozilla (Firefox) has developed its own way of producing gradients, which approximates to the CSS3 draft specification:

-
    -
  • -moz-linear-gradient
  • -
  • -moz-repeating-linear-gradient
  • -
  • -moz-radial-gradient and
  • -
  • -moz-repeating-radial-gradient
  • -
-

WebKit (Safari, Chrome etc.) have a separate way of defining gradients using -webkit-gradient

-

Microsoft (IE) does not support any such method of specifying gradients, but does have a function filter: progid:DXImageTransform.Microsoft.gradient()

-

When writing HTML for cross-browser compatibility, it is common to see something like this in a stylesheet:

-

-background: #999999; /* for non-css3 browsers */
-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#cccccc\', endColorstr=\'#000000\'); /* for IE */
-background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#000000)); /* for webkit browsers */
-background: -moz-linear-gradient(top, #cccccc, #000000); /* for firefox 3.6+ */
-

- - - -

mPDF versions <= 5.0 supported a custom style property background-gradient which accepted both linear and radial gradients. These continue to be supported (and both old and new forms can be used together); note the differences:

-
    -
  • mPDF background-gradients are output underneath background-images, and both can be specified; whereas the new CSS3/Mozilla-type gradients are defined as a type of background-image
  • -
  • CSS3/Mozilla gradients support multiple colour-stops, opacity, repeating-gradients, and a greater number of options for defining the gradient axis (linear gradients) or shape and extent (radial gradients)
  • -
- -

mPDF will attempt to parse a CSS stylesheet written for cross-browser compatibility:

-
    -
  • parse and support -moz type gradients
  • -
  • parse and support CSS3 gradient syntax
  • -
  • ignore -webkit syntax gradients
  • -
- - -

More details can be found at:

- -
- - - -
Repeating gradients
- -

-background: repeating-linear-gradient(red, blue 20px, red 40px); -

-background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px); -

- -
 
- -
 
-
-
-
- -

-background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px); -

-background: repeating-radial-gradient(red, blue 20px, red 40px); -

-
 
- -
 
-
- - - - - -

Radial gradients

- -
 
- - -
 
-
- - -
 
- -
 
-
- -
 
- -
 
-
- -
 
- -
 
-
- - -

 
 
 
 
 
 
 

- -

 
 
 
 
 
 

- - - - - - - -
Gradient Image mask
- -
Gradients (linear or radial) can also be used to produce \'masks\' for images. The same syntax is used as for background gradients (e.g. -moz-linear-gradient) but is set using a custom mPDF style: gradient-mask. The rgba() method for defining colours is used: colours are ignored, but the opacity value is used to mask the image.
- -

<img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> -

<img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> -

<img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" /> -

- - - - - - -
- - - - - - -
Image orientation
- -
Images can be rotated using a custom mPDF HTML attribute: rotate. mPDF now also supports the draft CSS3 property of image-orientation. Rotation can be expressed in degrees, radians or grad units; it is corrected if necessary to an orthogonal rotation i.e. 90, 180 or 270 degrees. NB This does not work on background-images.
-

<img src="tiger2.png" style="image-orientation: -90deg" width="100" /> -
-<img src="tiger2.png" style="image-orientation: 3.14159rad" width="100" /> -

- - - - - - - -
- -
-
-
- -
Image resolution
- - -
Image files (which do not have an output width or height specified) are displayed in mPDF at the default resolution set by the variable $mpdf->img_dpi. This can be overridden using the draft CSS3 property \'image-resolution\', which can be applied to <IMG> or background-images. -
-The next 3 image files are identical (300px x 300px) but they have been saved with a different specified resolution: the first at 96dpi, the second at 300dpi. -
-NB When used in combination with \'from-image\', a specified resolution is only used if the image does not have an intrinsic resolution. Only JPG, PNG and BMP files store a specified DPI resolution in the file.
- -

<img src="tiger300px300dpi.png" style="image-resolution: from-image;" /> -
<img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /> -
<img src="tiger300px96dpi.png" style="image-resolution: from-image;" />

- - - - -

- - - - - -
Image resolution can also be applied to a background-image. This can be used as an alternative to the custom mPDF style property - \'background-image-resize\'
- -

<div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

-
Hallo
world -
- -
- -

<div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

-
-
- - - -
- - - - - - -
Mixed effects
- - -
-
-
-
-
-
-Hallo World -
-
-Hallo World -
-
-
-
-
-
- -
- -
- -
- -'; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); exit; - - - -?> \ No newline at end of file diff --git a/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php b/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php deleted file mode 100644 index 0f3b70e..0000000 --- a/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php +++ /dev/null @@ -1,421 +0,0 @@ -useKerning=true; - -$mpdf->restrictColorSpace=3; // forces everything to convert to CMYK colors - -$mpdf->AddSpotColor('PANTONE 534 EC',85,65,47,9); - -//============================================================== -$html = ' - - - -
- -

mPDF

-

Other new features in mPDF Version 5.1

- -
-
    -
  • Kerning
  • -
  • Letter- and word-spacing
  • -
  • Small-caps improved to work with justified text, and now with kerning, letter- and word-spacing
  • -
  • Bleed area on @page media
  • -
  • Colorspace and colour conversion (almost everything except BMP images)
  • -
  • Spot colours
  • -
  • PDF/X files
  • -
  • dir="rtl"
  • -
  • numeric list-styles for arabic and indic
  • -
-
- - - -
Kerning
- -
Font kerning is supported. This corrects the inter-character spacing between specific pairs of letters. It is dependent on kerning information being available in the original font file. -
-You need to set $mpdf->useKerning=true; either in the config.php configuration file, or at runtime. This causes the kerning information to be loaded when fonts are accessed (and will therefore increase memory usage). -
-You can then set kerning on or off using the draft CSS3 style property "font-kerning". Values of normal or auto will turn kerning on; "none" will turn kerning off. -
- -
-Off: AWAY To War. -
- -
-On: AWAY To War. -
- - - -
Letter and word spacing & text justification
- -
Letter- and word-spacing can be set on almost all block and in-line style elements, using the CSS properties letter-spacing and word-spacing. Values of normal or a length can be specified (em or ex recommended). -Note that setting the letter-spacing value (including setting it to zero) will prevent any additional letter-spacing to be added when full-justifying text. The word-spacing value, however, is a minimum value, and can be increased in order to justify text. -
-
-Text-align: justify - no longer uses configurable variable $jSpacing= C | W | \'\' -
-The default value is for mixed letter- and word-spacing, set by jSWord and jSmaxChar -
-If a line contains a cursive script (RTL or Indic [devanagari, punjabi, bengali]) then it prevents letter-spacing -for justification on that line - effectively the same as setting letter-spacing:0 -
-Spacing values have been removed from the config_cp.php configuration file, so the "lang" property -(in config_cp) no longer determines justification behaviour (this includes the use of Autofont()). -
-When using RTL or Indic [devanagari, punjabi, bengali] scripts, you should set CSS letter-spacing:0 -whenever you use text-align:justify. -
- -

Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Letter spacing set at 0.2em. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Word spacing set at 1em. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

- - - - -
Colours
- -
Whenever a colour can be specified in a style, additional formats are now supported: rgb(), rgba(), hsl(), hsla(), cmyk(), cmyka(), or spot(). -
-Spot colours need to be defined at the start of the script using e.g. $mpdf->AddSpotColor(\'PANTONE 534 EC\',85,65,47,9); -
-The four values define the CMYK values used when the spot colour is not available. A tint % can be specified when using the spot colour in the document. -
- -
background-color: rgba(150,150,255, 0.5); color: rgb(0,150,150);
-
background-color: rgba(60%,60%,100%, 0.5); color: rgb(0,60%,60%);
-
background-color: hsla(180,30%,25%, 0.5); color: hsl(360,100%,50%);
-
background-color: cmyka(85,65,0,30, 0.3); color: spot(PANTONE 300 EC,80%);
-
-
- - -
@page media
- -
When using @page to create a print publication with page-size less than sheet-size, the bleed margin is now configurable. -Backgrounds/gradients/images now use the bleed box as their "container box", rather than the whole page. (See this document as an example.) -
-Crop- and cross-marks can now both be used together, and are more configurable. -Also, background-image-opacity and background-image-resize have been extended to work with @page CSS. -
-The following values can be set in the configuration file, config.php: -$this->bleedMargin
-$this->crossMarkMargin
-$this->cropMarkMargin
-$this->cropMarkLength
-$this->nonPrintMargin
-
- - - -
Colorspace and colour conversion
- -
PDF files can contain objects using different colorSpaces e.g. Grayscale, RGB and CMYK. By default, -mPDF creates PDF files using the colours as they are specified: font colour may be set (e.g. #880000) as an RGB colour, and the -file may contain JPG images in RGB or CMYK format. -
-In some circumstances, you may wish to create a PDF file with restricted colorSpaces e.g. printers will often want files -which contain only CMYK, spot colours, or grayscale, but not RGB. -
-Additional methods for defining colours can be used (see above), but alternatively you can set mPDF to restrict the colorSpace by setting -the value for $mpdf->restrictColorSpace: -
-1 - allow GRAYSCALE only [converts CMYK/RGB->gray] -
-2 - allow RGB / SPOT COLORS / Grayscale [converts CMYK->RGB] -
-3 - allow CMYK / SPOT COLORS / Grayscale [converts RGB->CMYK] -
-This will attempt to convert every colour value used in the document to the permitted colorSpace(s). Almost everything including images -will be converted (except BMP images), and the conversion of images may take significant time. -
-This example file is set to (3) CMYK; compare the appearance of the Tux penguin in this file and in the previous example file (RGB). -
-
-
- - -
PDF/A and PDF/X files
- -
mPDF can produce files which (attempt to) meet the PDF/A and PDF/X specifications. In addition to restricted colorSpace, -PDF/A and /X files cannot contain images or colour values with "transparency". -
-Please note that full compliance with the PDF/A or /X specification is not guaranteed. -
- - - -
RTL (right-to-left) text
- -
Handling of RTL (right-to-left) languages has been significantly rewritten, and is likely to cause -changes to the resulting files if you have previously been using mPDF. The changes have made mPDF -act more like a browser, respecting the HTML/CSS rules. -Changes include:
-
    -
  • the document now has a baseline direction; this determines the -
      -
    • behaviour of blocks for which text-align has not been specifically set
    • -
    • layout of mirrored page-margins, columns, ToC and Indexes, headers / footers
    • -
    • base direction can be set by any of: -
        -
      • $mpdf->SetDirectionality(\'rtl\');
      • -
      • <html dir="rtl" or style="direction: rtl;">
      • -
      • <body dir="rtl" or style="direction: rtl;">
      • -
    • -
    • base direction is an inherited CSS property, so will affect all content, unless...
    • -
  • -
  • direction can be set for all HTML block elements e.g. <DIV><P><TABLE><UL> etc using -
      -
    • CSS property <style="direction: rtl;">
    • -
    • direction can only be set on the top-level element of nested lists
    • -
    • direction can only be set on <TABLE>, NOT on THEAD, TBODY, TD etc.
    • -
    • nested tables CAN have different directions
    • -
  • -
  • NOTE that block/table margins/paddings are NOT reversed by direction
  • -
  • language (either CSS "lang", using Autofont, or through initial set-up e.g. $mpdf = new mPDF(\'ar\') ) - no longer affects direction in any way.
    - NB config_cp.php has been changed as a result; any values of "dir" set here are now ineffective
  • -
  • default text-align is now as per CSS spec: "a nameless value which is dependent on direction"
    - NB default text-align removed in default stylesheet in config.php
  • -
  • once text-align is specified, it is respected and inherited
    - NB mPDF <5.1 reversed the text-align property for all blocks when RTL set.
  • -
  • the configurable value $rtlcss is depracated, as it is no longer required
  • -
  • improved algorithm for dtermining text direction -
      -
    • english word blocks are handled in text reversal as one block i.e. dir="rtl"
      - [arabic text] this will not be reversed [arabic text]
    • -
    • arabic numerals 0-9 handled correctly
    • -
  • -
-Although the control of direction for block elements is now more configurable, the control of -text direction (RTL arabic characters) remains fully automatic and unconfigurable. -<BDO> etc has no effect. Enclosing text in silent tags can sometimes help e.g.: - content<span>[arabic text]</span>content -
- - - - -
List styles
-
Additional numerical list-styles are supported. All of these (except Tamil) are consistent with the draft CSS3 specification:
-list-style: arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya | persian | telugu | thai | urdu | tamil - -
- - - -
    - - -
  • Arabic -
      -
    1. One
    2. -
    3. Two
    4. -
    5. Three
    6. -
    7. Four
    8. -
    9. Five
    10. -
    11. Six
    12. -
    -
  • -
  • Persian -
      -
    1. One
    2. -
    3. Two
    4. -
    5. Three
    6. -
    7. Four
    8. -
    9. Five
    10. -
    11. Six
    12. -
    -
  • -
  • Urdu -
      -
    1. One
    2. -
    3. Two
    4. -
    5. Three
    6. -
    7. Four
    8. -
    9. Five
    10. -
    11. Six
    12. -
    -
  • - -
- -
    - -
  • Bengali -
      -
    1. One
    2. -
    3. Two
    4. -
    5. Three
    6. -
    7. Four
    8. -
    9. Five
    10. -
    -
  • -
  • Devanagari -
      -
    1. One
    2. -
    3. Two
    4. -
    5. Three
    6. -
    7. Four
    8. -
    9. Five
    10. -
    -
  • -
  • Gujarati -
      -
    1. One
    2. -
    3. Two
    4. -
    5. Three
    6. -
    7. Four
    8. -
    9. Five
    10. -
    -
  • -
  • Gurmukhi -
      -
    1. One
    2. -
    3. Two
    4. -
    5. Three
    6. -
    7. Four
    8. -
    9. Five
    10. -
    -
  • -
  • Tamil -
      -
    1. One
    2. -
    3. Two
    4. -
    5. Three
    6. -
    7. Four
    8. -
    9. Five
    10. -
    -
  • - -
- -'; - -//============================================================== - - -$mpdf->WriteHTML($html); - -//============================================================== -//============================================================== -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php b/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php deleted file mode 100644 index 00b64f4..0000000 --- a/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php +++ /dev/null @@ -1,483 +0,0 @@ -restrictColorSpace = 1; // forces to grayscale -//============================================================== -$html = ' - - - -
- -

mPDF

-

New features in mPDF Version 5.1

- -
-

This is a copy of Example 54, but all object colours are converted to grayscale using simply:

-

$mpdf->restrictColorSpace = 1;

-
- -
-
    -
  • CSS background (images, colours or gradients) on <TR> and <TABLE>
  • -
  • CSS border on <TR> (only in border-collapsed mode)
  • -
  • support for Mozilla and CSS3 gradient syntax: -
      -
    • -moz-linear-gradient, linear-gradient
    • -
    • -moz-radial-gradient, radial-gradient
    • -
    • -moz-repeating-linear-gradient, linear-repeating-gradient
    • -
    • -moz-repeating-radial-gradient, radial-repeating-gradient
    • -
    -
  • -
  • expanded support for gradients (including in SVG images): -
      -
    • multiple colour \'stops\'
    • -
    • opacity (transparency)
    • -
    • angle and/or position can be specified
    • -
    -
  • -
  • etc...
  • -
-
- -
Tables: borders, background images & gradients
- -
Background images or gradients can be set on whole tables or table rows (as well as individual table cells)
- - - - - - - -
Row 1This is dataThis is data
This row hasa background-imageof the bayeux tapestry

Row 3

This is long data

This is data
This row hasa gradient setwhich spans all 3 cells
Row 5Also dataAlso data
- - -
Border can be set on table rows (only when border-collapse is set to collapse)
- - - - - -
Row 1This is dataThis is data
Row 2This is data
This is data
This is data
This is data
Also data

Row 3

This is long data

This is data
- - - - - -
- -
Mozilla and CSS3 gradient syntax
- -
-

Linear gradients

-

Angle set AND points e.g. -moz-linear-gradient(34% 84% 30deg, red, orange, yellow...

- - - - - - - - - - - - - - - - - - - - - -
top right 210 degrees   
30% 80% 60 degrees   
10px 40px 325 degrees   
bottom left 135deg   
- - -

Points set only e.g. -moz-linear-gradient(bottom left, red, orange, yellow...

- - - - - - - - - - - - - - - - - - - - - - -
bottom right  
top  
10px 40px  
30% 10%  
- - - -

Angle set but no points e.g. -moz-linear-gradient(30deg, red, orange, yellow...

- - - - - - - - - - - - - - - - - - - - - - -
90 degrees   
120 degrees   
180 degrees   
210 degrees   
- - - -
-

Linear and radial gradients are not specified in the CSS2 specification. The CSS3 draft specification gives a way of outputting gradients, but currently this is not supported by any browser.

-

Mozilla (Firefox) has developed its own way of producing gradients, which approximates to the CSS3 draft specification:

-
    -
  • -moz-linear-gradient
  • -
  • -moz-repeating-linear-gradient
  • -
  • -moz-radial-gradient and
  • -
  • -moz-repeating-radial-gradient
  • -
-

WebKit (Safari, Chrome etc.) have a separate way of defining gradients using -webkit-gradient

-

Microsoft (IE) does not support any such method of specifying gradients, but does have a function filter: progid:DXImageTransform.Microsoft.gradient()

-

When writing HTML for cross-browser compatibility, it is common to see something like this in a stylesheet:

-

-background: #999999; /* for non-css3 browsers */
-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#cccccc\', endColorstr=\'#000000\'); /* for IE */
-background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#000000)); /* for webkit browsers */
-background: -moz-linear-gradient(top, #cccccc, #000000); /* for firefox 3.6+ */
-

- - - -

mPDF versions <= 5.0 supported a custom style property background-gradient which accepted both linear and radial gradients. These continue to be supported (and both old and new forms can be used together); note the differences:

-
    -
  • mPDF background-gradients are output underneath background-images, and both can be specified; whereas the new CSS3/Mozilla-type gradients are defined as a type of background-image
  • -
  • CSS3/Mozilla gradients support multiple colour-stops, opacity, repeating-gradients, and a greater number of options for defining the gradient axis (linear gradients) or shape and extent (radial gradients)
  • -
- -

mPDF will attempt to parse a CSS stylesheet written for cross-browser compatibility:

-
    -
  • parse and support -moz type gradients
  • -
  • parse and support CSS3 gradient syntax
  • -
  • ignore -webkit syntax gradients
  • -
- - -

More details can be found at:

- -
- - - -
Repeating gradients
- -

-background: repeating-linear-gradient(red, blue 20px, red 40px); -

-background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px); -

- -
 
- -
 
-
-
-
- -

-background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px); -

-background: repeating-radial-gradient(red, blue 20px, red 40px); -

-
 
- -
 
-
- - - - - -

Radial gradients

- -
 
- - -
 
-
- - -
 
- -
 
-
- -
 
- -
 
-
- -
 
- -
 
-
- - -

 
 
 
 
 
 
 

- -

 
 
 
 
 
 

- - - - - - - -
Gradient Image mask
- -
Gradients (linear or radial) can also be used to produce \'masks\' for images. The same syntax is used as for background gradients (e.g. -moz-linear-gradient) but is set using a custom mPDF style: gradient-mask. The rgba() method for defining colours is used: colours are ignored, but the opacity value is used to mask the image.
- -

<img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> -

<img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> -

<img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" /> -

- - - - - - -
- - - - - - -
Image orientation
- -
Images can be rotated using a custom mPDF HTML attribute: rotate. mPDF now also supports the draft CSS3 property of image-orientation. Rotation can be expressed in degrees, radians or grad units; it is corrected if necessary to an orthogonal rotation i.e. 90, 180 or 270 degrees. NB This does not work on background-images.
-

<img src="tiger2.png" style="image-orientation: -90deg" width="100" /> -
-<img src="tiger2.png" style="image-orientation: 3.14159rad" width="100" /> -

- - - - - - - -
- -
-
-
- -
Image resolution
- - -
Image files (which do not have an output width or height specified) are displayed in mPDF at the default resolution set by the variable $mpdf->img_dpi. This can be overridden using the draft CSS3 property \'image-resolution\', which can be applied to <IMG> or background-images. -
-The next 3 image files are identical (300px x 300px) but they have been saved with a different specified resolution: the first at 96dpi, the second at 300dpi. -
-NB When used in combination with \'from-image\', a specified resolution is only used if the image does not have an intrinsic resolution. Only JPG, PNG and BMP files store a specified DPI resolution in the file.
- -

<img src="tiger300px300dpi.png" style="image-resolution: from-image;" /> -
<img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /> -
<img src="tiger300px96dpi.png" style="image-resolution: from-image;" />

- - - - -

- - - - - -
Image resolution can also be applied to a background-image. This can be used as an alternative to the custom mPDF style property - \'background-image-resize\'
- -

<div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

-
Hallo
world -
- -
- -

<div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

-
-
- - - -
- - - - - - -
Mixed effects
- - -
-
-
-
-
-
-Hallo World -
-
-Hallo World -
-
-
-
-
-
- -
- -
- -
- -'; - -//============================================================== -$mpdf->WriteHTML($html); - -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php b/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php deleted file mode 100644 index 5371f2d..0000000 --- a/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php +++ /dev/null @@ -1,224 +0,0 @@ - -textarea { -} -input { -} -select { - font-family: Arial -} - - -

Active Forms

- -
-Input Text - -

- -Readonly - -

- -Disabled - -

- -Required - -

- -Hidden - -

- -Input Password - -

- -Calculations - + - = - -

- - -Textarea - -

- - -First language - -     - -You have selected: - -

- - -
-Spoken language(s)
- -
-

- - - -How many languages do you speak?      - One      - Two      - Three      - Four      - Five + - -

- - - Please send me regular information by e-mail
- Please phone me (not available at present)
- Please subscribe me to the Newsletter -

- -

- -Click this button to see Javascript in action: - - -

- - - - - - - - - - -

- - -
-'; - - - -//============================================================== -$mpdf->useActiveForms = true; -$mpdf->formUseZapD = false; - -/* -// Try playing around with these (these are also in config.php) -$mpdf->formUseZapD = false; -$mpdf->formSubmitNoValueFields = true; - -$mpdf->formExportType = 'xfdf'; // 'html' or 'xfdf' -$mpdf->formSelectDefaultOption = true; // for Select drop down box; if no option is explicitly maked as selected, - // this determines whether to select 1st option (as per browser) - // - affects whether "required" attribute is relevant -$mpdf->form_border_color = '0.0 0.820 0.0'; -$mpdf->form_background_color = '0.941 0.941 0.941'; -$mpdf->form_border_width = '1'; -$mpdf->form_border_style = 'S'; - -$mpdf->form_radio_color = '0.0 0.820 0.0'; -$mpdf->form_radio_background_color = '0.941 0.5 0.5'; - -$mpdf->form_button_border_color = '0.0 0.820 0.0'; -$mpdf->form_button_background_color = '0.941 0.941 0.941'; -$mpdf->form_button_border_width = '1'; -$mpdf->form_button_border_style = 'S'; -*/ - -$mpdf->WriteHTML($html); - -//============================================================== -// JAVASCRIPT FOR WHOLE DOCUMENT -$mpdf->SetJS(' -var dialogTitle = "Enter details"; -var defaultAnswer = ""; -var reply = app.response("This is javascript set to run when the document opens. Enter value for first field", dialogTitle, defaultAnswer); -if (reply != null) { -this.getField("inputfield").value = reply; -} -'); -//============================================================== -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example58_new_mPDF_v5-4_features.php b/mpdf/examples/example58_new_mPDF_v5-4_features.php deleted file mode 100644 index d76cfb3..0000000 --- a/mpdf/examples/example58_new_mPDF_v5-4_features.php +++ /dev/null @@ -1,535 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - box-shadow: 0.3em 0.3em #888888; -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - border-radius: 2mm; - background-clip: border-box; -} -h4 { - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; - margin-top: 0; -} -div.text { - padding:0.8em; - margin-bottom: 0.7em; -} -p { margin: 0.25em 0; } -.code { - font-family: monospace; - font-size: 9pt; - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; - border:0.2mm solid #000088; - box-shadow: 0.3em 0.3em #888888; -} -table { - overflow: visible; - empty-cells: hide; - border:1px solid #000000; - font-family: sans-serif; - font-size: 10pt; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -td, th { - border:1px solid #000000; - text-align: left; - font-weight: normal; -} -td.markedcell { - text-decoration: line-through; - color: #CC0000; -} -td.underlinedcell { - text-decoration: underline; - color: #CC0000; -} -td.rotatedcell { - text-decoration: line-through; - color: #CC0000; - text-rotate: 45; -} -td.cost { text-align: right; } -caption.tablecaption { - font-family: sans-serif; - font-weight: bold; - border: none; - caption-side: top; - margin-bottom: 0; - text-align: center; -} -u.doubleu { - text-decoration: none; - border-bottom: 3px double #000088; -} -a.reddashed { - text-decoration: none; - border: 1px dashed #880000; -} -.shadowtitle { - height: 8mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.8em; - padding-left: 3em; - font-family:sans; - font-size: 26pt; - font-weight: bold; - border: 0.2mm solid white; - border-radius: 0.2em; - box-shadow: 0 0 2em 0.5em rgba(0,0,255,0.9); - color: #AAAACC; - text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; -} -h3 { - margin: 3em 0 2em -15mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - padding-left: 3em; - width: 50%; - font-family:sans; - font-size: 16pt; - font-weight: bold; - border-left: none; - border-radius: 0 2em 2em 0; - box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); - text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); -} -.css { - font-family: arial; - font-style: italic; - color: #000088; -} -table.zebra tbody tr:nth-child(2n+1) td { background-color: rgba(255,255,127,0.6); } -table.zebra tbody tr:nth-child(2n+1) th { background-color: rgba(255,255,127,0.6); } -table.zebra thead tr { background-color: #FFBBFF; } -table.zebra tfoot tr { background-color: #BBFFFF; } - - - - - - -
New Features in mPDF v5.4
- - -

Bookmark styles

-
-

Bookmarks can be styled by adding code as below to your script. You can define a colour (array of RGB) and/or a font-style (B, I, or BI) for each level (starting at 0). Results may depend on the PDF Reader you are using.

-

-$this->bookmarkStyles = array(
-       0 => array(\'color\'=> array(0,64,128), \'style\'=>\'B\'),
-       1 => array(\'color\'=> array(128,0,0), \'style\'=>\'\'),
-       2 => array(\'color\'=> array(0,128,0), \'style\'=>\'I\'),
-); -

-
- -

Embedded SVG code

-

SVG Images can be embedded in your HTML code. This is formally part of the XHTML specification and is supported by IE9+ and most other browsers.

- - - - -

-<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 200 200" width="200" height="200">
-  <circle cx="100" cy="50" r="40" stroke="black" stroke-width="1" fill="red" />
-  <circle cx="130" cy="50" r="40" stroke="black" stroke-width="1" fill="blue" />
-</svg> -

- - -

Improved CSS support

-
-

border-radius is now supported on fixed/absolute-positioned block elements.

-

visibility can be set on any block-style element e.g. DIV,P or images IMG as: visible|hidden|printonly|screenonly

-

background-color now supports rgba() and cmyka() alpha transparency formats in tables.

-

Color, underline and strike-through are now supported in table cells, including with rotated text (see example below of spread table)

-

page-break-after: left|right|always is supported on all block-style elements and tables

-

text-transform: capitalize|uppercase|lowercase is supported in table cells

-
- - -
-

Zebra stripes in Tables

-
-

:nth-child() selector can be used in tables (on TR, TD or TH) to stripe rows or columns. Both the an+b and odd/even forms are supported e.g.

- -

-tr:nth-child(2n+1) { background-color: rgba(255,255,127,0.6); } or
-tr:nth-child(odd) { background-color: rgba(255,255,127,0.6); } -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Row 1This is data167.00
Row 2 -

This is data p

-
-

444.53

-
-

Row 3

-
-

This is long data

-
14.00
-

Row 4

-
This is data -

0.88

-
Row 5Also data144.00
Row 6Also data8089.00
- -

Note: mPDF does NOT correctly apply specificity to all CSS. The following stylesheet:

-

-table.zebra tbody tr:nth-child(2n+1) td { background-color: yellow; }
-table.zebra tbody td:nth-child(odd) { background-color: blue; } -

-

should make every odd row yellow, and every odd column blue, but with the row/yellow overriding the column/blue. -In mPDF the td:nth-child(odd) trumps the plain td, so the column colour wins out. You can force the effect you want by using:

-

-table.zebra tbody tr:nth-child(2n+1) td:nth-child(1n+0) { background-color: yellow; } -

-

The :nth-child(1n+0) selector just selects every td cell.

- -
-
- - -
-

border can now be defined on in-line elements eg SPAN

- -

Note: Remember that in mPDF, inside table cells, properties set on block elements are set when possible as in-line properties - so a P element inside a table with border set, will appear with a border around the text line as though it had been set on SPAN

-
- - - - -
-

Shadows

-

box-shadow can be defined on any block-level element (P, DIV etc). It follows the CSS3 recommendation, but inset is not supported.

-

text-shadow can be defined on any element. It follows the CSS3 recommendation, but blur is not supported.

-

-<span style="text-shadow: 0.03em 0.03em #666, -0.015em -0.015em white;">
-<div style="box-shadow: 0.3em 0.3em #888888;"> -

-
- - -

Other Enhancements

- -

Column Totals (Tables)

-

{colsum} placed in the footer of a table will automatically display the sum of that column. If the table breaks across more than one page, the sum of the values on that page will be displayed. A number following the colsum e.g. {colsum2} will force that number of decimal places to be displayed.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table caption goes here
Header RowHeader RowHeader Row
Column total: (using colsum2 in {}){colsum2}
Row 1This is data167.00
Row 2 -

This is data p

-
-

444.53

-
-

Row 3

-
-

This is long data

-
14.00
-

Row 4

-
This is data -

0.88

-
Row 5Also data144.00
Row 6Also data8089.00
Row 7Also data3.00
Row 8Also data23.00
-
- -

Table caption

-

The caption element for tables is partially supported (see example above).

-

-<caption align="top|bottom" style="caption-side: top|bottom"> -

-
    -
  • The caption must come immediately after <table>.
  • -
  • The CSS caption-side or HTML align attribute of top|bottom supported
  • -
  • Left or right placement are not supported.
  • -
  • The caption is handled as a separate block element brought outside the table, so: -
      -
    • CSS will not cascade correctly from the table
    • -
    • the width of the caption block is that of page or of the block element containing the table
    • -
    • text alignment will be to the page-width not the table width
    • -
    • if table page-break-after: always, the caption will follow the pagebreak
    • -
  • -
- - -

Core fonts in non-core font document

- -

Core fonts, which do not need to be embedded in a PDF, can now be included in a document which uses non-core fonts. The pseudo font-family names: chelvetica, ctimes and ccourier should be used.

-

-<div style="font-family: chelvetica"> -

-

NB You could force mPDF to always use core fonts when Arial/Helvetica/Courier are specified, by editing $this->fonttrans in config_fonts.php:

-

-$this->fonttrans = array(
- \'arial\' => \'chelvetica\',
- \'helvetica\' => \'chelvetica\',
- \'timesnewroman\' => \'ctimes\',
- \'times\' => \'ctimes\',
- \'couriernew\' => \'ccourier\',
- \'courier\' => \'ccourier\',
-... -

-
- -

Javascript in Forms

- -

Javascript used in (active) forms has been altered to reflect the Adobe Acrobat specification for Javascript in PDF documents.

-

textarea and input (text-types) now accept javascript as: onKeystroke, onValidate, onCalculate and onFormat. onChange is depracated but is not ignored; it works as though for onCalculate. (PS Select still accepts onChange)

- - -
- - - -

Overlapping Rows in Tables

-

Support for overlapping rowspans in tables has been improved (although probably not foolproof!)

- - - - - - - - - - - - -
   
 
 
- -
- - - -

Circular Text

-

Circular Text can be included in a PDF document as a custom HTML tag (or a function)

-
    -
  • top-text and/or bottom-text can be specified
  • -
  • Radius (r) and font-size (using CSS) are user-defined
  • -
  • Width and height are calculated from radius and font-size
  • -
  • Other CSS styles supported on Circular Text: border, margin, padding, color, background-color, font-family, font-size, font-weight, font-style, display, visibility, and opacity
  • -
  • space-width should be specified as an integer defining the letter-spacing as a percentage of normal (default 120)
  • -
  • char-width should be specified as an integer defining the width of each character as a percentage of normal (default 100)
  • -
  • Circular Text is displayed as though an in-line element
  • -
-

NB If $mpdf->useKerning is true then automatic kerning will be used on Circular Text.

- -

-<textcircle r="30mm" top-text="Circular Text Circular Text" style="color: blue; font-size: 34pt; font-style: italic" />

-<textcircle r="30mm" space-width="120" char-width="150" top-text="&bull; Circular Text &bull;" bottom-text="Circular Text" style="background-color: #FFAAAA; border:1px solid red; padding: 0.3em; margin: 0.3em; color: #000000; font-size: 21pt; font-weight:bold; font-family: Arial" /> -

- - - - - - - - - -

Spread tables

-
-Setting the CSS property "overflow: visible" on a table now has the effect of cancelling resizing, and allowing tables to split columns across multiple pages. -The maximum width for a column (or group of columns set by colspan) is the page width. It is recommended to specify absolute values of width on each column (not percentages). -
-
- - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Periodic Table (table caption)
123456789101112131415161718
H He
Li Be B C N O F Ne
Na Mg Al Si P S Cl Ar
K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
Cs Ba Lu Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
Fr Ra
- -

- -
-

Limitations of Spread tables

-Spread tables cannot be used with: keep-headings-with-table ($mpdf->use_kwt), table rotate, table page-break-inside:avoid, columns, -CJK (chinese-japanese-korean) or RTL (right-to-left) languages. -They will also cause problems with $mpdf->forcePortraitHeaders or $mpdf->forcePortraitMargins.
-Warning: If a table row is too tall to fit on a page, mPDF will crash with an error message.
-If the width settings within the table cause conflicts, it will override some of these settings. -
-
- - -'; - -//============================================================== -$mpdf->useActiveForms = true; - -$mpdf->bookmarkStyles = array( - 0 => array('color'=> array(0,64,128), 'style'=>'B'), - 1 => array('color'=> array(128,0,0), 'style'=>''), - 2 => array('color'=> array(0,128,0), 'style'=>'I'), -); - -$mpdf->useKerning=true; // set this to improve appearance of Circular text - // must be set before the font is first loaded - -$mpdf->WriteHTML($html); - -// JAVASCRIPT FOR WHOLE DOCUMENT -$mpdf->SetJS(' -function TwoPages() { - this.layout="TwoColumnRight"; - this.zoomType = zoomtype.fitW; -} -function OnePage() { - this.layout="SinglePage"; - this.zoom = 100; -} -'); - -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example59_new_mPDF_v5-6_features.php b/mpdf/examples/example59_new_mPDF_v5-6_features.php deleted file mode 100644 index 4284c4f..0000000 --- a/mpdf/examples/example59_new_mPDF_v5-6_features.php +++ /dev/null @@ -1,296 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - box-shadow: 0.3em 0.3em #888888; -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - border-radius: 2mm; - background-clip: border-box; -} -h4 { - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; - margin-top: 0; -} -div.text { - padding:0.8em; - margin-bottom: 0.7em; -} -p { margin: 0.25em 0; } -.code { - font-family: monospace; - font-size: 9pt; - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; - border:0.2mm solid #000088; - box-shadow: 0.3em 0.3em #888888; -} -table { - border:1px solid #000000; - font-family: sans-serif; - font-size: 10pt; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -td, th { - border:1px solid #000000; - text-align: left; - font-weight: normal; -} -.shadowtitle { - height: 8mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.8em; - padding-left: 3em; - font-family:sans; - font-size: 26pt; - font-weight: bold; - border: 0.2mm solid white; - border-radius: 0.2em; - box-shadow: 0 0 2em 0.5em rgba(0,0,255,0.9); - color: #AAAACC; - text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; -} -h3 { - margin: 3em 0 2em -15mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - padding-left: 3em; - width: 50%; - font-family:sans; - font-size: 16pt; - font-weight: bold; - border-left: none; - border-radius: 0 2em 2em 0; - box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); - text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); -} -.css { - font-family: arial; - font-style: italic; - color: #000088; -} -table.pop { - border-collapse: collapse; -} -table.pop td { - font-family: arial; - font-size: 10px; - border: 1px solid #888888; -} -meter.pop { - margin: 3px; -} -fieldset { border: 1px solid #000000; border-radius: 5px; padding: 10px; } -div.folder { - background: url(data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7) no-repeat 4px center; - padding: 5px 0 5px 25px; - border: 1px solid #000000; -} - - - - -
New Features in mPDF v5.6
- -

HTML5 tags

-
-

New tags introduced in HTML5 now have basic support in mPDF, and will thus support CSS style references.

-

The following are treated as block elements similar to <div>:

-

<article> <aside> <details> <figure> <figcaption> <footer> <header> <hgroup> <nav> <section> <summary>

-

The following are treated as in-line elements:

-

<time> <mark>

-

Mark is set by default to highlight in yellow in config.php using $defaultCSS e.g. mark

-

Progress and meter are discussed below:

-
- -

<progress>

-
-

Progress: accepts the attributes value and max. A progress element without a value is called an indeterminate progress bar. -Text between the opening and closing tags is not displayed.

-

CSS styles properties can be applied: display, visibility, margin, padding, border, vertical-align, width, height and opacity. -HTML attributes width and height are supported, although not officially part of the spec.

-

Example:

-

<progress value="5" max="10">50%</progress>

- -
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
-
- -

<meter>

-
-

Meter: accepts the attributes min, max, value, optimum, low, and high. -Text between the opening and closing tags is not displayed.

-

CSS styles properties can be applied: display, visibility, margin, padding, border, vertical-align, width, height and opacity. -HTML attributes width and height are supported, although not officially part of the spec.

-

Example:

-

<meter value="5" max="10" min="1" low="2" high="8" optimum="5.6">5</meter>

- - - -
    -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
  • - - -
  • -
-
- -
-

Custom appearances for <meter> and <progress>

-

Meter (and to a lesser extent progress) can be used with custom appearances e.g. by using optimum to display the average, and low/high to indicate 90th centiles

- -

Custom appearances can be written by editing the script in classes/meter.php - Use a custom attribute of type="anyname" which is passed to the class as a variable e.g.

-

<meter type="2" value="612.7" optimum="580.4" min="517.0 " max="642.7" low="542" high="600">612.7</meter>

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Domain

Indicator

LHB

number

LHB

Indicator

-

value

-

Wales

average

-

Wales range

Comparison

Deaths

Death Rates per 100,000 population

3046

612.7

580.4

517.0 - 642.7

612.7

Death Rates per 100,000 from cancer

789

178.2

172.7

159.5 - 182.2

178.2

Death Rates per 100,000 from respiratory disease

505

60.5

72.11

54.41 - 95.5

60.5

Death Rates per 100,000 from cardiovascular disease

913

178.2

165.0

151.8 - 179.9

160.2
- - -

Fieldset and Legend

-
-
- Fieldset and legend -

Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!

- - -
- - -
-
- - -

CSS styles

-
-

-

min-height, min-width, max-height and max-width are now supported in CSS style sheets for <img> (only).

-

background: url(data:image/gif;base64,...) is now supported in CSS style sheets (gif, png and jpeg).

-
- -
This <div> has the folder icon set as an embedded image in the CSS
-

div.folder { - background: url(data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7) no-repeat 4px center; - padding: 5px 0 5px 25px; - border: 1px solid #000000; -} -

- - -'; - - -//============================================================== - -$mpdf->WriteHTML($html); - -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example60_new_mPDF_v5-7_features.php b/mpdf/examples/example60_new_mPDF_v5-7_features.php deleted file mode 100644 index afe5d0f..0000000 --- a/mpdf/examples/example60_new_mPDF_v5-7_features.php +++ /dev/null @@ -1,584 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - box-shadow: 0.3em 0.3em #888888; -} -h4 { - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; - margin-top: 0; -} -div.text { - padding:0.8em; - margin-bottom: 0.7em; -} -p { margin: 0.25em 0; } -p.code { - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; - border:0.2mm solid #000088; - box-shadow: 0.3em 0.3em #888888; -} -.code { - font-family: monospace; - font-size: 9pt; -} -.shadowtitle { - height: 8mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.8em; - padding-left: 3em; - font-family:sans; - font-size: 26pt; - font-weight: bold; - border: 0.2mm solid white; - border-radius: 0.2em; - box-shadow: 0 0 1em 0.5em rgba(0,0,255,0.5); - color: #AAAACC; - text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; -} -h3 { - margin: 3em 0 2em -15mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - padding-left: 3em; - width: 50%; - font-family:sans; - font-size: 16pt; - font-weight: bold; - border-left: none; - border-radius: 0 2em 2em 0; - box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); - text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); -} -.css { - font-family: arial; - font-style: italic; - color: #000088; -} - -.aBDP { text-align: "." center; } -.arBDP { text-align: "\66B" center; } -.middot { text-align: "\B7" center ; } - -p.menu { - text-align: justify; - padding-right: 4em; -} -dottab.menu { - outdent: 4em; -} - - -.outlined { - text-outline: 0.1mm 0.1mm #FF0000; - font-weight: bold; - font-size: 20pt; - color: #FFFFFF; -} - -/* For background-clip and -origin */ -.divclip { - border: 10px dashed #000000; - border-radius: 3em; - padding: 20px; - background:yellow; - background-image: -moz-linear-gradient(top right 210deg, red, orange, yellow, green, blue, indigo, violet); - width: 300px; - height: 50px; - margin-bottom: 1em; - background-repeat: no-repeat ; - background-size: 100% 100%; -} -.divpic { - background:yellow; - background: yellow url("bayeux1.jpg") no-repeat scroll left top; - background-size: 100% 100%; -} -.div1 { - background-clip: content-box; - background-origin: content-box; -} -.div2 { - background-clip: padding-box; - background-origin: padding-box; -} -.div3 { - background-clip: border-box; - background-origin: border-box; -} -.div4 { - background-clip: content-box; - background-origin: border-box; -} -.div5 { - background-clip: border-box; - background-origin: content-box; -} - - -/* For Table of Contents */ -div.mpdf_toc { - font-family: sans-serif; - font-size: 11pt; -} -a.mpdf_toc_a { - text-decoration: none; - color: black; -} -div.mpdf_toc_level_0 { /* Whole line level 0 */ - line-height: 1.5; - margin-left: 0; - padding-right: 2em; /* should match e.g 0 is default */ -} -span.mpdf_toc_t_level_0 { /* Title level 0 - may be inside */ - font-weight: bold; -} -span.mpdf_toc_p_level_0 { /* Page no. level 0 - may be inside */ -} -div.mpdf_toc_level_1 { /* Whole line level 1 */ - margin-left: 2em; - text-indent: -2em; - padding-right: 2em; /* should match 2em is default */ -} -span.mpdf_toc_t_level_1 { /* Title level 1 */ - font-style: italic; - font-weight: bold; -} -span.mpdf_toc_p_level_1 { /* Page no. level 1 - may be inside */ -} -div.mpdf_toc_level_2 { /* Whole line level 2 */ - margin-left: 4em; - text-indent: -2em; - padding-right: 2em; /* should match 2em is default */ -} -span.mpdf_toc_t_level_2 { /* Title level 2 */ -} -span.mpdf_toc_p_level_2 { /* Page no. level 2 - may be inside */ -} - - - - - - - -

ToC Layout and styling

-
-

Table of Contents styling

-

When a Table of Contents is generated by mPDF using e.g. <tocpagebreak>, mPDF 5.7 will generate the ToC as HTML. This means that a CSS stylesheet can be used to format its appearance.

-
- -
- -
-

This will result in the following HTML code generated (internally):

-

-<div class="mpdf_toc" id="mpdf_toc_0">
-  <div class="mpdf_toc_level_0">
-    <a class="mpdf_toc_a" href="#__mpdfinternallink_1">
-      <span class="mpdf_toc_t_level_0">Section 1</span>
-    </a>
-    <dottab outdent="2em" />
-    <a class="mpdf_toc_a" href="#__mpdfinternallink_1">
-      <span class="mpdf_toc_p_level_0">5</span>
-    </a>
-  </div>
-  <div class="mpdf_toc_level_1">
-    <a class="mpdf_toc_a" href="#__mpdfinternallink_2">
-      <span class="mpdf_toc_t_level_1">Chapter 1</span>
-    </a>
-    <dottab outdent="2em" />
-    <a class="mpdf_toc_a" href="#__mpdfinternallink_2">
-      <span class="mpdf_toc_p_level_1">6</span>
-    </a>
-  </div>
-  <div class="mpdf_toc_level_2">
-    <a class="mpdf_toc_a" href="#__mpdfinternallink_3">
-      <span class="mpdf_toc_t_level_2">Topic 1</span>
-    </a>
-    <dottab outdent="2em" />
-    <a class="mpdf_toc_a" href="#__mpdfinternallink_3">
-      <span class="mpdf_toc_p_level_2">7</span>
-    </a>
-  </div>
-</div> -

- -

NB The id is "0" (mpdf_toc_0) for root/un-named ToC; otherwise it is lowercase of the name="" used for the ToC

-
- -
- -

Example Styling using CSS

-

The following CSSwill format the ToC as it appears in this document:

-

-/* For Table of Contents */
-div.mpdf_toc {
-  font-family: sans-serif;
-  font-size: 11pt;
-}
-a.mpdf_toc_a {
-  text-decoration: none;
-  color: black;
-}

-/* Whole line level 0 */
-div.mpdf_toc_level_0 {
-  line-height: 1.5;
-  margin-left: 0;
-  padding-right: 2em;
-}

-/* Title level 0 - may be inside <a> */
-span.mpdf_toc_t_level_0 {
-  font-weight: bold;
-}

-/* Page no. level 0 - may be inside <a> */
-span.mpdf_toc_p_level_0 { }

-/* Whole line level 1 */
-div.mpdf_toc_level_1 {
-  margin-left: 2em;
-  padding-right: 2em;
-}

-/* Title level 1 */
-span.mpdf_toc_t_level_1 {
-  font-style: italic;
-  font-weight: bold;
-}

-/* Page no. level 1 - may be inside <a> */
-span.mpdf_toc_p_level_1 { }

-/* Whole line level 2 */
-div.mpdf_toc_level_2 {
-  margin-left: 4em;
-  padding-right: 2em;
-}

-/* Title level 2 */
-span.mpdf_toc_t_level_2 { }

-/* Page no. level 2 - may be inside <a> */
-span.mpdf_toc_p_level_2 { }

-

-

NB padding-right should match <dottab> "outdent" (0 is default). See <dottab> for more details

-
- -
-

The functions TOCpagebreakByArray() and TOCpagebreak() have a new final parameter, and HTML tags <TOC> and <TOCpagebreak> have a new attribute "tocoutdent". This should be blank or a valid CSS length e.g. "2em". See <dottab> for more details.

-
- - - - - -

Text-align on decimal point

-
-

Text inside a table column can be aligned on a decimal point (or any other character) by using either HTML attribute or CSS.

-

This example table uses the following CSS stylesheet:

-

-<style>
-.aBDP { text-align: "." center; }
-.arBDP { text-align: "\66B" center; }
-.middot { text-align: "\B7" center ; }
-</style> -

-

- - - - - - - - - - - - - - - - - - - - - - - -
<TD> elementColumn
align="left"Left text
align="right"Right text
align="center"Center text
align="char"

1000.0001

align="char" char=","

1000,0001

align="char" char="&middot;"

1000·0001

align="char" char="&#183;"

1000·0001

style="text-align: \'.\' center"100.001
style="text-align: \'.\' center"DP aligned text
style="text-align: \',\' center"

1.000,0001

class="aBDP"10.01
class="aBDP"1000
class="aBDP"

1000.0001

class="middot"1 000·0001
class="aBDP"

1,000,000.00001

class="aBDP"1.000000001
class="aBDP"1.000.000.001
class="arBDP"

١٬٥٦٧٬٢٣٤٫٢٣٤٧

class="aBDP"(GBP) 1,000,000.00001
1,000,000.00001 (EUR)
1,000,000.00001
- -
- - - - - - -

Automatic ToC and Bookmarks

-
-

A Table of Contents and/or Bookmarks can be generated automatically from any of the heading tags H1 - H6. This example will generate ToC and bookmarks from all <h3> tags (top level) and <h4> tags (next level)

-

- $mpdf->h2toc = array(\'H3\'=>0, \'H4\'=>1);
- $mpdf->h2bookmarks = array(\'H3\'=>0, \'H4\'=>1); -

-
- - - - - - -

Improved line-breaking

-

mPDF will now avoid line-breaks in the middle of words even between <tags>

-
-

-<b>Na<sub>2</sub>HCO<sub>3</sub></b> -

-

Pellentesque purus feugiat semper. Donec nunc odio, et vitae pellentesque. Pellentesque Na2HCO3 velit lacus.

-
- - -

CSS hyphens

-
-

The CSS property hyphens is now supported on all block elements

-

-hyphens: manual | auto | none -

-

In the following example, the word interdependent contains no soft hyphen or similar characters, and is moved to the next line.

- -

Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus interdependent (no characters suggesting line-break).

- -

manual (default) - Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities. Characters can be explicit ("-" hard hyphen) or conditional (&shy; &#173; <wbr>).

-

Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter­dependent (uses soft hyphen &shy;).

- -

none - Words are not broken at line breaks, even if characters inside the word suggest line break points.

-

Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter-dependent (hard hyphen).

- -

auto - Words can be broken at appropriate hyphenation points, as determined by characters inside the word.

-

Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus interdependent (No characters suggesting line-break).

-

SHY inside the word take priority over hyphenation points determined by other resources.

-

Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter­dependent (uses soft hyphen &shy;).

- -

The configurable variables $this->hyphenate and $this->hyphenateTables are henceforth redundant and have no effect.

-

NB Support for <wbr> is new in mPDF 5.7

-
- - - - - -

Text circle

-
-

Added in mPDF 5.6 but not included in New Features example - transparent background and Divider were new. Now also added support for font-size:auto

-

-<textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular" divider="&bull;" style="font-size: auto" /> -

-

-
-
- - -

List numbering

-
-

This list is set to start numbering at 5

-

<ol start="5">

-
    -
  1. List item number 1
  2. -
  3. List item number 2
  4. -
  5. List item number 3
  6. -
-
- - - - -

<dottab> and outdent

-
-

<dottab> now supports a custom CSS property "outdent", which can also be used as an HTML attribute i.e. <dottab outdent="2em">

-

The first item uses <dottab outdent="4em"> whereas the following items have <dottab class="menu"> (with CSS dottab.menu{outdent: 4em;} ) and all have padding-right="4em" on the <div> element

-
- - - - - - - - - -
-

-

-p.menu { text-align: justify; padding-right: 4em; }
-dottab.menu { outdent: 4em; } -

-

NB It is recommended to use &nbsp; after the dottab if a space is required before the following content.

-

NB This (outdent) is also used in the Table of Contents (see earlier in this document).

-
- - - -

Layers

-
-

mPDF 5.7 will create layers in the document using the CSS property z-index. All layers are visible by default.

-

This demonstrates layers in a PDF document. Select the layers named "Correct Answers" or "Wrong Answers" in your PDF viewer (the layers pane should be open already in Adobe Acrobat)

-
What is the name of the Prime Minister of Britain?
-
David Cameron
-
Rupert Murdoch
-
What is the name of the David Beckham\'s bulldog?
-
Scarlet
-
Victoria
-

To open/close/select layers in Adobe Reader (10):
-

-

The layer names and initial state can be set (optionally) e.g.

-

- $mpdf->layerDetails[1][\'state\']=\'hidden\'; // Set initial state of layer - "hidden" or ""
- $mpdf->layerDetails[1][\'name\']=\'Correct Answers\';
- $mpdf->layerDetails[2][\'state\']=\'hidden\';
- $mpdf->layerDetails[2][\'name\']=\'Wrong Answers\';
-

-

This is the code used in the example above:

-

- <div style="z-index:1;color: green;float: left; width:30%;">Scarlet</div>
- <div style="z-index:2;color: red;">Victoria</div> -

-
To force the PDF reader to open with the layers tab open, set: -

$mpdf->open_layer_pane = true;

-
- -
- - - -

CSS visibility on <span>

-

CSS visibility:hidden is now supported on inline elements e.g. <span>

-
-

This next bit of text is hidden - Hidden text - and this isn\'t.

-

style="visibility:hidden;"

-

This next bit of text is only visible in print - Hidden text - and this isn\'t.

-

style="visibility:printonly;"

-

This next bit of text is only visible on screen - Hidden text - and this isn\'t.

-

style="visibility:screenonly;"

-

You can show or hide these elements as for layers (above).

-
- - - -

CSS "rem" unit

-
- -
This line has the font-size set as 1rem -
This line has the font-size set as 0.5rem -
This line has the font-size set as 1.5rem -
-
-
-
This line has the font-size set as 1em -
This line has the font-size set as 0.5em -
This line has the font-size set as 1.5em -
-
-
- -
- - - - -

CSS outline

-
-
This is text with an outline set by CSS
-

-.outlined { text-outline: 0.1mm 0.1mm #FF0000; } -

-
- - - - - -

CSS background-clip, background-origin & background-size

-
-

CSS background-clip, background-origin & background-size are now supported for most block level elements. (Not supported in tables, nor on page/body backgrounds).

- - -
background-clip: border-box[default value]
background-origin: padding-box[default value]
-
background-clip: content-box;
background-origin: content-box
-
background-clip: padding-box;
background-origin: padding-box
-
background-clip: border-box;
background-origin: border-box
-
background-clip: content-box;
background-origin: border-box
-
background-clip: border-box;
background-origin: content-box
- -
background-clip: border-box[default value]
background-origin: padding-box[default value]
-
background-clip: content-box;
background-origin: content-box
-
background-clip: padding-box;
background-origin: padding-box
-
background-clip: border-box;
background-origin: border-box
-
background-clip: content-box;
background-origin: border-box
-
background-clip: border-box;
background-origin: content-box
- - -
- - -'; - -$mpdf->h2toc = array('H3'=>0, 'H4'=>1); -$mpdf->h2bookmarks = array('H3'=>0, 'H4'=>1); - -$mpdf->open_layer_pane = false; -$mpdf->layerDetails[1]['state']='hidden'; // Set initial state of layer - "hidden" or nothing -$mpdf->layerDetails[1]['name']='Correct Answers'; -$mpdf->layerDetails[2]['state']='hidden'; // Set initial state of layer - "hidden" or nothing -$mpdf->layerDetails[2]['name']='Wrong Answers'; - - -//============================================================== -$mpdf->autoLangToFont = true; - -$mpdf->WriteHTML($html); - -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/example61_new_mPDF_v6-0_features.php b/mpdf/examples/example61_new_mPDF_v6-0_features.php deleted file mode 100644 index 3404e92..0000000 --- a/mpdf/examples/example61_new_mPDF_v6-0_features.php +++ /dev/null @@ -1,2046 +0,0 @@ -list_auto_mode = 'mpdf'; // Used for demonstration of lists -//============================================================== - -$html = ' - - - - - - - - -
Page {PAGENO} of {nbpg}الصفحة {PAGENO} من {nbpg}
-
- - - - - - -
Page {PAGENO} of {nbpg}{nbpg} পাতা থেকে পাতা {PAGENO}
-
- - - - - - -
Page {PAGENO} of {nbpg}עמוד {PAGENO} או {nbpg}
-
- - - - - -
New Features in mPDF v6.0
- -

Advanced Typography

-

Many TrueType fonts contain OpenType Layout (OTL) tables. These Advanced Typographic tables contain additional information that extend the capabilities of the fonts to support high-quality international typography:

- -
    -
  • OTL fonts support ligatures, positional forms, alternates, and other substitutions.
  • -
  • OTL fonts include information to support features for two-dimensional positioning and glyph attachment.
  • -
  • OTL fonts contain explicit script and language information, so a text-processing application can adjust its behavior accordingly.
  • -
- -

mPDF 6 introduces the power and flexibility of the OpenType Layout font model into PDF. -mPDF 6 supports GSUB, GPOS and GDEF tables for now. mPDF 6 does not support BASE and JSTF at present.

- -

Other mPDF 6 features to enhance complex scripts:

-
    -
  • improved Bidirectional (Bidi) algorithm for right-to-left (RTL) text
  • -
  • support for Kashida for justification of arabic scripts
  • -
  • partial support for CSS3 optional font features e.g. font-feature-settings, font-variant
  • -
  • improved "autofont" capability to select fonts automatically for any script
  • -
  • support for CSS :lang selector
  • -
  • dictionary-based line-breaking for Lao, Thai and Khmer (U+200B is also supported)
  • -
  • separate algorithm for Tibetan line-breaking
  • -
- -

Note: There are other smart-font technologies around to deal with complex scripts, namely Graphite fonts (SIL International) and Apple Advanced Typography (AAT by Apple/Mac). mPDF 6 does not support these.

- -

What can OTL Fonts do?

- -

Support for OTL fonts allows the faithful display of almost all complex scripts:

-
    -
  • Arabic (السلام عليكم), Hebrew (שלום), Syriac (ܐܣܛܪܢܓܠܐ)
  • -
  • Indic - Bengali (স্লামালিকুম), Devanagari (नमस्ते), Gujarati (નમસ્તે), Punjabi (ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ),
    -Kannada (ನಮಸ್ತೆ), Malayalam (നമസ്തെ), Oriya (ନମସ୍କର), Tamil (வணக்கம்), Telugu (నమస్కారం)
  • -
  • Sinhala (ආයුඛෝවන්), -Thai (สวัสดี), -Lao (ສະບາຍດີ), -Khmer (ជំរាបសួរ), -Myanmar (မဂႆလာပၝ),
    -Tibetan (བཀྲ་ཤིས་བདེ་ལེགས།)
  • -
- -

Joining and Reordering

-
-র + ্ + খ + ্ + ম + ্ + ক + ্ + ষ + ্ + র + ি + ু = -র্খ্ম্ক্ষ্রিু -
-

cf. http://www.microsoft.com/typography/OpenTypeDev/bengali/intro.htm

- -

Ligatures

-
-ffi ffl fi -      -ffi ffl fi -
- -

Language-dependent substitutions

-
-

Arabic: ۴ ۶ ٧ Urdu: ۴ ۶ ٧ Arabic: ه ۈ ۑ ە Kurdish: ه ۈ ۑ ە

-
- -

Font features - Optional substitutions

-Stylistic Alternatives (salt) -
-

Arabic: ئ ع ک ـه ـهـ ـۀ Farsi: ئ ع ک ـه ـهـ ـۀ Arabic: گ Turkish: گ

-
- - - -

CSS control of discretionary OTL features

- -
-salt: (off) all -      (on) -all -
- - -
-frac: (off) 1/4 3/10 -      (on) -1/4 3/10 -
- -
-zero: (off) 1,000 -      (on) -1,000 -
- -
-onum: (off) 0123456789 -      (on) -0123456789 -
- -
-sups: (off) (32) -      (on) -(32) -
- -
-Stylistic Alternatives (ss03,ss04): (off) अ झ ण झ ९ -      (on) -अ झ ण झ ९ -
- - -

A full list of feature tags is at http://www.microsoft.com/typography/otspec/featurelist.htm

-

In mPDF, the following features are on by default:

-
    -
  • GSUB features: locl ccmp pref blwf abvf pstf pres abvs blws psts haln rlig calt liga clig mset (all scripts)
  • -
  • GSUB features: isol fina fin2 fin3 medi med2 init nukt akhn rphf rkrf half vatu cjct cfar (for appropriate scripts e.g. Indic, Arabic)
  • - -
  • GPOS features: abvm blwm mark mkmk curs cpsp dist requ [kern]
  • -
- -

NB \'requ\' is not listed in the Microsoft registry of Feature tags; however it is found in the Arial Unicode MS font (it repositions the baseline for punctuation in Kannada script).

- - -

Kern is used in some fonts to reposition marks etc. and is essential for correct display, so in mPDF kern is on by default when any non-Latin script is used.

- - - - - -

Mark repositioning (and diacritics)

-
-זֵּ יְּ ךָ -     ‎ -זֵּ יְּ ךָ -
- - -

Mark repositioning (and Contextual substitution)

-
-Á á ï -      -Á á ï -
- - - -

Complex syllables

-
Note that the text displayed is dependent on the font\'s design/capabilities. These are both "correct" representations of the same string, using:
-
FreeSerif: र्द्मि -and FreeSans font: -र्द्मि -
-

cf. http://www.microsoft.com/typography/OpenTypeDev/devanagari/intro.htm

- - -

Complex Typography

-An example which utilises many different GSUB and GPOS features together - first without GSUB and GPOS: -
-تَسْـَٔمُوٓا۟ أَوْ كَبِيرًا إِلَىٰٓ ٱللَّهِ وَأَدْنَىٰٓ أَلَّا إِلَّآ بَيْنَكُمْ عَلَيْكُمْ أَلَّا يَعْتُمْ ۚ -
-With GSUB and GPOS: -
-تَسْـَٔمُوٓا۟ أَوْ كَبِيرًا إِلَىٰٓ ٱللَّهِ وَأَدْنَىٰٓ أَلَّا إِلَّآ بَيْنَكُمْ عَلَيْكُمْ أَلَّا يَعْتُمْ ۚ -
- - - -

Text Justification using Kashida

- -
-يَـٰٓأَيُّهَا ٱلَّذِينَ ءَامَنُوٓا۟ إِذَا -تَدَايَنتُم بِدَيْنٍ -إِلَىٰٓ أَجَلٍۢ مُّسَمًّۭى فَٱكْتُبُوهُ ۚ -
-
-يَـٰٓأَيُّهَا ٱلَّذِينَ ءَامَنُوٓا۟ إِذَا -تَدَايَنتُم بِدَيْنٍ -إِلَىٰٓ أَجَلٍۢ مُّسَمًّۭى فَٱكْتُبُوهُ ۚ -
- - - - -

What is "correct"?

-

There are a number of factors which determine how the input text is displayed in an application.

-

The font\'s capabilities/design (this example shows the same text input shown in 2 fonts):

- -
FreeSerif: र्द्मि -and FreeSans font: -र्द्मि -
- -

Complex scripts require a "shaping engine" to re-order glyphs and apply the OTL features by syllable. MS Word and Wordpad run on the Windows platform use "Uniscribe", whereas some browsers such as FireFox and OpenOffice use Pango/HarfBuzz. The different shaping engines (and indeed different versions of them) can produce different results.

- -

Different applications have different defaults (on/off) for some of the features e.g. kerning.

- -

When testing mPDF 6, if text does not appear as you expect, ensure that the font is installed on your computer, and view the HTML in a browser. Also try copying/pasting the text into Wordpad/Word/OpenOffice and ensure that the correct font has been applied.

- -

Note that Wordpad sometimes substitutes a different font if it does not like the one you have chosen, and does not even indicate that the substitution has occurred.

- - - - - -

CSS control of font features

-

See http://www.w3.org/TR/css3-fonts/#font-rend-props for information about CSS3 and font-features.

- - -

The following are supported in mPDF 6:

-
    -
  • font-variant-position
  • -
  • font-variant-caps
  • -
  • font-variant-ligatures
  • -
  • font-variant-numeric
  • -
  • font-variant-alternates - Only [normal | historical-forms] supported (i.e. most are NOT supported)
    -e.g. stylistic, styleset, character-variant, swash, ornaments, annotation (use font-feature-settings for these)
  • -
  • font-variant - as above, and except for: east-asian-variant-values, east-asian-width-values, ruby
  • -
  • font-language-override
  • -
  • font-feature-settings
  • -
- -

font-variant-east-asian is NOT supported

-

NB @font-face is NOT supported

-

NB @font-feature-values is NOT supported

- -

Note that font-variant specifies a single property in CSS2, whereas in CSS3 it has become a shorthand for all the other font-variant-* properties. font-variant: small-caps was the only one supported in mPDF <v6, and will still work in mPDF 6.

- -

See notes later about font kerning.

- -

Some examples

-

-/* use small-cap alternate glyphs */
-.smallcaps { font-feature-settings: "smcp" on; }
-
-/* convert both upper and lowercase to small caps (affects punctuation also) */
-.allsmallcaps { font-feature-settings: "c2sc", "smcp"; }
-
-/* enable historical forms */
-.hist { font-feature-settings: "hist"; }
-
-/* disable common ligatures, usually on by default */
-.noligs { font-feature-settings: "liga" 0; }
-
-/* enable tabular (monospaced) figures */
-td.tabular { font-feature-settings: "tnum"; }
-
-/* enable automatic fractions */
-.fractions { font-feature-settings: "frac"; }
-
-/* use the second available swash character */
-.swash { font-feature-settings: "swsh" 2; }
-
-/* enable stylistic set 7 */
-.fancystyle {
- font-family: Gabriola; /* available on Windows 7, and on Mac OS */
- font-feature-settings: "ss07";
-} -

- - - - - -

More Examples

-

Note the automatic line breaking used in Lao, Thai, Khmer and Tibetan text.

-SYRIAC - Estrangelo Edessa -
- ܘܬܘܒ ܐܬܟܢܝܬ ܗܕܐ ܕܝܪܐ ܩܕܝܫܬܐ ܒܫܡ ܩܕܝܫܐ ܥܢܘܝܐ ܡܪܝ ܐܘܓܝܢ ܕܐܬܐ ܗ̱ܘܐ ܡܢ ܡܨܪܝܢ ܆ ܥܠ ܒܙܒܢ ܩܪܒܐ ܐܝܬܝܘ ܕܝܪ̈ܝܐ (ܐܝܟ ܬܫܥܝܬܐ ܬܘܕܝܬܢܝܬܐ) ܚܕܟܡܐ ܓܪ̈ܡܐ ܕܩܕܝܫܐ ܡܢ ܕܝܪܐ ܕܡܪܝ ܐܘܓܝܢ ܒܛܘܪܐ ܕ ܐܝܙܠܐ ܕܢܦܠ ܒܡܕܒܪܐ ܕ ܢܨܝܒܝܢ ܥܠ ܬܚܘܡܐ ܕ ܩܡܫܠܝ. ܘܬܘܒ ܐܬܟܢܝܬ ܕܝܪܐ ܕ ܙܥܦܪܐܢ ܐܘ ܟܘܪܟܡܐ ܒܫܡ ܡܪܝ (ܫܠܝܡܘܢ) ܕܝܪܝܐ ܕܫܬܐܣ ܠܕܝܪܐ ܒܫܢܬ 473 ܡ. -
- - -MYANMAR (Burmese) -Padauk Book (SIL Font) -
-မြန်​မာအခေါ် တရားဝင်​အား​ဖြင့် ပြည်ထောင်​စု သမ္မတ မြန်မာ​နိုင်​ငံတော်သည် အရှေ့တောင်​အာ​ရှတွင် ဧ​ရိ​ယာ​အား​ဖြင့် ဒုတိယ အကျယ်​ဝန်း​ဆုံး[၁] တိုင်း​ပြည် ဖြစ်​သည်။ ၁၉၄၈ ခု​နှစ် ဇန်နဝါရီ ၄ ရက်​တွင် ဂရိတ်​ဗြိ​တိန်​နိုင်ငံထံ​မှ (အင်္ဂလိပ်​လို "Myanmar" အဖြစ်​နှင့်) ပြည်ထောင်​စု​မြန်မာ​နိုင်​ငံတော်​အဖြစ် လွတ်လပ်​ရေး​ကို ရ​ရှိ​ခဲ့​သည်။ နောက်​ပိုင်း​တွင် ပြည်ထောင်​စု ဆို​ရှယ်​လစ် သမ္မတ​မြန်မာ​နိုင်​ငံတော်​အဖြစ် ၁၉၇၄ ခု​နှစ် ဇန်နဝါရီ ၄ ရက်​တွင်​လည်းကောင်း၊ ပြည်ထောင်​စု မြန်မာ​နိုင်​ငံတော်​အဖြစ် ၁၉၈၈ခု​နှစ် စက်တင်ဘာ ၂​၃ ရက်​တွင်​လည်းကောင်း၊ ပြည်ထောင်​စု မြန်မာ​နိုင်​ငံတော်​အဖြစ် ၁၉၈၉ ခု​နှစ် ဇွန် ၁​၈ ရက်​တွင် လည်းကောင်း အမည်​များ​ပြောင်းလဲ​ခဲ့​သည်။ အာဏာ​ရ​စစ်​အစိုးရ​အား အသိ​အမှတ် မ​ပြု​သော အဖွဲ့​အစည်း​များ​က ဘား​မား ("Burma") ဟု​သာ အသိ​အမှတ်ပြု​ သုံးစွဲခဲ့​​သည်။ နိုင်​ငံတော်​အလံကိုလည်း ယခင် နိုင်ငံတော် အေးချမ်းသာယာရေးနှင့် ဖွံ့ဖြိုးရေးကောင်စီအစိုးရ​လက်ထက် ၂​၀⁠၀​၈ ခု​နှစ် ဖွဲ့​စည်း​ပုံ အခြေ​ခံ ဥပဒေတွင် ပြဋ္ဌာန်း​ထား​သည့် ပြည်ထောင်​စု သမ္မတ မြန်မာ​နိုင်​ငံတော်​အလံ ဖြင့် ၂​၀​၁​၀ ခု​နှစ် အောက်တိုဘာ​လ ၂​၁ ရက်​နေ့​တွင် အလံစတင်​လွှင့်​ထူ​ခြင်း အခမ်းအနား​များ​ကို နိုင်ငံ​တ​ဝှမ်း ကျင်းပ​ကာ အစားထိုး၍ ပြောင်းလဲ အသုံးခဲ့ပြု​သည်။ -
- -KHMER -
-ង្គ្រ -ន្រ្តី -ង្គ្រោះ -
-
-យុវជន​ម្នាក់​បាន​ស្លាប់​ដោយ​គ្រាប់កាំភ្លើង​របស់​ប៉ូលិស និង​បីនាក់​ផ្សេងទៀត​រងរបួស នៅក្នុង​ការប្រឈម​មុខ​ដាក់គ្នា​ដាច់ដោយឡែក​គ្នាមួយ រវាង​ក្រុម​យុវជន​មួយ​ក្រុម ជាមួយ​ប៉ូលិស នៅ​ម្តុំ​ស្ពាន​ក្បាលថ្នល់។ នេះ​បើតាម​ព័ត៌មាន​ពី​លោក​ ចាន់ សាវ៉េត មន្រ្តី​ស៊ើបអង្កេត​របស់​អង្គការ​សិទ្ធិមនុស្ស​អាដហុក ដែល​វត្តមាន​នៅ​កន្លែង​កន្លែង​កើតហេតុ នៅ​យប់​ថ្ងៃ​អាទិត្យ​ទី ១៥ កញ្ញានេះ។ -
- - -HEBREW - with Niqud and T\'amim (cantillation) -
-לָכֵ֤ן חַכּוּ־לִי֙ נְאֻם־יְהוָ֔ה לְי֖וֹם קוּמִ֣י לְעַ֑ד כִּ֣י מִשְׁפָּטִי֩ לֶאֱסֹ֨ף גּוֹיִ֜ם לְקָבְצִ֣י מַמְלָכ֗וֹת לִשְׁפֹּ֨ךְ עֲלֵיהֶ֤ם זַעְמִי֙ כֹּ֚ל חֲר֣וֹן אַפִּ֔י כִּ֚י בְּאֵ֣שׁ קִנְאָתִ֔י תֵּאָכֵ֖ל כָּל־הָאָֽרֶץ׃ -
- - -NKo -
-ߟߐ߬ߝߋ߲ ߓߍ߯ ߟߊߝߋ߲ ߊߡߋߙߌߞ ߒߞߏ ߘߌ߲ߞߏ ߓߍ߮ ߛߎ߬ߣߎ߲ߣߌ߲ ߠߋ ߊ߲ ߞߊ߬ߙߊ߲߬ߡߐ߯ ߓߎߓߊߞߊ߯ߙߌ߫ ߖߊ߬ߞߌ߬ߕߋ߫ ߝߊ߬ ߟߊ߫ ߛߏߡߊߦߟߍߡߊ߲ ߠߊ߫ ߑ ߫ߊ߲ ߓߍ߮ ߡߊ߬ߙߌ ߫ ߘߊߟߌߟߊ߫ ߊ߬ ߦߊߝߊ ߞߍ߫ ߊ߬ ߡߊ߬ ߸ ߞ߬߭ ߊ߬ ߟߊߦߙߐ ߛߎߡߊ ߊ߲ ߠߊ߫ ߘߎߓߊ ߦߋ ߕߊߓߊ߯ߕߐ߫ ߓߍ߯ ߦߋ ߫ ߊߟߊ߬ߡߊ ߤߌߣߊ߫ ߘ߭ߵߊߟߎ ߓߍ߯ ߟߊ߬ -
- - - -THAANA -
-ދިވެހި ވިކިޕީޑިއާ ގައި ބޭނުންކުރެވޭ ބަސްތައް އެއްގޮތަށް ދެމެހެއްޓޭތޯ މަސައްކަތް ކުރުން - -މިސާލަކަށް ޗައިނާ އަށް ސީނުކަރަ އިންޑިޔާ އަށް ހިންދުސްތާން، އަދި ސްރީލަންކާ އަށް އޮޅުދޫކަރަ ކިޔާކިޔުން ދާއިމީ ގޮތެއްގައި ހިފެހެއްޓުމަށް މަސައްކަތްކުރުން! މާނައަކީ އެއްތަނެއްގައި ސީނުކަރަ އަނެއް ތަނެއްގައި ޗައިނާ މިގޮތަށް ބޭނުން ނުކުރުން، އަދި މިނޫން މިފަދަ ބަސްތައް ވެސް މިއުޞޫލާ ޚިލާފުނުވާނޭ ގޮތަށް ބޭނުންކުރުން! -ދިވެހި ވިކިޕީޑިއާގެ ތެރެއިން ދިވެހި ބަސް ކުރިއެރުވުމަށް މަސައްކަތް ކުރުން -
- - -LAO -
-ສາທາລະນະລັດ ປະຊາທິປະໄຕ ປະຊາຊົນລາວ (ຄຳເຄົ້າ: ສາທາຣນຣັຖປຊາທິປຕັຍປຊາຊົນລາວ[໑]) ຫຼື ສປປ ລາວ ຕັ້ງຢູ່ທິດຕາເວັນອອກສຽງໃຕ້ຂອງທະວີບອາຊີ, ຢູ່ໃຈກາງຂອງແຫຼມອິນດູຈີນລະຫວ່າງເສັ້ນຂະໜານທີ 14 - 23 ອົງສາເໜືອ ແລະ ເສັ້ນແວງທີ 100-108 ອົງສາ ສປປ ລາວມີເນື້ອທີ່ທັງໝົດ 236.800 ຕາລາງກິໂລແມັດ ເປັນປະເທດທີ່ບໍ່ມີທາງອອກສູ່ທະເລ, ມີຊາຍແດນຕິດກັບ ສາທາລະນະລັດປະຊາຊົນຈີນ (505 ກິໂລແມັດ), ທິດໃຕ້ຕິດກັບລາຊະອານາຈັກກຳປູເຈຍ (435 ກິໂລແມັດ), ທິດຕາເວັນອອກຕິດກັບ ສາທາລະນະລັດສັງຄົມນິຍົມຫວຽດນາມ ( 2.069 ກິໂລແມັດ ), ທິດຕາເວັນຕົກຕິດກັບລາຊະອານາຈັກໄທ ( 1.385 ກິໂລແມັດ ), ແລະ ທິດຕາເວັນຕົກສຽງເໜືອຕິດກັບ ສາທາລະນະລັດແຫ່ງສະຫະພາບມຽນມາ ( 236 ກິໂລແມັດ ), ສ.ປ.ປ.ລາວ ເປັນປະເທດດຽວໃນພາກພື້ນນີ້ທີ່ບໍ່ມີຊາຍແດນຕິດກັບທະເລ. -
- -THAI -
-"ซัมติง" เป็นเพลงของวงเดอะบีตเทิลส์ ในปี ค.ศ. 1969 เป็นเพลงที่บรรจุอยู่ในอัลบั้มชุด แอบบีโรด เพลงนี้เป็นเพลงแรกที่ซิงเกิลหน้าเอที่จอร์จ แฮร์ริสันเขียน และถือเป็นซิงเกิลแรกของเดอะบีตเทิลส์ที่มีเพลงที่มีอยู่แล้วในอัลบั้มบรรจุอยู่ด้วย ทั้งเพลง "ซัมติง" และเพลง "คัมทูเกตเตอร์" ที่อยู่ในอัลบั้ม แอบบีโรด และเพลง "ซัมติง" ถือเป็นเพลงเดียวที่แฮร์ริสันแต่งแล้วขึ้นอันดับ 1 บนชาร์ตอเมริกันขณะที่ยังอยู่ในวงเดอะบีตเทิลส์ -
- - - -SINHALA -
-නඩත්තු කාර්යයන් විකිපීඩියාව ප්‍රශස්ත මට්ටමකින් පවත්වා ගැනීම සදහා අත්‍යවශ්‍ය අංගයකි. උපදෙස් රූරාව මගින් තවත් අලුත් නඩත්තු කාර්යයන් තැනීමේදී පරිස්සම් විය යුතුය. ඔබට හැකි විට සංවිධානාත්මක වන්න, එහෙත් සෑමවිටම විශාල පින්තූරය ඇතුලතින් තබා ගන්න: අප මෙතැනට පැමිණ සිටින්නේ විශ්වකෝෂයක් තැනීම සදහායි. ඔබ සිතන්නේ නඩත්තු කිරීම්වලට වඩා අනෙකුත් පැතිවලින් විකිපීඩියාවට දායක වීමට නම්, කරැණාකර විකිපීඩියා:විකිපීඩියාවට දායක වීම බලන්න. ඉක්මනින් අවශ්‍ය සහ ඉතා වැදගත් වන කාර්යයන් විකිපීඩියා:අතපසු වූ වැඩ හීදි සොයාගැනීමට අවස්ථාව ඇත. -
- - -TIBETAN -
-༄།ཏདྱཐཱ།ཨོཾགཏེགཏེཔཱརགཏེཔཱརསཾགཏེབོདྷིསྭཱཧཱ། -ཨོཾམུནིམུནིམཧཱམུནིཡེསྭཱཧཱ།ཨོཾཨཱམིདྷེཝཱཧྲཱི།ཨོཾམཎིཔདྨེཧཱུཾ།ཨོཾཨཱཿཧཱུཾ་ -བཛྲགུརུཔདྨསིདྡྷིཧཱུཾ།ཨོཾཨཱམརཱཎིཛྲིཝནཏིཡེསྭཱཧཱ།ཨོཾཝགིཤཱརིམུཾ།ཨོཾ་ -མཎིཔདྨེཧཱུཾ།ཨོཾབཛྲཔཱནིཧཱུཾ།ཨོཾཏཱརེཏུཏྟཱརེཏུརེསྭཱཧཱ།ཨོཾབྷྲཱུཾ་ -སྭཱཧཱ།ཨོཾཨཱམྲིཏཱཨཱཡུརྡདེསྭཱཧཱ།ཨོཾམརིཙྱེམཾསྭཱཧཱ། -
- -TAI THAM -
-ᨢ᩶ᩣᨧᩮᩢ᩶ᩣᨸᩮᩢ᩠ᨶᩈᩣ᩠ᩅᨩ᩠ᨿᨦᩉ᩠ᨾᩲ᩵ ᩉ᩠ᨾᩯᨷᩴ᩵ᩬᨴᩮᩢ᩵ᩣᨯᩲᨠᩴ᩶ᩬᨧᩡᨸᩮᩢ᩠ᨶᩈᩣ᩠ᩅᩃᩯ᩠᩶ᩅ ᨲᩧ᩠ᨦᩅᩢ᩠ᨶᨾᩦᨷ᩵ᩤ᩠ᩅᨾᩣᩋᩯ᩠᩵ᩅ -ᨾᩣᩋᩪ᩶ᨾᩣᨪᩯ᩠ᩅ ᨸᩮᩢ᩠ᨶᨤᩫ᩠ᨶᩃᨻᩪᩁ ᨢ᩶ᩣᨧᩮᩢ᩶ᩣᨧᩡᩮᩃᩥᩬᨠᩋᩮᩢᩣᨹᩱ ᩋ᩶ᩣ᩠ᨿᨷ᩵ᩤ᩠ᩅᨩ᩠ᨿᨦᩁᩣ᩠ᨿᨩᩨ᩵ᨠᩯ᩠᩶ᩅᨾᩣᩃᩪᩁ ᩋ᩶ᩣ᩠ᨿᨠᩬᨦᨤᩫ᩠ᨶᨻᩯ᩵ᨢ᩠ᨿᩅᨨᩩᨶ ᩋ᩶ᩣ᩠ᨿᨤᩴᩣᩋ᩶ᩣ᩠ᨿᨾᩪᩁ ᩋ᩶ᩣ᩠ᨿᩈᩫ᩠ᨾᩋ᩶ᩣ᩠ᨿᨾᩦ ᨻᩮᩥ᩠᩵ᨶᨷᩬᨠᩅ᩵ᩤᨧᩡᨾᩣᨢᩴᩬᨢ᩶ᩣᨧᩮᩢ᩶ᩣᨠᩴᩬᩁᩴᩬᨾᩣᩃᩯ᩠᩶ᩅᨸᩮᩢ᩠ᨶᨸᩦ -
- - - -

Dictionary Line breaking

-

Lao, Thai and Khmer text does not have space between words. By default, mPDF 6 uses word dictionaries to determine appropriate opportunites for line-breaks. Users may turn this function off using the configurable variable useDictionaryLBR.

- -

Alternatively users can insert the character U+200B (zero-width space) in the text to mark line-breaking opportunities manually.

- -

Similarly for Tibetan script, mPDF 6 uses a simple algorithm to identify line-breaking opportunities after the characters U+0F0B (Tsheg) or U+0F0D. This can be overriden using the configurable variable useTibetanLBR.

- - - - - -

Myanmar Fonts

- -

Myanmar (Burmese) on the web is quite frequently written for fonts which are not strictly unicode-compliant. This includes common applications such as WordPress and a number of official Burmese government websites.

-

Ayar fonts (http://www.ayarunicodegroup.org) are based on text input where the vowel preceeds the consonant (which is contrary to Unicode specification). -

-

ZawGyi-One is another very common font in use. This font has some characters incorrectly coded e.g. U+103A as U+1039.

-

There are also fonts available which are fully unicode compliant, such as Padauk, Tharlon, Myanmar3, and Microsoft\'s Myanmar Text.

-

As long as you select the right font for the input text, all of them work fine in mPDF:

- - -

Tharlon: ဒီရက်ပိုင်းမှာ ဧရာဖောင့်ကို ယူနီကုဒ်အဖြစ် ရည်ညွှန်းပြောဆိုနေကြတာ တွေ့ရလို့ ဧရာဟာ ယူနီကုဒ် မဖြစ်ကြောင်းနဲ့ ဘာလို့မဖြစ်ရတာလဲဆိုတာ အတိုပဲ ရှင်းပါမယ်။ ယူနီကုဒ်ဖြစ်ဖို့ - ၁။ ယူနီကုဒ် ကုဒ်ပွိုင့်နဲ့ ကိုက်ညီရပါမယ်။ -၂။ ယူနီကုဒ် စာလုံးစီပုံ (Encoding) နဲ့ ကိုက်ညီရပါမယ်။

- -
from http://www.myanmarlanguage.org/unicode
- -

Zawgyi-one: စီးပြားေရးနွင့္ကူးသန္းေရာင္းဝယ္ေရးဝန္ၾကီးဌာန ျပည္ေထာင္စုဝန္ၾကီး မႏၱေလးတုိင္းေဒသၾကီး ေက်းလက္ေဒသ အေသးစား ကုန္ထုတ္လုပ္ငန္းမ်ား ၾကည့္ရွဳအားေပး -

-
from http://www.commerce.gov.mm/
- - -

Ayar: WordPress တရားဝင် ြမန်မာဘာသာ စာမျက်နှာမှ ြကိုဆိုပါတယ်။ ! -ရာနှုန်းြပည့် ဘာသာြပန်ထားသည့် WordPress ြမန်မာ ဘာသာြပန်မူကို ဗားရှင်း ၃.၁ ြဖင့် စတင် ြဖန့်ချိလိုက်ြပီးသည့်ေနာက် ဆက်လက်၍ အဆင့်ြမှင့်တင်မှု ဗားရှင်းများကို အချိန်နှင့်တစ်ေြပးညီ -

-
from https://mya.wordpress.org/
- - - -

lang selector

-

mPDF 6 supports use of the lang selector in CSS. All of the following are supported:

-
    -
  • :lang(fr)
  • -
  • p:lang(fr)
  • -
  • span:lang("syr")
  • -
  • [lang="fr"]
  • -
  • [lang=\'fr\']
  • -
  • p[lang=fr]
  • -
  • p[lang="zh-TW"]
  • -
- -

Note: [lang=zh] will match lang="zh-TW" and lang="zh-HK"

- -

Limitation: class selectors and attribute selectors should be of equal specificity in CSS specification e.g. -

-:lang(syr) { color: blue; }
-.syriac { color: red; } -

-

should be of equal specificity, and thus apply whichever comes later in the CSS stylesheet. mPDF 6 however gives :lang priority over .class

- -

The use of the lang attribute and CSS selector is now the recommended method for handling multi-lingual documents in mPDF 6.

- -

lang HTML attribute

-

The HTML lang attribute has a number of uses:

-
    -
  • when OTL tables are being used for a font, the language from the lang attribute is used to select which OTL features are applied;
  • -
  • used in conjunction with CSS lang selector to allow CSS styles to be applied;
  • -
  • can be used in conjunction with autoLangToFont and autoScriptToLang (see below)
  • -
-

IETF tags should be used for lang which comply with the following:

-
    -
  • a 2 or 3 letter Language code, followed optionally by
  • -
  • a hyphen and a 4 letter Script code, and or
  • -
  • a hyphen and a 2 letter Region code
  • - -
  • i.e. [xx|xxx]{-Xxxx}{-XX}
  • -
  • mPDF deals with IETF tags as case insensitive
  • -
- - - - -

Automatic font selection

- -

Note: This functionality of mPDF has changed considerably in mPDF v6 and is not backwards compatible.

- -

mPDF 6 has two functions which can be used together or separately:

- -

autoScriptToLang - marks up HTML text using the lang attribute, based on the Unicode script block in question, and configurable values in config_script2lang.php.

-

autoLangToFont - selects the font to use, based on the HTML lang attribute, using configurable values in config_lang2font.php.

- -

For automatic font selection, ideally we would choose the font based on the language in use. However it is actually impossible to determine the language used from a string of HTML text. The Unicode script block can be ascertained, and sometimes this tells us the language e.g. Telugu. However, Cyrillic script is used for example in many different languages. So the best we can do is base it on the script used. However, mPDF 6 does this in two stages via the "lang" attribute, because this allows the options of using either of the stages alone or together:

- -
-

<p>English ру́сский язы́к پښتو</p>

-

autoScriptToLang (config_script2lang.php) ↓

- -

<p>English <span lang="und-Cyrl">ру́сский язы́к</span>
-<span lang="ps">پښتو</span></p>

-

autoLangToFont (config_lang2fonts.php) ↓

- -

Uses "lang" to select font, and to determine OTL features applied

-
- -

autoScriptToLang

- -

-$mpdf->autoScriptToLang = true;
-$mpdf->baseScript = 1;
-$mpdf->autoVietnamese = true;
-$mpdf->autoArabic = true; -

- -

$mpdf->baseScript = 1; tells mPDF which Script to ignore. It is set by default to "1" which is for Latin script. In this mode, all scripts except Latin script are marked up with "lang" attribute. To select other scripts as the base, see the file /classes/ucdn.php

- -

Using autoScriptToLang, mPDF detects text runs based on Unicode script block; using the values in config_script2lang.php it then encloses the text run within a span tag with the appropriate language attribute. For many scripts, the language cannot be determined: see the example above which recognises Cyrillic script and marks it up using und-Cyrl, which is a valid IETF tag, coding for language="undetermined", script="Cyrillic".

- -

Two optional refinements are added: Vietnamese text can often be recognised by the presence of certain characters which do not appear in other Latin script langauges, and similarly analysis of the text can attempt to distinguish Arabic, Farsi, Pashto, Urdu and Sindhi. If active, the text will then be marked with a specific language tag e.g. "vi", "pa", "ur", "fa" etc.

- -

These features can be disabled or enabled (default) using the variables $mpdf->autoVietnamese -$mpdf->autoArabic, either in config.php or at runtime.

- - - -

autoLangToFont

-

-$mpdf->autoLangToFont = true; -

-

You can edit the values in config_lang2font.php to specify which fonts are used for which "lang".

- - -

Using text with multiple languages

-

Recommended ways to use multiple languages in mPDF:

-
    -
  1. If you have full control over the HTML, mark-up the text with the "lang" atribute and use CSS (:lang selector preferably); this method means that the language information can also be used by OTL for language dependent substitutions.
  2. -
  3. If you have no control over (user) HTML input and want to output faithfully, use both autoScriptToLang and autoLangToFont
  4. -
- -

It is preferable not to use autoScriptToLang and autoLangToFont unless they are necessary: they will result in increased processing time, and OTL tables will not be able to use language dependent substitutions when undefined languages are set e.g "und-Cyrl".

- - -

Updating from previous mPDF versions

-

As a brief summary, to update from previous versions of mPDF:
-Use $this->autoScriptToLang=true instead of $this->SetAutoFont()
-Use $this->autoLangToFont instead of $this->useLang -

- - -

Bidi Bidirectional text

- -

The algorithm to handle bi-directional text (right to left) has been completely rewritten. Text is now processed across the whole paragraph ignoring inline tags. There is also full support for the methods to control/override the display.

- - -

1) The following Unicode characters are supported, and can be inserted directly in the text as HTML entities:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LREU+202ALEFT-TO-RIGHT EMBEDDING&#x202A;
RLEU+202BRIGHT-TO-LEFT EMBEDDING&#x202B;
LROU+202DLEFT-TO-RIGHT OVERRIDE&#x202D;
RLOU+202ERIGHT-TO-LEFT OVERRIDE&#x202E;
PDFU+202CPOP DIRECTIONAL FORMATTING&#x202C;
LRIU+2066LEFT-TO-RIGHT ISOLATE&#x2066;
RLIU+2067RIGHT-TO-LEFT ISOLATE&#x2067;
FSIU+2068FIRST STRONG ISOLATE&#x2068;
PDIU+2069POP DIRECTIONAL ISOLATE&#x2069;
LRMU+200ELEFT-TO-RIGHT MARK&#x200E;
RLMU+200FRIGHT-TO-LEFT MARK&#x200F;
- -

2) The following HTML tags are supported: -

    -
  • <bdo> (NB the "dir" attribute is mandatory on <bdo>)
  • -
  • <bdi> (HTML5)
  • -
-

- - -

3) The CSS property "unicode-bidi" is supported with the following (CSS3) values: normal | embed | isolate | bidi-override | isolate-override | plaintext. -
-See http://www.w3.org/TR/css3-writing-modes/#unicode-bidi -for more details. -
-"unicode-bidi" is supported on block level elements as well as in-line elements, but note that: -

  • the value is not inherited to child blocks
  • -
  • using "embed" or "isolate" has no effect on block level boxes
  • -
  • "isolate-override" is equivalent to "bidi-override" on block level boxes
  • -
-

- -

NB dir="auto" is not supported generally, but it is supported for <bdi> (has the same effect as if omitted) to use First Strong Isolate (FSI).

- -

Directionality can now be set on individual table cells <td style="direction:rtl;unicode-bidi:embed;"> or <td dir="rtl">

- - -

Equivalent methods

-

The following are equivalent methods:

- - - - - - - - - - -
-EMBED -
-<span dir="rtl">...</span>
-&#x202B;...&#x202C;
-<span style="direction: rtl; unicode-bidi: embed">...</span> -
-OVERRIDE -
-<bdo dir="rtl">...</bdo>
-&#x202E;...&#x202C;
-<span dir="rtl" style="unicode-bidi: bidi-override">...</span>
-<span style="direction: rtl; unicode-bidi: bidi-override">...</span> -
-ISOLATE -
-<bdi dir="ltr">...</bdi>
-&#x2067;...&#x2069;
-<span dir="rtl" style="unicode-bidi: isolate">...</span>
-<span style="direction: rtl; unicode-bidi: isolate">...</span> -
-First Strong Isolate (FSI) -
-<bdi>...</bdi>
-<bdi dir="auto">...</bdi>
-&#x2068;...&#x2069;
-<span dir="rtl" style="unicode-bidi: plaintext">...</span>
-<span style="direction: rtl; unicode-bidi: plaintext">...</span>
-
- - -

First strong isolate (FSI)

-

FSI is useful when including text within a paragraph where the directionality of the text is unknown. For example, if you are printing out a catalogue from a database of book titles and the number of readers, when some book titles are in right-to-left script, you may use this template:

- -

-<li>Title: {TITLE} - {READERS} readers</li> -

- -

This would result in the following:

- -
    -
  • Title: Alice in Wonderland - 12390 readers
  • -
  • Title: עליסה בארץ הפלאות, סיפור-ילדים מאת לואיס קרול - 17890 readers
  • -
- -

-<li>Title: <bdi>{TITLE}</bdi> - {READERS} readers</li> -

- -

Using BDI will result in the following:

- -
    -
  • Title: Alice in Wonderland - 12390 readers
  • -
  • Title: עליסה בארץ הפלאות, סיפור-ילדים מאת לואיס קרול - 17890 readers
  • -
- - - - -

Kerning

-

Kerning is a bit complicated! CSS3 allows for 2 methods of specifying kerning. In mPDF 6, these 2 methods have exactly the same effect:

-
    -
  • font-kerning: normal;
  • -
  • font-feature-settings: \'kern\' on;
  • -
- -

TrueType fonts allow for 2 possible ways of including kerning data:

-
    -
  • OTL GPOS table may contain kerning information
  • -
  • A separate kern table
  • -
-

Most fonts contain both or none, but they may exist independently.

- -

If kerning is set to be active (by either of the CSS methods):

-
    -
  • if the useOTL value means that OTL GPOS tables are applied, then this method will be used;
  • -
  • if not, then the separate kern table will be used - if it exists.
  • -
- - - -

In Latin script, kerning will only be applied if specified by CSS. The configurable variable useKerning determines behaviour if font-kerning: auto is used (the default).

- -

When using OTL tables, kerning is set to be on by default for non-LATIN script; this is because a number of fonts use information in the kern feature to reposition glyphs which are essential for correct display in complex scripts.

- -

Limitation: if useOTL is set, but not for Latin script (e.g. = 0x02), and the text string contains more than one script, then kerning will not be applied to the Latin script text e.g. [Cyrillic text][Latin text][Cyrillic text]. This is because mPDF uses the presence of any repositioning applied to determine if kerning has been applied, otherwise using the alternative kern tables.

- - -

Small-Caps

-

Small Caps should be selected using:

-

-<p style="font-variant-caps:small-caps">This is in small caps</p> -

-

and will appear as: This is in small caps

- -

Note: font-variant:small-caps will also be recognised as font-variant is now considered the shorthand version cf. above.

- -

If the font has useOTL enabled (to any value), and the font OTL tables contain the "smcp" feature, then the OTL feature will be used to substitute purpose-designed glyphs from the font. Otherwise, mPDF generates small capitals as in previous version.

- - - -

Superscript and Subscript

- -

-<p>This is in <span style="font-variant-position:super">superscript</span></p> -

-

will appear as superscript (only) if the font is OTL-capable and contains specific glyphs for superscript.

- -

Note that font-variant:super will also be recognised as font-variant is now considered the shorthand version cf. above.

- -

If the font has useOTL enabled (to any value), and the font OTL tables contain the "sups" feature, then the OTL feature will be used to substitute purpose-designed glyphs from the font.

- -

The same for subscript using font-variant-position:sub.

- -

If you wish to use a superscript/subscript which will work with any font, continue to use the tags <sup> and <sub> which (through the default CSS in config.php) will generate superscript using CSS vertical-align=super and font-size=55%.

- - - -

How to use OTL in mPDF

-

In config_fonts.php there are 2 new variables which affect OTL features e.g.:

- -

- "dejavusanscondensed" => array(
- \'R\' => "DejaVuSansCondensed.ttf",
- \'B\' => "DejaVuSansCondensed-Bold.ttf",
- \'I\' => "DejaVuSansCondensed-Oblique.ttf",
- \'BI\' => "DejaVuSansCondensed-BoldOblique.ttf",
- \'useOTL\' => 0xFF,
- \'useKashida\' => 75,

- ), -

- -

mPDF is published with a large collection of fonts, and all configured to use their full OTL capabilities.

- -

useOTL

-

useOTL should be set to an integer between 0 and 255. Each bit will enable OTL features for a different group of scripts:

- - - - - - - - - - -
Bit dec hex Enabled
1 1 0x01 GSUB/GPOS - Latin script
2 2 0x02 GSUB/GPOS - Cyrillic script
3 4 0x04 GSUB/GPOS - Greek script
4 8 0x08 GSUB/GPOS - CJK scripts (excluding Hangul-Jamo)
5 16 0x10 (Reserved)
6 32 0x20 (Reserved)
7 64 0x40 (Reserved)
8 128 0x80 GSUB/GPOS - All other scripts (including all RTL scripts, complex scripts etc)
- -

Setting useOTL to 0 (or omitting it) will disable all OTL features. Setting useOTL to 255 or 0xFF will enable OTL for all scripts. Setting useOTL to 0x82 will enable OTL features for Cyrillic and complex scripts.

- -

In a font like Free Serif, it may be useful to enable OTL features for complex scripts, but disable OTL for Latin scripts (to save processing time). However, see above - this may disable kerning in Latin scripts in certain circumstances.

- - -

useKashida

-

useKashida should be set for arabic fonts if you wish to enable text justification using kashida. The value should be an integer between 0 and 100 and represents the percentage of additional space required to justify the text on a line as a ratio of kashida/inter-word spacing.

- - - -

Choosing fonts to add to mPDF 6

-

Fonts with OTL need to have GDEF, GSUB and GPOS tables in the font file. Although TrueType font files are binary files, the table names and script/feature tags are written as ASCII characters; open the .ttf or .otf file in a text editor such as Windows Notepad, and you will see GDEF, GSUB and GPOS in the first few lines if they are present. You can also search the file to see if the script tags are present for your desired scripts cf. http://www.microsoft.com/typography/otspec/scripttags.htm.

- -

Note: The OTL specification for Indic fonts was updated in 2005 to version 2. The v2 script tag for Bengali is "bng2" whereas prior to this it was "beng". Many open-source font files are still written for the old specification. This is supported by mPDF, although v2 fonts give better results.

- -

Note: mPDF does not support Graphite or AAT font features.

- - -

Configuring new fonts for mPDF 6

-

To add a font, first copy the font file to the /ttfonts/ folder.

-

Then edit config_fonts.php to add. See the manual for details if you are not already familiar with this.

-

If you wish to use this font with autoLangToFont, you also need to edit config_lang2fonts.php

- - -

Setting OTL use at runtime

-

mPDF caches some font information in the /ttfontdata/ folder to improve performance. This is regenerated if you change the value of useOTL for a font.

-

There may be circumstances when you wish to use OTL features with different scripts depending on the document e.g. for everyday use you may want to disable OTL for FreeSerif to save processing time, but on occasions use OTL for Indic and/or Arabic scripts. The recommended way to do this is to create 2 instances of the font e.g. in config_fonts.php:

-

- "freeserif" => array(
- \'R\' => "FreeSerif.ttf",
- \'B\' => "FreeSerifBold.ttf",
- \'I\' => "FreeSerifItalic.ttf",
- \'BI\' => "FreeSerifBoldItalic.ttf",
- \'useOTL\' => 0x00,
- ),
- "freeserif2" => array(
- \'R\' => "FreeSerif.ttf",
- \'B\' => "FreeSerifBold.ttf",
- \'I\' => "FreeSerifItalic.ttf",
- \'BI\' => "FreeSerifBoldItalic.ttf",
- \'useOTL\' => 0xFF, /* Uses OTL for all scripts */
- \'useKashida\' => 75,
- ),
-

-

You could then either use this second font name in your stylesheets e.g.

-

-<p style="font-family:freeserif2;">Hallo World (in Arabic)</p> -

- -

or, you could use font translation e.g.

-

-$mpdf->fonttrans[\'freeserif\'] = \'freeserif2\'; -

- - - - -

Page breaking

- -

Types of page break

- -

The handling of borders and padding at page breaks has been updated. mPDF has three types of page breaks:

-

1) "slice" - no border and no padding are inserted at a break. The effect is as though the element were rendered with no breaks present, and then sliced by the breaks afterward

- -

2) "cloneall" - each page fragment is independently wrapped with the borders and padding of all open elements.

- -

3) "clonebycss" - open elements which have the (custom) CSS property "box-decoration-break" set to "clone" are independently wrapped with their border and padding.

- -

The difference between 2) and 3) is illustrated by this example:

- -

-<style>
-div { border: 1px solid black; padding: 1em; }
-.level1 { box-decoration-break: slice; }
-.level2 { box-decoration-break: clone; }
-.level3 { box-decoration-break: clone; }
-</style>
-
-
-<div class="level1">
- <div class="level2">
- <div class="level3">
- <p style="page-break-after:always">...</p>
- <p>....</p>
- </div>
- </div>
-</div>
-

- -

At the forced pagebreak which occurs after the P element:

- -

If the page break type is "cloneall" - the three DIV elements will all be closed, by drawing the border and padding for each at the end of the page; the three DIV elements will be re-opened, drawing the borders and padding, at the top of the next page.

- -

If the page break type is "clonebycss" - starting from the innermost element (div.level3) the DIV elements will have a border and padding at the end of the page if "box-decoration-break" is clone. In this case level2 and level 3 will be closed/cloned and level 1 will be sliced; the opposite will occur at the top of the next page.

- -

Control of page breaks

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Automatic page breaks (in flow of text)Always "slice"
<tocpagebreak>Always "cloneall"
<formfeed>Always "slice"
If using columnsAlways "cloneall"
Page break forced by change of @page selectorAlways "cloneall"
<pagebreak> Always "cloneall" if a change in page size or margins is specified.
-Otherwise page break type is determined by value of configurable variable: $this->defaultPagebreakType. Default is "cloneall".
-Default can be overridden by attribute "page-break-type" e.g. <pagebreak page-break-type="clonebycss" /> -
Page breaks forced by:
-page-break-before or page-break-after -
-Page break type determined by value of configurable variable: $this->defaultPagebreakType. Default is "cloneall". -
- - - -

Notes on page breaking

-

"box-decoration-break: slice | clone" was proposed for CSS3 in http://www.w3.org/TR/2012/CR-css3-background-20120417/#the-box-decoration-break but it appears that it may be withdrawn. Default is "slice"; it is not inherited.

-

"page-break-before" is not supported on <table>.

-

"page-break-before|after" is ignored if set on block elements inside a table.

-

mPDF functions e.g. AddPage() are not affected by the changes in mPDF 6.

-

Background images and gradients are not sliced.

-

$this->restoreBlockPagebreaks in config.php is now redundant.

- - - - -

Line breaking

-

The algorithm for determining automatic line breaks has been completely rewritten, ignoring inline tags (except for some cases of CJK line-breaking, and autohyphenation).

- -

Line breaks will be allowed at:

-
    -
  • Spaces U+0020
  • -
  • Word break U+200B
  • -
  • Hyphen-minus U+002D when CSS hyphens set to "manual" or "auto", except when in a URL, or when following character is a > or numeral
  • -
  • Hard hyphen U+2010 when CSS hyphens set to "manual" or "auto"
  • -
  • Soft hyphen U+00AD "­" when CSS hyphens set to "manual" or "auto"
  • -
  • Automatic hyphenation when CSS hyphens set to "auto"
  • -
  • Between CJK characters, except CJK numerals, before "CJK-following" or after "CJK-leading" characters
  • -
- -

See also "Dictionary Line breaking" above.

- - - - - -

Line-height and Text Baseline

- -

Using font metrics

- -

mPDF 6 can (optionally) use font metrics derived from each font file to:

-
    -
  • Determine the height of a line when line-height is set to \'normal\'
  • -
  • Determine the glyph baseline (previously a fixed value)
  • -
- -

Options are set by configurable variables in the config.php file:

- -

Default settings in mPDF versions 6 - recommended especially for complex scripts with marks used above or below characters:

-
    -
  • $this->useFixedNormalLineHeight = false;
  • -
  • $this->useFixedTextBaseline = false;
  • -
  • $this->adjustFontDescLineheight = 1.14;
  • -
- - -

Settings to be backwards compatible with mPDF versions < 6:

-
    -
  • $this->useFixedNormalLineHeight = true;
  • -
  • $this->useFixedTextBaseline = true;
  • -
  • $this->normalLineheight = 1.33;
  • -
- -

Examples

- -

Using the font metrics will give approximately the same result as the fixed value for many standard Latin script fonts e.g. DejaVu Sans Condensed:

- -

line-height: normal; based on font metrics

- -

line-height: normal; using fixed value

- -

However, for some fonts the normal line-height using font metrics will be significantly taller, to account for the design of the font glyphs e.g. Khmer font:

- -

line-height: normal; based on font metrics; -ង្រ្គ ង្គ្រ ន្រ្តី ន្រ្តី ង្គ្រោះ យុវជន

- -

line-height: normal; using fixed value; -ង្រ្គ ង្គ្រ ន្រ្តី ន្រ្តី ង្គ្រោះ យុវជន

- - -

For more information on how complex normal lineheights are, see Eric Meyers\' website: http://meyerweb.com/eric/thoughts/2008/05/06/line-height-abnormal/ and -http://typophile.com/node/13081

- - -

CSS control of line-height

- -

There are also new controls for line-height using draft CSS3 properties. These can be set on all block level elements (P, DIV etc) and tables (TABLE/TD/TH).

-

line-stacking-strategy = inline-line-height | block-line-height | max-height | grid-height

-
    -
  • inline-line-height - [default] lineheight is initially calculated from the block-level font[-size]; the height is expanded by any inline content, including the calculated lineheight of that inline content;
  • -
  • block-line-height - lineheight is fixed as the lineheight of the block-level font[-size];
  • -
  • max-height - lineheight is initially calculated from the block-level font; the height is expanded by any inline content, EXCLUDING the calculated lineheight of that inline content;
  • -
  • grid-height - lineheight is initially calculated from the block-level font; the height is expanded - AS MULTIPLES OF INITIAL LINEHEIGHT - by any inline content, EXCLUDING the calculated lineheight of that inline content;
  • -
-

Note: XSL has a similar property with the same name, which uses different but equivalent values: line-height instead of inline-line-height, font-height instead of block-line-height. It also uses max-height. The value grid-height is new to the CSS3 property.

- -

Examples

- -

line-height: normal; DejaVu Sans Condensed

- -

line-height: normal; 16pt font-size  with line-stacking-strategy: inline-line-height

- -

line-height: normal; 16pt font-size  with line-stacking-strategy: block-line-height

- -

line-height: normal; 16pt font-size  with line-stacking-strategy: max-height

- -

line-height: normal; 16pt font-size  with line-stacking-strategy: grid-height

- -
-
- -

line-stacking-shift = consider-shifts | disregard-shifts

-

This property determines whether to include or disregard the adjusted top- and bottom-edge of any characters that have a baseline-shift (e.g. superscript) when calculating lineheight.

-

Note: XSL has a similar property with a different name: line-height-shift-adjustment which uses the same values.

- -

Examples

- -

In the table below, the line-height is set to 1em throughout the table; line-stacking-shift is set as \'disregard-shifts\' in the first row, and has default setting (consider-shifts) in the second row.

- - - - - - - - - -
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-Normal text DejaVu Sans[53] Condensed
-
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-Normal text DejaVu Sans Condensed
-
- - - -

For more details see the CSS3 draft specification.

- -

Note for Advanced users

- -

There are actually three possible metrics that can be used in a TrueType font file. The differences are summed up quite well in this article at http://typophile.com/node/13081. mPDF will by default use the usWinAscent and usWinDescent values to determine a \'normal\' line-height, with two variations:

- -
    -
  • if either the usWinAscent or usWinDescent are greater than the font bounding box (yMin yMax), then the values are reduced to equal the yMin/yMax values. -NB this works as a fix with Myanmar Text (Windows 8 version) to give a line-height normal that is equivalent to that produced in browsers.
  • -
  • if the USE_TYPO_METRICS bit is set on fsSelection (OS/2 table), this is telling the font to use the sTypo values and not the usWinAscent values. -NB this works as a fix with Cambria Math font to give a normal line-height; at present, this is the only font I have found with this bit set; -although note that MS WordPad and Windows FireFox browser use the big line-height from usWinAscent, whilst MS Word 2007 observes the fSelection value.
  • -
- -

You can change the font metrics used by mPDF, by editing the defined constant (_FONT_DESCRIPTOR) at the top of the mpdf.php file:

-
    -
  • \'winTypo\' uses sTypoAscender etc from the OS/2 table and is the one officially recommended - BUT
  • -
  • \'win\' use usWinAscent etc from OS/2 and in practice seems to be used most commonly in Windows environment; this is the default in mPDF;
  • -
  • \'mac\' uses Ascender etc from hhea table, and may be used to give results consistent with a Mac/OSX environment.
  • -
- -

Finally, you can override values for Ascent, Descent and Leading for any specific font, by setting values in config_font.php e.g. -

-
	"cambriamath" => array(
-		\'R\' => "cambria.ttc",
-		\'useOTL\' => 0xFF,
-		\'TTCfontID\' => array(
-			\'R\' => 2,	
-			),
-		\'Ascent\' => 950,
-		\'Descent\' => -222,
-		\'Leading\' => 0,
-		),
-
-
-

Note - The same values are used for all styles of the font-family. Descent values should be negative. All values should be given using a 1000 units per em scale, regardless of the UnitsPerEm used in the font design.

- -

Notes

-

Remember that line-height for a TABLE has a default value (1.2) set in the config.php default CSS. This is left in for backwards compatability. You can change this value to \'normal\' for results consistent with most browsers.

-

Line-height in a <textarea> is fixed and defined in classes/mpdfform.php (= 1.2)

-

Details of the font metrics can be seen by inspecting the temporary font files e.g. /ttfontdata/[fontname].mtx.php. - - - - - -

Indexes

-

Index style and layout

-

Indexes have been completely rewritten for mPDF 6, and are not backwards compatible:

-
    -
  • Reference() is now removed - use IndexEntry() instead.
  • -
  • CreateReference() and CreateIndex() are both removed - replaced by: InsertIndex() [or recommend <indexinsert>] cf. below.
  • -
  • <indexinsert> and InsertIndex() no longer set styles - appearance must be controlled using CSS, even if using function InsertIndex().
  • -
  • <indexinsert> and InsertIndex() no longer control columns - these must be specified separately.
  • -
- -

When an Index is inserted in the PDF document, the Index is now generated (internally) as HTML code in the following format:

- -

-<div class="mpdf_index_main">
-<div class="mpdf_index_letter">A</div>
-<div class="mpdf_index_entry">Aardvark<a class="mpdf_index_link" href="#page37">37</a>
-</div>
-...
-</div> -

- -

CSS stylesheets can thus be used to control the layout of the Index e.g.:

-

-/* For Index */
-div.mpdf_index_main {
-    line-height: normal;
-    font-family: sans-serif;
-}
-div.mpdf_index_letter {
-    line-height: normal;
-    font-family: sans-serif;
-    font-size: 1.8em;
-    font-weight: bold;
-    text-transform: uppercase;
-    page-break-after: avoid;
-    margin-top: 0.3em;
-    margin-collapse: collapse;
-}
-div.mpdf_index_entry {
-    line-height: normal;
-    font-family: sans-serif;
-    text-indent: -1.5em;
-}
-a.mpdf_index_link {
-    color: #000000;
-    text-decoration: none;
-}
-

- -

A default stylesheet for Indexes is included in mpdf.css (see note later for more information).

- - - -

Index Collation

-

In order to generate an Index with non-ASCII characters, entries need to be sorted accordingly (collation), and non-ASCII characters should map to the appropriate Dividing letter e.g.:

-
-
A
-
Alonso, Fernando
-
Ãlvarez, Isaac
-
Arroyo Molino, David
-
B
-
BenÃtez, Carlos
-
- -

Entries in an Index can now be sorted using any of the Locale values available on your system. Set it using the "collation" property/parameter e.g.:

-

-<indexinsert usedivletters="on" links="off" collation="es_ES.utf8" collation-group="Spanish_Spain" />
-- or -
-$mpdf->InsertIndex(true, false, "es_ES.utf8", "Spanish_Spain"); -

- -

NB You should always choose a UTF-8 collation, even when you are using Core fonts or e.g. charset-in=win-1252, because mPDF handles all text internally as UTF-8 encoded.

- -

You can see which Locales are available on your (Unix) system: <?php system(\'locale -a\') ?>

- -

Note: Index collation will probably not work on Windows servers because of the problems setting Locales under Windows.

- -

If you have set your index to use Dividing letters, you can also determine how letters are grouped under -a dividing letter. In the example index above, we want à to be grouped under the letter a/A. Set the "collation-group" using:

-

-<indexinsert usedivletters="on" links="off" collation="es_ES.utf8" collation-group="Spanish_Spain" /> -- or -
-$mpdf->InsertIndex(true, false, "es_ES.utf8", "Spanish_Spain"); -

-

Values should be selected from the available file names in folder /collations/.

- -

Note: This will not affect the overall order of entries, which is determined by the value of "collation".

- -

Note: The groupings do not always match the order set by locale. This is because the data for collations has come from different sources. The files in /collations/ can be edited.

-

The array consists of [index]: unicode decimal value of character => unicode decimal value of character to group under: -e.g. Ã [A tilde] (U+00C3) (decimal 195) => a (U+0061) (decimal 97). The target character should always be the lowercase form.

- -

Non-ASCII chcracters in Index entries

-

Note: htmlspecials_encode should be used to encode the text of content in <indexentry> - although not when using $mpdf->IndexEntry().

- -

Columns

-

Columns are no longer specified as part of the <indexinsert>, so a typical 2-column index might be produced by:

-

-<pagebreak type="next-odd" />
-<h2>Index</h2>
-<columns column-count="2" column-gap="5" />
-<indexinsert usedivletters="on" links="on" collation="en_US.utf8" collationgroup="English_United_States" />
-<columns column-count="1" />
-

- -

Index Sub-entries

-

Index entries can contain sub-entries, separated by colons e.g.

-

<indexentry content="Mammals:elephants" />

- -

A shorthand way of displaying subentries is set by default, which suppresses the main entry if > 1 subEntry. It can be disabled/enabled using the configurable variable $this->indexUseSubentries in config.php.

- -

This is the default appearance, with $this->indexUseSubentries = false; -

-
-Mammals 73
-- elephants 142
-- humans 173
-Marsupials
-- kangaroos 75
-- wombats 86 -
- -

Index entries can also include simple mark-up tags and/or more than one colon e.g:

-

<indexentry content="Mammals:&lt;b&gt;elephants&lt;/b&gt;: breeding" />

-which appears as: -
-Mammals
-- elephants: breeding 15 -
- -

This is the appearance with $this->indexUseSubentries = false; -

-
-Mammals 73
-Mammals, elephants 142
-Mammals, elephants: breeding 15
-Mammals, humans 173
-Marsupials, kangaroos 75
-Marsupials, wombats 86
-
- -

Customised appearance

-

Several variables set at beginning of function InsertIndex() in mpdf.php which could be changed to alter appearance of Index. - e.g. spacer, and joiner characters.

- - - - -

Lists

- -

Lists are now handled as for other block level tags, so you can apply any CSS properties usable on blocks (e.g. border, background, padding) to UL/OL and LI tags.

- -

CSS property "list-style" is now handled properly as a shorthand, and there is full support for "list-style-image", "list-style-type", and "list-style-position".

- - -

There are two modes for lists in mPDF 6: "mpdf" mode and "browser" mode. Mode is set using the configurable variable $this->list_auto_mode in config.php

- -

1) Browser mode gives the same display as most browsers. In this mode, the default list indentation is set by padding "0 auto" in the default CSS in config.php. "auto" equates to the value of $this->list_indent_default in config.php - this is a "magic" value for padding, which is applied to either left or right depending on directionality of the list (rtl/ltr).

- - -

2) mPDF mode gives results compatible with previous versions of mPDF. In this mode, the indentation is calculated differently: the outside edge of the list item is considered to be the outside edge of the bullet or number. For numbered lists, mPDF calculates the width of the largest number and this width is used to set the outside edge. The default list indentation of "auto" in mPDF mode is set by $this->list_indent_default_mpdf. This value is added to the automatic calculated indentation. For backwards compatibility, $this->list_indent_first_level = 0; can be used to prevent any indentation of the first list level.

- -

The automatic indentation only works for bullets or numbered lists, and is ignored if "list-style-position: inside" is set, or images are used for markers.

- -

Browser mode is set as the default - for backwards compatibility, change this to "mpdf".

- -

List top & bottom margins

-

The default in browsers is to add a top and bottom margin to the outermost list only. This can be defined using CSS as:

-

-ul, ol { margin-top: 0.83em; margin-bottom: 0.83em; }
-ul ul, ul ol, ol ul, ol ol { margin-top: 0; margin-bottom: 0; } -

-

This style is included in file mpdf.css (see later).

-

Previous versions of mPDF always added a top and bottom margin to the outermost list, (but no variation from this was possible). mPDF 6 is therefore backwards compatible re. the margins.

-

[NB The CSS styles are included in mpdf.css, because the defaultCSS values set in config.php only works on basic elements, and cannot use selectors such as "ol ol".]

- -

Other new configurable variables

- - -

Configurable variables are used to define size and offset for list bullets (i.e. disc, circle or square). -The values can be any valid CSS size.

-

To specify a fixed bullet size and offset to give a similar appearance to most browsers, the default is set as:

-
    -
  • $this->list_marker_offset = \'5.5pt\';
  • -
  • $this->list_symbol_size = \'3.6pt\';
  • -
-

To specify size and offset proportional to the list item\'s font size (compatible with previous versions of mPDF), use:

-
    -
  • $this->list_marker_offset = \'0.45em\';
  • -
  • $this->list_symbol_size = \'0.31em\';
  • -
- - -

Notes on Lists

-

The attribute type="" is case sensitive (whereas it is case insensitive in CSS). This allows the use of shorthand versions e.g. type="A" for uppercase alpha-numeric.

-

"list-style-type" is only inherited to child LI (not to child UL/OL); list-style-image and -position are fully inherited.

-

Lists in tables remain basic, as block-level elements are not supported inside tables.

-

Properties like text-align:justify will now be inherited from surrounding elements, which will change the appearance of lists designed with earlier versions of mPDF.

-

The attribute start="3" (integer) works for "OL"; it is an official (though depracated) HTML attribute.

-

List bullets (type = disc, circle or square) are now drawn rather than using font glyphs, for better consistency.

- - - -

List examples

- -
This demonstrates the appearance when list_auto_mode is set to \'mpdf\', compatible with previous mPDF versions. Indentation is set to zero (list_indent_default_mpdf). Note the top and bottom margin on the first list level only. -
    -
  1. First item
  2. -
  3. Second item -
      -
    1. Next list level
    2. -
    3. Second item
    4. -
    -
  4. -
-
- -
This demonstrates the same default settings, but list numbering is set to start at 32. Note how the indentation is adjusted to fit the maximum width of the numbering. -
    -
  1. First item
  2. -
  3. Second item -
      -
    1. Next list level
    2. -
    3. Second item
    4. -
    -
  4. -
-
- -
This demonstrates the appearance when list_auto_mode is set to \'browser\', compatible with browsers. Indentation is set to 40px (list_indent_default) -
    -
  1. First item
  2. -
  3. Second item -
      -
    1. Next list level
    2. -
    3. Second item
    4. -
    -
  4. -
-
- -
This demonstrates the same as the previous example, but list numbering is set to start at 32. Note that the default indentation remains fixed at 40px (list_indent_default) -
    -
  1. First item
  2. -
  3. Second item -
      -
    1. Next list level
    2. -
    3. Second item
    4. -
    -
  4. -
-
- -
This demonstrates control of the list-style-type, list-style-position and list-style-image. -
    -
  1. First item in list
  2. -
  3. Second item
  4. -
  5. List style set as \'disc\'
  6. -
  7. List style set as \'none\'
  8. -
  9. Using an image.
  10. -
  11. List-style-position: inside.
  12. -
  13. User defined list bullet
  14. -
-
- - -

Image transform

- -

The CSS property "transform" is supported on images (only). All transform functions are supported except matrix() i.e. translate(), translateX(), translateY(), skew(), skewX(), skewY(), scale(), scaleX(), scaleY(), and rotate()

- -

Transforms cannot be used when using columns or Keep-with-table (use_kwt).

-

The CSS property background-color is now supported on images.

- -

In the following examples, note the difference between transform (which is applied after layout) and image-orientation (which is applied before layout):

-
-Hallo world - -Hallo world -
-
-Hallo world - -Hallo world -
-
-Hallo world - -Hallo world -
-
-Hallo world - -Hallo world (image-orientation) -
- - -

CSS overline

-

The CSS property "text-decoration: overline" is supported. Note that since mPDF 5.7.3 text-decoration use the parent inline block baseline/fontsize/color for child inline elements, and allows nested use of these values and superscript/subscript.

-
1st place - and compare with -1st
- -
He won 1st place
- - - - -

Headers and Footers

-

Headers and Footers are all now written internally as HTMLheaders/footers. The use of non-HTML headers and footers is depracated, but remains supported. Non-HTML headers and footers are converted in mPDF to HTML equivalents.

- -

Layout: This may mean that there will be a change in the resulting PDF. The main change is that an HTML table is created with three cells for left, right and middle; if you had a very long Left header item, it will not overwrite the center item, but it may wrap center onto 2 lines.

- -

Naming: Default non-HTML headers will not clash with HTML headers, but named non-HTML headers WILL clash with (and overwrite) HTML headers of the same (equivalent) name e.g. html_MyFooter == MyFooter (non-HTML).

- -

Aliases: {nb} or {nbpg} now only work in Headers or Footers, and not in the main text. {PAGENO} and {DATE ...} continue to only work in Headers or Footers.

- -

ToC: Can now set the pagenumbering/style/reset/suppress for the ToC separately (see section on ToC).

- -

The following are all depracated (but still supported) in favour of HTMLheader/footers:

-
    -
  • SetHeader()
  • -
  • SetFooter()
  • -
  • <pageheader>
  • -
  • <pagefooter>
  • -
  • DefHeaderByName()
  • -
  • DefFooterByName()
  • -
  • <setpageheader>
  • -
  • <setpagefooter>
  • -
  • SetHeaderByName()
  • -
  • SetFooterByName()
  • -
- -

If document direction is RTL (body dir=rtl, html dir=rtl), then you need to set directionality before setting non-HTML headers e.g.

-

- $mpdf = new mPDF();
- $mpdf->SetDirectionality(\'rtl\'); // i.e. add this in
- $mpdf->SetHeader($h);
- $mpdf->SetFooter($f);
- $mpdf->WriteHTML(\'<body dir="rtl">...\');
-

- - - - -

Table of Contents (ToC)

-

Page numbering can now be applied and controlled for the pages containing a ToC.

- -

There are three new parameters to control pagenumbering in the ToC: toc-resetpagenum, toc-pagenumstyle, and toc-suppress. -These are set as attributes in <tocpagebreak> or as the last 3 parameters in TOCpagebreak(); -they set the pagenumbering and pagenumbering style for the ToC, and whether to suppress pagenumbers in ToC.

- -

The default setting for all is to continue pagenumbering and pagenumstyle (and suppression) from pages preceding the ToC.

- -

Note: Page numbering will always reset following a ToC. By default it will set it to 1, unless a value for resetpagenum is specified in TOCpagebreak or <tocpagebreak>.

- -

Backwards compatibility: page numbers are no longer suppressed by default in ToC.

- -

Although "suppress" and "toc-suppress" are supported, the recommended way to control whether page numbering appears is by using different headers and footers for each section.

- -

Note: If you have 2 ToCs immediately following each other, and wish to use pagenumstyle or suppress to control the following text, then you need to set those values on both of the <tocpagebreak> elements.

- -

The default CSS styles for ToCs and Indexes are now set in mpdf.css (see later).

- -

See notes later on page numbering.

- - - - -

Other changes from mPDF 5

- -

Setting up mPDF 6

-

mPDF 6 has changed significantly from earlier version and it is recommended that a fresh install is used. You may wish to copy your previous config_* files and use them to update the new config files.

- -

config_fonts.php - values of "indic" and "unAglyphs" from previous versions are now redundant.

- -

config_lang2fonts.php - this is similar to the previous config_cp.php file; note however that $unifont (NOT $unifonts) must be only one font (not a comma-separated list as before).

- -

Included fonts - the Indic fonts e.g. ind_bn_001.ttf are no longer required (nor do they work properly with mPDF 6).

- -

useLang - this configurable variable, which used to be true by default, is now redundant. You may need to set: $mpdf->autoLangToFont = true; for the same results.

- -

SetAutoFont() - is now redundant. You may need to set: $mpdf->autoScriptToLang = true; for the same results.

- -

Indexes - have been largely redefined. See the section above.

- -

Lists - have been rewritten. See the section above.

- -

Headers and Footers - have been rewritten. See the section above.

- - -
A number of old depracated aliases will no longer be supported. Warning errors have been added to prompt you to change to the updated form:
-
    -
  • $mpdf->useOddEven - should now use - $mpdf->mirrorMargins
  • -
  • $mpdf->useSubstitutionsMB - should now use - $mpdf->useSubstitutions
  • -
  • $mpdf->AliasNbPg - should now use - $mpdf->aliasNbPg
  • -
  • $mpdf->AliasNbPgGp - should now use - $mpdf->aliasNbPgGp
  • -
  • $mpdf->BiDirectional - should now use - $mpdf->biDirectional
  • -
  • $mpdf->Anchor2Bookmark - should now use - $mpdf->anchor2Bookmark
  • -
  • $mpdf->KeepColumns - should now use - $mpdf->keepColumns
  • -
  • $mpdf->UnvalidatedText - should now use - $mpdf->watermarkText
  • -
  • $mpdf->TopicIsUnvalidated - should now use - $mpdf->showWatermarkText
  • -
  • $mpdf->Reference - should now use - $mpdf->IndexEntry
  • -
- -
The following functions have been removed:
-
    -
  • setUnvalidatedText - should now use - SetWatermarkText()
  • -
  • AddPages - should now use - AddPage() or HTML code methods
  • -
  • startPageNums
  • -
  • CreateReference and CreateIndex - cf. Index section above
  • -
- -

Default style sheet

-

A new mpdf.css file includes defaults for LISTS top/bottom margins, and also examples for Indexes and ToCs. This now acts like a normal CSS file, including cascading selectors i.e. not just main tags. This is always read (if present), so acts as a secondary default CSS, but one which allows selectors. Styles added to this act like a user stylesheet when considering precedence e.g. cellSpacing and border-spacing.

- - -

Direct writing methods and OTL

-

WriteText() WriteCell() Watermark() AutoSizeText() and ShadedBox() DO support complex scripts and right-to-left text (RTL).

-

Write() does NOT support complex scripts or RTL (NB this is a change - Write() used to support RTL).

-

CircularText() does NOT support complex scripts or RTL.

-

MultiCell() DOES support complex scripts and RTL, but complex-script line-breaking MAY NOT be accurate.

-MultiCell() does not support kerning and justification. NB This includes <textarea> in forms which uses MultiCell() internally.

-

<select> form objects also do NOT support kerning.

- - -

Page numbering

-

Page numbering i.e. by including {PAGENO} or {‌nbpg} in a header/footer, can use any of the number types as used for list-style e.g.

- -

<pagebreak pagenumstyle="arabic-indic">

-

Short codes are recognised for the 5 most common:

-
    -
  • "1" - decimal
  • -
  • "A" = upper-latin or upper-alpha
  • -
  • "a" = lower-latin or lower-alpha
  • -
  • "I" = upper-roman
  • -
  • "i" = lower-roman
  • -
-

or any of the following: -arabic-indic, hebrew, bengali, devanagari, gujarati, gurmukhi, kannada, malayalam, oriya, persian, tamil, telugu, thai, urdu, cambodian, khmer, lao, cjk-decimal -

- -

Note: A suitable font must be used in the header/footer in order to display the numbers in the selected script.

- -

You can now set the pagenumberstyle from the beginning of the document by changing the configurable variable:

-

-$this->defaultPageNumStyle = "arabic-indic"; // in config.php
-$mpdf->defaultPageNumStyle = "arabic-indic"; // at runtime
-

- -

Other Minor changes in mPDF 6

-

\'hebrew\', \'khmer\', \'cambodian\', \'lao\', and \'cjk-decimal\' are recognised as values for "list-style-type" in numbered lists.

- -

CSS "text-outline" is now supported on TD/TH tags

- -

Text wrapping in tables has been improved when using CJK scripts (chinese-japanese-korean).

- -

Text underline and strikethrough can be used together: Hallo world. Either <u><s>...</s></u> or <span style="text-decoration:underline line-through;">...</span> can be used

- -

Added support for style="opacity:0.6;" in SVG - equivalent to: style="fill-opacity:0.6; stroke-opacity: 0.6;"

-Added support for opacity="0.6" (as attribute) in SVG - previously only supported fill-opacity="0.6" stroke-opacity="0.6" - -

CSS position:absolute or fixed - rotate extended now to include rotate: 180; (previously just 90 or -90)

- -

The default value of $this->keep_table_proportions = true; in config.php has been changed (see effect on Example 6 - nested table in top right cell).

- -

Limited support has been added for SVG fonts embedded in SVG images (but not using @font-face rules) - see the separate Images demo file.

- -

When using columns, the top margin is now collapsed at top of every column (not just first column of page).

- -

The way mPDF handles optional end tags has been updated to be consistent with the HTML5 specification - previously not well defined for HTML4.

- -

Changes to the way lists are handled means that text-align:justify may be inherited by lists from surrounding block elements (which did not happen previously). See LISTS above for more information.

- - - -

Backwards Compatibility

-

For maximum backwards comaptibility with older versions of mPDF, change the following configurable variables in the config.php file:

- - - - - - - - - - - - - - - - - - - - -

mPDF 6.0 Default (Browser compatible)
Backwards Compatible
Normal Line-height -

$this->useFixedNormalLineHeight = false;
$this->useFixedTextBaseline = false;
$this->adjustFontDescLineheight = 1.14;

-
$this->useFixedNormalLineHeight = true;
$this->useFixedTextBaseline = true;
$this->normalLineheight = 1.33;
Lists -

$this->list_auto_mode = \'browser\';

-$this->list_marker_offset = \'5.5pt\';
$this->list_symbol_size = \'3.6pt\';
-

$this->list_auto_mode = \'mpdf\';

-

$this->list_marker_offset = \'0.45em\';
$this->list_symbol_size = \'0.31em\';

-
- - - -

More Information

-

For more information, see:

- - - - -

Font Information

- -

The following fonts are included with mPDF 6:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Font(s)Download URLCopyright / License
Coverage
-

DejaVuSans

-

DejaVuSansCondensed

-

DejaVuSerif

-

DejaVuSerifCondensed

-

DejaVuSansMono

-
http://dejavu-fonts.org -

© Bitstream

-

http://dejavu-fonts.org/wiki/License

-
[Numerous]
-

FreeSans

-

FreeSerif

-

FreeMono

-
http://www.gnu.org/software/freefont/ -

GNU GPL v3

-
-

[Numerous incl. Indic]

-
Quivirahttp://www.quivira-font.com/ -

free for any use

-
-

Coptic

-

Buhid

-

Tagalog

-

Tagbanwa

-

Lisu

-
Abyssinica SILhttp://www.sil.org/resources/software_fonts/abyssinica-silSIL Open Font LicenseEthiopic
XBRiyaz -

http://www.redlers.com/downloadfont.html

-

(XW Zar fonts)

-

http://wiki.irmug.org/index.php/XWZar

-
SIL Open Font LicenseArabic
Taamey David CLM
http://opensiddur.org/tools/fonts/GNU GPL 2
Hebrew
-

Estrangelo Edessa

-
-

http://www.bethmardutho.org/index.php/resources/fonts.html

-

(SyrCOMEdessa.otf)

-
Adapted licence (free to use/share)
Syriac
Aegeanhttp://users.teilar.gr/~g1951d/free for any use -

Carian

-

Lycian

-

Lydian

-

Phoenecian

-

Ugaritic

-

Linear B

-

Old Italic

-
Jomolharihttps://sites.google.com/site/chrisfynn2/home/fonts/jomolhariSIL Open Font LicenseTibetan
Lohitkannadahttps://fedorahosted.org/lohit/
SIL Open Font License
Kannada
Kaputaunicode -

http://www.kaputa.com/slword/kaputaunicode.htm

-

http://www.locallanguages.lk/sinhala_unicode_converters

-
-

Free

-

Sri Lanka Web Community Center

-
Sinhala
Pothana2000https://fedoraproject.org/wiki/Pothana2000_fontsGNU GPL v2+Telugu
Lateefhttp://www.sil.org/resources/software_fonts/lateefSIL Open Font LicenseSindhi
Khmeros -

http://www.khmeros.info/en/fonts

-

(http://www.cambodia.org/fonts/)

-
LGPL Licence
Khmer
Dhyana -

Google Fonts

-

http://www.google.com/fonts/earlyaccess

-
SIL Open Font License
Lao
Tharlon -

Google Fonts

-http://code.google.com/p/tharlon-font/
SIL Open Font License -

Myanmar

-

Tai Le

-
Padauk Book
http://www.sil.org/resources/software_fonts/padaukSIL Open Font License -

Myanmar

-
Ayar fontshttp://eng.ayarunicodegroup.org/SIL Open Font License
Myanmar
ZawgyiOnehttp://code.google.com/p/zawgyi/wiki/MyanmarFontDownload -

Freely available.

-

No licence information available

-
-

Myanmar

-
-

Garuda

-
http://www.hawaii.edu/thai/thaifonts/ -

Freely available.

-No licence information available
Thai
Sundanese Unicodehttp://sabilulungan.org/aksara/GNU GPL
Sundanese
Tai Heritage Prohttp://www.sil.org/resources/software_fonts/tai-heritage-proSIL Open Font LicenseTai Viet
-

Sun-ExtA

-

Sun-ExtB

-
http://www.alanwood.net/downloads/index.htmlFreeware
(Beijing ZhongYi Electronics Co)
-

Chinese

-

Japanese

-

Runic

-
Unbatanghttp://kldp.net/projects/unfonts/downloadGNU GPL
Korean
-

Aboriginal Sans

-
http://www.languagegeek.com/font/fontdownload.html
-

GNU GPL 3

-

 

-
-

Cree

-

Canadian Aboriginal

-

Inuktuit

-
MPH 2B Damasehttp://www.alanwood.net/downloads/index.html(Public domain)
-

Glagolitic

-

Shavian

-

Osmanya

-

Kharoshthi

-

Deseret

-
Aegyptushttp://users.teilar.gr/~g1951d/free for any useEgyptian Hieroglyphs
Akkadianhttp://users.teilar.gr/~g1951d/free for any useCuneiforn
Eeyek Unicodehttp://tabish.freeshell.org/eeyek/download.htmlFreewareMeetei Mayek
Lannaalifhttp://www.geocities.jp/simsheart_alif/taithamunicode.html(Unclear)Tai Tham
Daibanna SIL Bookhttp://www.sil.org/resources/software_fonts/dai-banna-silSIL Open Font LicenseNew Tai Lue
KFGQPC Uthman Taha Naskh
http://fonts.qurancomplex.gov.sa/?page_id=42https://www.ohloh.net/licenses/KFGQPC -

Arabic

-

(Koran/Quran)

-
- -'; -//============================================================== -$mpdf->h2bookmarks = array('H3'=>0, 'H4'=>1); -$mpdf->defaultPageNumStyle = 'arabic-indic'; - -$mpdf->autoLangToFont = true; -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - - - -?> \ No newline at end of file diff --git a/mpdf/examples/example62_new_mPDF_v6-0_features Multilingual.php b/mpdf/examples/example62_new_mPDF_v6-0_features Multilingual.php deleted file mode 100644 index 40d2bd2..0000000 --- a/mpdf/examples/example62_new_mPDF_v6-0_features Multilingual.php +++ /dev/null @@ -1,156 +0,0 @@ - - - -
    -
  • Assamese: -ভালে আছো ধন্যবাদ৷ আৰু আপুনি? - -
  • Bangla / Bengali: -আমি কাঁচ খেতে পারি, তাতে আমার কোনো ক্ষতি হয় না। - -
  • Gujarati: -આ ભાઈ તેના રૂપિયા આપી દેશે - -
  • Kannada: -ನನಗೆ ಹಾನಿ ಆಗದೆ, ನಾನು ಗಜನ್ನು ತಿನಬಹುದು - -
  • Hindi: मैं काँच खा सकता हूँ और मुझे उससे कोई चोट नहीं पहुंचती. - -
  • Malayalam: -എന്‍റെ പറക്കും-പേടകം നിറയെ വ്ളാങ്കുകളാണ് - -
  • Marathi: मी काच खाऊ शकतो, मला ते दुखत नाही. - -
  • Nepali: म काँच खान सक्छू र मलाई केहि नी हुन्‍न् । - -
  • Oriya: -ଆପଣ ଇଂରାଜୀ କୁହନ୍ତି କି? - -
  • Punjabi: -ਮੇਰਾ ਹਵਰਕ੍ਰਾਫ਼ਤ ਨਾਂਗਾਂ ਨਾਲ਼ ਭਰਿਆ ਪਿਆ। - -
  • Sanskrit: काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम् ॥ - -
  • Sinhalese: මට වීදුරු කෑමට හැකියි. එයින් මට කිසි හානියක් සිදු නොවේ. - -
  • Tamil: நான் கண்ணாடி சாப்பிடுவேன், அதனால் எனக்கு ஒரு கேடும் வராது. - -
  • Telugu: నేను గాజు తినగలను మరియు అలా చేసినా నాకు ఏమి ఇబ్బంది లేదు - -
- -
    -
  • Arabic: أنا قادر على أكل الزجاج و هذا لا يؤلمني. - -
  • Farsi / Persian: من می توانم بدونِ احساس درد شيشه بخورم. - -
  • Urdu: -میں کانچ کھا سکتا ہوں اور مجھے تکلیف نہیں ہوتی ۔ - -
  • Pashto: زه شيشه خوړلې شم، هغه ما نه خوږوي - -
  • Turkish (Ottoman): جام ييه بلورم بڭا ضررى طوقونمز - -
  • Sindhi (Arabic script): -سنڌي ٻولي انڊو يورپي خاندان سان تعلق رکندڙ آريائي ٻولي آھي، جنھن تي ڪجھه دراوڙي اھڃاڻ پڻ موجود ‏آهن - -
  • Sindhi (Devanagari): -सिन्धी ॿोली इण्डो यूरपी ख़ान्दान सां ताल्लुक़ु रखन्दड़ आर्याई ॿोली आहे - -
  • Hausa (Ajami): -إِنا إِىَ تَونَر غِلَاشِ كُمَ إِن غَمَا لَافِىَا - -
  • Hebrew: אני יכול לאכול זכוכית וזה לא מזיק לי. - -
  • Yiddish: איך קען עסן גלאָז און עס טוט מיר נישט װײ. - -
- -
    - -
  • Vietnamese (quốc ngữ): Tôi có thể ăn thủy tinh mà không hại gì. - -
  • Thai: ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ - -
  • Khmer: -ខ្ញុំអាចញុំកញ្ចក់បាន -ដោយគ្មានបញ្ហារ - -
  • Lao: -ຂອ້ຍກິນແກ້ວໄດ້ໂດຍທີ່ມັນບໍ່ໄດ້ເຮັດໃຫ້ຂອ້ຍເຈັບ. - -
  • Burmese: -မီးမြေခွေးအား ဗမာ ဘာသာသို့ ပြန်ဆိုနေသည်မှာ နှစ်နှစ်ကျော်ကြာပြီ ဖြစ်ပါတယ - -
  • Tibetan: ཤེལ་སྒོ་ཟ་ནས་ང་ན་གི་མ་རེད། -
- - - -
    -
  • Anglo-Saxon (Runes): -ᛁᚳ᛫ᛗᚨᚷ᛫ᚷᛚᚨᛋ᛫ᛖᚩᛏᚪᚾ᛫ᚩᚾᛞ᛫ᚻᛁᛏ᛫ᚾᛖ᛫ᚻᛖᚪᚱᛗᛁᚪᚧ᛫ᛗᛖ᛬ -
  • Old Norse (Runes): -ᛖᚴ ᚷᛖᛏ -ᚷᛖᛏ ᛖᛏᛁ -ᚧ ᚷᛚᛖᚱ ᛘᚾ -ᚦᛖᛋᛋ ᚨᚧ ᚡᛖ -ᚱᚧᚨ ᛋᚨᚱ - -
  • Old Irish (Ogham): ᚛᚛ᚉᚑᚅᚔᚉᚉᚔᚋ ᚔᚈᚔ ᚍᚂᚐᚅᚑ ᚅᚔᚋᚌᚓᚅᚐ᚜ - -
  • English (Braille): ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑ -
  • Gothic: 𐌼𐌰𐌲 𐌲𐌰𐌴𐍃 𐌹̈𐍄𐌰𐌽, 𐌽𐌹 𐌼𐌹𐍃 𐍅𐌿 𐌽𐌳𐌰𐌽 𐌱𐍂𐌹𐌲𐌲𐌹𐌸 -
  • Georgian: მინას ვჭამ და არა მტკივა. -
  • Armenian: Կրնամ ապակի ուտել և ինծի անհանգիստ չըներ։ -
  • Inuktitut: ᐊᓕᒍᖅ ᓂᕆᔭᕌᖓᒃᑯ ᓱᕋᙱᑦᑐᓐᓇᖅᑐᖓ - - - -
  • Amharic: የሰው ፡ ልጅ ፡ ሁሉ ፡ ሲወለድ ፡ ነጻና ፡ በክብርና ፡ በመብትም ፡ እኩልነት ፡ ያለው ፡ ነው ... - -
  • Somali (Osmanya alphabet): 𐒛𐒆𐒖𐒒𐒖𐒔𐒖 𐒊𐒖𐒑𐒑𐒛𐒒𐒂𐒕𐒈 𐒓𐒚𐒄𐒓 𐒊𐒖𐒉𐒛 𐒘𐒈𐒖𐒌𐒝 𐒄𐒙𐒇 𐒖𐒔 𐒏𐒖𐒒𐒖 𐒈𐒘𐒑𐒖𐒒 𐒄𐒖𐒌𐒌𐒖 𐒉𐒖𐒇𐒖𐒍𐒂𐒖 ... - -
  • Tamazight (Neo-Tifinagh alphabet): ⵉⵎⴷⴰⵏⴻⵏ, ⴰⴽⴽⴻⵏ ⵎⴰ ⵍⵍⴰⵏ ⵜⵜⵍⴰⵍⴻⵏ ⴷ ⵉⵍⴻⵍⵍⵉⵢⴻⵏ ... - -
  • Tigrinya: ብመንፅር ክብርን መሰልን ኩሎም ሰባት እንትውለጹ ነፃን ማዕረን እዮም። ምስትውዓልን ... - - -
  • Vai: ꕉꕜꕮ ꔔꘋ ꖸ ꔰ ꗋꘋ ꕮꕨ ꔔꘋ ꖸ ꕎ ꕉꖸꕊ ꕴꖃ ꕃꔤꘂ ꗱ, ꕉꖷ ꗪꗡ ꔻꔤ ꗏꗒꗡ ꕎ ꗪ ꕉꖸꕊ ꖏꕎ. ꕉꕡ ꖏ ꗳꕮꕊ ꗏ ꕪ ... - -
-'; - - - -//============================================================== -$mpdf->autoScriptToLang = true; -$mpdf->baseScript = 1; // Use values in classes/ucdn.php 1 = LATIN -$mpdf->autoVietnamese = true; -$mpdf->autoArabic = true; - -$mpdf->autoLangToFont = true; - -/* This works almost exactly the same as using autoLangToFont: - $stylesheet = file_get_contents('../lang2fonts.css'); - $mpdf->WriteHTML($stylesheet,1); -*/ - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - - -?> \ No newline at end of file diff --git a/mpdf/examples/example63_new_mPDF_v6-0_features Images.php b/mpdf/examples/example63_new_mPDF_v6-0_features Images.php deleted file mode 100644 index a3bcde0..0000000 --- a/mpdf/examples/example63_new_mPDF_v6-0_features Images.php +++ /dev/null @@ -1,255 +0,0 @@ - -body, div, p { - font-family: \'DejaVu Sans Condensed\'; - font-size: 11pt; -} -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - box-shadow: 0.3em 0.3em #888888; -} -h4 { - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; - margin-top: 0; -} -div.text { - padding:0.8em; - margin-bottom: 0.7em; -} -p { margin: 0.25em 0; } -p.code { - background-color: #e5e5e5; - margin: 1em 1cm; - padding: 0 0.3cm; - border:0.2mm solid #000088; - box-shadow: 0.3em 0.3em #888888; -} -p.example, div.example { - background-color: #eeeeee; - margin: 0.3em 1em 1em 1em; - padding: 0 0.3cm; - border:0.2mm solid #444444; -} -.code { - font-family: monospace; - font-size: 9pt; -} -.shadowtitle { - height: 8mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.8em; - padding-left: 3em; - font-family:sans; - font-size: 26pt; - font-weight: bold; - border: 0.2mm solid white; - border-radius: 0.2em; - box-shadow: 0 0 1em 0.5em rgba(0,0,255,0.5); - color: #AAAACC; - text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; -} -h3 { - margin: 3em 0 2em -15mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - padding-left: 3em; - width: 50%; - font-family:sans; - font-size: 16pt; - font-weight: bold; - border-left: none; - border-radius: 0 2em 2em 0; - box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); - text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); -} -.css { - font-family: arial; - font-style: italic; - color: #000088; -} -img.smooth { - image-rendering:auto; - image-rendering:optimizeQuality; - -ms-interpolation-mode:bicubic; -} -img.crisp { - image-rendering: -moz-crisp-edges; /* Firefox */ - image-rendering: -o-crisp-edges; /* Opera */ - image-rendering: -webkit-optimize-contrast;/* Webkit (non-standard naming) */ - image-rendering: crisp-edges; - -ms-interpolation-mode: nearest-neighbor; /* IE (non-standard property) */ -} - - - - -
New Features in mPDF v6.0
- -

Images

- -

Gamma correction in PNG images

-

Some PNG images contain a source Gamma correction value to maintain consistent colour display between devices.

-

mPDF will adjust for gamma correction if a PNG image has a source gAMA entry <> 2.2

-

Gamma correction is not supported in GIF files.

- -

For more information, and sample image files see http://www.libpng.org/pub/png/colorcube/gamma-consistency-test.html

- -

Below are some of the example images, displayed on a background of HTML colour, such that when displayed correctly they should appear as one solid block of the same colour:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     
Unlabelled GIF image
(the usual kind)
 Unlabelled PNG image
(no gamma info)
 PNG image with gamma 1/1.6
(i.e. 0.625)
 PNG image with gamma 1/2.2
(i.e. 0.4545)
 sRGB PNG image
("absolute colorimetric" rendering intent "sRGB")
 iCCP PNG images
("gamma 1.0" pixel data, linear ICC profiles: "iCCPGamma 1.0 profile")
- -
NB View this page as HTML in your browser and see the difference between browsers!
- - -

Note that there are inconsistencies between browsers, so the image display varies considerably on the system you are using. There are also image errors which are not always apparent.

- - -

The image below is taken from http://www.w3.org/TR/CSS21/intro.html and has the gAMA value set to 1.45454 This is probably unintentional and should be 0.45454 which is 1 / 2.2

-

The image appears differently on IE9/Safari versus Firefox/Opera. To quote from http://www.libpng.org/pub/png/spec/1.2/PNG-Encoders.html "If the source file\'s gamma value is greater than 1.0, it is probably a display system exponent,....and you should use its reciprocal for the PNG gamma." -Some applications seem to ignore this, displaying the image how it was probably intended.

- - - - - -

The two images below should be displayed with similar colour intensity. The one on the left is a 16-bit gamma-corrected PNG file; on the right is an unlabelled GIF file. Note that in Firefox (31.0) the image on the left looks duller because it has not been gamma-corrected for the display, whilst in IE (9)/Safari/Opera the images looks identical (correct).

-

- -
- -

ICC color profiles

-

Some PNG and JPEG image files contain an ICC color profile to alter colour display. These are supported in mPDF in PNG and JPG files, except PNG images which require converting via gd_image e.g. Alpha transparency, interlaced etc.

- -

Below is a PNG image which contains an ICC Profile which deliberately changes colours. When correctly displayed (applying the colour profile) ths colours should match the colour names. (In Firefox red appears as green, blue as red etc.)

- -
- - - -

Wider support for PNG Images

-

mPDF will now display almost every type of PNG image, including: paletted (Indexed) images with Alpha channel (full transparency), and grayscale or RGB truecolor images with single-colour transparency. One PNG type which cannot be handled by mPDF is a 16-bit image with binary (single-color) transparency. (This is because all images need to be converted to 8-bit for inclusion in PDF, and so for example if colour 0x4F27 is set as a transparency, it will treat all 0x4F.. pixels as transparent.)

- - - -

Alpha transparency (PNG images)

-Alpha transparency in PNG images has been fixed to work correctly against colour backgrounds e.g.: - - - - - -
- - - - - -
- - - - -

Interpolation

-

PDF allows you to set image interpolation for an image - the result of this is variable and is dependent on the PDF viewer. -mPDF allows you to specify whether interpolation is enabled, using CSS for each image, but: 1) it will not cascade i.e. the CSS property must be set directly on the img object or as class e.g. using <img class="smooth" style="image-rendering:auto"> 2) if an image appears more than once in the document, the interpolation setting will be that of the first appearance.

- -

A configurable variable in config.php determines the default value for the whole document: $this->interpolateImages = false;

- -

The draft CSS3 property "image-rendering" with the following values will be recognised by mPDF:

-
    -
  • auto (default) - uses the value set by $this->interpolateImages
  • -
  • crisp-edges - interpolation disabled
  • -
  • optimizequality - interpolation enabled
  • -
  • smooth - interpolation enabled
  • -
- -

The image below on the left has interpolation enabled:

- -
- - -
- -

NB Interpolation cannot be enabled on background images, SVG or WMF images.

- - - - -

SVG Fonts

-

mPDF 6 introduces (limited) support for SVG fonts, recognising the following elements and attributes:

-

-<defs>
-<font horiz-adv-x>
-<font-face font-family units-per-em ascent descent />
-<missing-glyph horiz-adv-x d />
-<glyph unicode horiz-adv-x d /> -

- -

In the example SVG below, the upper row of characters are drawn using paths and lines; in the lower row, they are written as text using glyphs defined as an SVG font.

- - -

See the fonts-elem-01-t.svg file in the examples folder for more details.

-

NB: @font-face is not supported.

- - - -'; -//============================================================== -if (isset($_REQUEST['html']) && $_REQUEST['html']) { echo $html; exit; } -//============================================================== - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - - - -?> \ No newline at end of file diff --git a/mpdf/examples/example_test.php b/mpdf/examples/example_test.php deleted file mode 100644 index c0de2a1..0000000 --- a/mpdf/examples/example_test.php +++ /dev/null @@ -1,1962 +0,0 @@ -fonttrans = array_merge($mpdf->fonttrans, array( - 'arial' => 'chelvetica', - 'helvetica' => 'chelvetica', - 'timesnewroman' => 'ctimes', - 'times' => 'ctimes', - 'couriernew' => 'ccourier', - 'courier' => 'ccourier', - 'sans' => 'chelvetica', - 'sans-serif' => 'chelvetica', - 'serif' => 'ctimes', - 'mono' => 'ccourier', -)); -*/ -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -//============================================================== -//============================================================== -$header = array( - 'L' => array( - ), - 'C' => array( - ), - 'R' => array( - 'content' => '{PAGENO}{nbpg}', - 'font-family' => 'sans', - 'font-style' => '', - 'font-size' => '9', /* gives default */ - ), - 'line' => 1, /* 1 or 0 to include line above/below header/footer */ -); - -//$mpdf->SetHeader($header,'O'); -//$mpdf->SetHTMLFooter($footer); - -//============================================================== - -//$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins (1 or 0) - -//$mpdf->showImageErrors = true; - -//$mpdf->SetDisplayMode('fullpage'); - -//$mpdf->useLang = false; - -//$mpdf->useAutoFont = true; - -//$mpdf->ignore_invalid_utf8 = true; - -//$mpdf->keepColumns = true; - -//$mpdf->use_kwt = true; - -//$mpdf->hyphenate = true; - -//$mpdf->SetProtection(array('copy','print','modify','annot-forms')); -//$mpdf->SetProtection(array('copy','print','modify','annot-forms'),'',null,128); -//$mpdf->SetProtection(array('copy','print','modify','annot-forms','fill-forms','extract','assemble','print-highres'),'',null); - -//$mpdf->SetTitle("\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3"); -//$mpdf->SetAuthor("\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3"); - -//$mpdf->SetWatermarkText("\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3"); -//$mpdf->showWatermarkText = true; -//$mpdf->watermark_font = 'DejaVuSansCondensed'; - -//$mpdf->SetCompression(false); - -//$mpdf->text_input_as_HTML = true; - -//$mpdf->annotMargin = -8; - -//$mpdf->title2annots = true; -//$mpdf->Annotation('An annotation', 145, 24, 'Comment', "Ian Back", "My Subject", 0.7, array(127, 127, 255)); - -//$mpdf->collapseBlockMargins = false; // mPDF 4.2 Allows top and bottom margins to collapse between block elements - - -//$mpdf->allow_charset_conversion = true; -//$mpdf->charset_in = 'win-1251'; - -//$mpdf->useSubstitutions = true; -//$mpdf->useActiveForms = true; - -//$mpdf->simpleTables = true; // Forces all cells to have same border, background etc. Improves performance -//$mpdf->packTableData = true; // Reduce memory usage processing tables (but with increased processing time) - -// Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased -// executon time and disk access (read and write) -//$mpdf->cacheTables = true; - - - -//============================================================== -//$mpdf->SetImportUse(); -//$mpdf->SetSourceFile('example_all.pdf'); -//$tplIdx = $mpdf->ImportPage(9); -//$mpdf->UseTemplate($tplIdx); -//============================================================== -//============================================================== -//$mpdf->debug = true; -//$mpdf->showStats = true; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -/* -// 4.3.003 TEST -$html = '
Browser doesn\'t justify text before a BR
Browser does justify text before an IMG
-
Browser doesn\'t justify text before a HR
Browser does justify text before an IMG
-
Browser does justify text before a TEXTAREA -
-
Browser does justify text before a SELECT
'; - -//$html = '
If you want a single line of text to justify you need to do this
'; -//$mpdf->justifyB4br = true; -//$mpdf->jSWord = 0.4; // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character -//$mpdf->jSmaxChar = 0.25; // Maximum spacing to allocate to character spacing. (0 = no maximum) -*/ -//============================================================== -//============================================================== -//============================================================== -//============================================================== -/* -// CJK Fonts -$fonts = array( -array('gb', 'GB (Chinese Simpl. Adobe)'), -array('big5', 'BIG-5 (Chinese Trad. Adobe)'), -array('sjis', 'SJIS (Japanese Adobe)'), -array('arialunicodems', 'Arial Unicode MS'), -array('cyberbit', 'CyberBit'), -array('sun-exta', 'Sun-ExtA'), -array('hannoma', 'Han Nom A'), -array('mingliu', 'MingLiU'), -array('mingliu_hkscs', 'MingLiU_HKSCS'), -array('arplumingcn', 'AR PL Uming CN'), -array('arpluminghk', 'AR PL Uming HK'), -array('arplumingtw', 'AR PL Uming TW'), -); -$chars = array('34c7','4eca','4ede','4f3b','4fae','508e','50a6','50c7','517e','518f','51b2','5203','520f','5222','55c2','57d2','6b21','87a0','8880','8a03', -'4EE4', -'76F4', -'9AA8', -'9F31', -'2493F', -); - -$html .= " -
- - - - -"; -foreach($fonts AS $f) { - $html .= ""; -} -$html .= " - - -"; -foreach($chars AS $char) { - $html .= ""; - foreach($fonts AS $f) { - $html .= ""; - } - $html .= " -"; -} -$html .= "
".$f[1]."
U+".strtoupper($char)."&#x".$char.";
-
-"; -*/ -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -/* - -$html = ' - -mPDF 5.6.40 -Bug fix -'; -$mpdf->WriteHTML($html); - - - - - -$mpdf->allowCJKorphans = false; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true] - - -$html = ' -
部部部部部部部部部部
- -CJKleading Leading characters - Not allowed at end of line 々
-
部部部部部部部部部々部
- -CJKfollowing Following characters - Not allowed at start ォ
-
部部部部部部部部部部ォ
- -'; -$mpdf->WriteHTML($html); - -//============================================================== -$mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true] - - -$html = ' -CJKfollowing Following characters - Not allowed at start ォ
-
部部部部部部部部部部ォ
-
- -'; -$mpdf->WriteHTML($html); - -//============================================================== -// CJK Line-breaking -$align = 'left'; -$mpdf->allowCJKorphans = false; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true] -$mpdf->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false] -$html = ' -CJKoverflow Characters which are allowed to overflow the right margin ,
-text-align: '.$align.'; -$mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.'; -$mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.'; -
部部部部部部部部部部,
- -'; -$mpdf->WriteHTML($html); -//============================================================== -// CJK Line-breaking -$align = 'justify'; -$mpdf->allowCJKorphans = false; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true] -$mpdf->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false] -$html = ' -text-align: '.$align.'; -$mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.'; -$mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.'; -
部部部部部部部部部部,
- -'; -$mpdf->WriteHTML($html); -//============================================================== -// CJK Line-breaking -$align = 'left'; -$mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true] -$mpdf->allowCJKoverflow = true; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false] -$html = ' -text-align: '.$align.'; -$mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.'; -$mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.'; -
部部部部部部部部部部,
-'; -$mpdf->WriteHTML($html); -//============================================================== -// CJK Line-breaking -$align = 'left'; -$mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true] -$mpdf->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false] -$html = ' -text-align: '.$align.'; -$mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.'; -$mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.'; -
部部部部部部部部部部,
-'; -$mpdf->WriteHTML($html); -//============================================================== -// CJK Line-breaking -$align = 'justify'; -$mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true] -$mpdf->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false] -$html = ' -text-align: '.$align.'; -$mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.'; -$mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.'; -
部部部部部部部部部部,
-'; -$mpdf->WriteHTML($html); -//============================================================== -// CJK Line-breaking -$align = 'justify'; -$mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true] -$mpdf->allowCJKoverflow = true; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false] -$html = ' -text-align: '.$align.'; -$mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.'; -$mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.'; -
部部部部部部部部部部,
-'; -$mpdf->WriteHTML($html); -//============================================================== -// CJK Line-breaking -$align = 'justify'; -$mpdf->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow [default true] -$mpdf->allowCJKoverflow = true; // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables) [default false] -$mpdf->CJKforceend = true; -$html = ' -text-align: '.$align.'; -$mpdf->allowCJKorphans = '.$mpdf->allowCJKorphans.'; -$mpdf->allowCJKoverflow = '.$mpdf->allowCJKoverflow.'; -$mpdf->CJKforceend = '.$mpdf->CJKforceend .'; -
部部部部部部部部部部,
-'; -$mpdf->WriteHTML($html); -//============================================================== -*/ -//============================================================== -//============================================================== -//============================================================== -// Tai Tham (Lanna script) -$htmlx = ' -
-

ᨢ᩶ᩣᨧᩮᩢ᩶ᩣᨸᩮᩢ᩠ᨶᩈᩣ᩠ᩅᨩ᩠ᨿᨦᩉ᩠ᨾᩲ᩵ ᩉ᩠ᨾᩯᨷᩴ᩵ᩬᨴᩮᩢ᩵ᩣᨯᩲᨠᩴ᩶ᩬᨧᩡᨸᩮᩢ᩠ᨶᩈᩣ᩠ᩅᩃᩯ᩠᩶ᩅ ᨲᩧ᩠ᨦᩅᩢ᩠ᨶᨾᩦᨷ᩵ᩤ᩠ᩅᨾᩣᩋᩯ᩠᩵ᩅ ᨾᩣᩋᩪ᩶ᨾᩣᨪᩯ᩠ᩅ ᨸᩮᩢ᩠ᨶᨤᩫ᩠ᨶᩃᨻᩪᩁ

- -

ᨢ᩶ᩣᨧᩮᩢ᩶ᩣᨧᩡᩮᩃᩥᩬᨠᩋᩮᩢᩣᨹᩱ ᩋ᩶ᩣ᩠ᨿᨷ᩵ᩤ᩠ᩅᨩ᩠ᨿᨦᩁᩣ᩠ᨿᨩᩨ᩵ᨠᩯ᩠᩶ᩅᨾᩣᩃᩪᩁ ᩋ᩶ᩣ᩠ᨿᨠᩬᨦᨤᩫ᩠ᨶᨻᩯ᩵ᨢ᩠ᨿᩅᨨᩩᨶ ᩋ᩶ᩣ᩠ᨿᨤᩴᩣᩋ᩶ᩣ᩠ᨿᨾᩪᩁ ᩋ᩶ᩣ᩠ᨿᩈᩫ᩠ᨾᩋ᩶ᩣ᩠ᨿᨾᩦ

- -

ᨻᩮᩥ᩠᩵ᨶᨷᩬᨠᩅ᩵ᩤᨧᩡᨾᩣᨢᩴᩬᨢ᩶ᩣᨧᩮᩢ᩶ᩣᨠᩴᩬᩁᩴᩬᨾᩣᩃᩯ᩠᩶ᩅᨸᩮᩢ᩠ᨶᨸᩦ ᨻᩴ᩵ᩬᨾᩯ᩵ᨳ᩶ᩣᨸᩪᩈᩁᩦᩋ᩶ᩣ᩠ᨿᨷ᩵ᩤ᩠ᩅᨲᩫ᩠ᩅᨯᩦᩉᩣ᩠ᨿᨪᩯ᩠ᨷᩉᩣ᩠ᨿᩈᩬ᩠ᨿ ᨢ᩶ᩣᨧᩮᩢ᩶ᩣᨷᩴ᩵ᩬᨩᩮᩥ᩵ᩬᩋᩉᩯ᩠ᨾᩃᩯ᩠᩶ᩅ ᨧᩡᨲᩯ᩠᩵ᨦᨠᩢ᩠ᨷᨾᩯ᩠᩶ᩅᨸᩱᩀᩪ᩵ᨸᩖᩣ᩠ᨿᨯᩬ᩠ᨿᨢᩣ᩠ᨿᨹ᩶ᩣ ᨢᩣ᩠ᨿᨻᩮᨩ᩠ᩁ᩺ ᨢᩣ᩠ᨿᨻᩖᩬ᩠ᨿᨢᩣ᩠ᨿᩉ᩠ᩅᩯᩁᨢᩣ᩠ᨿᩈᩕᩬ᩠ᨿᩀᩪ᩵ᨷᩫ᩠ᨶᨯᩬ᩠ᨿᨸᩩᨿ

-
-'; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== -// TEST DOUBLE BORDER -//$mpdf->SetColumns(3); -$htmlx = ' -
-
-Hallo World -
- -
-Hallo World -
- -
-Hallo World -
- -
-Hallo World -
- -
- -
-Hallo World -
- -
-Hallo World -
- -
-Hallo World -
- - -
-Hallo World -
-
- - - - - - -
- -
Hallo World
- -
Hallo World
- -
Hallo World
- -
- - - - -
A whole new world
- - - -
A whole new world
- - - -
A whole new world
- -
- - - - - - - -
A whole new world
A whole new world
- - - -
A whole new world
- - - -
A whole new world
-
- - -
-
- Fieldset and legend -

Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!

-
-
- -
-
- Fieldset and legend -

Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!

-
-
- -
-
- Fieldset and legend -

Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!

-
-
- -
-
- AWAY To War -

Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!

-
-
- -
-
- Fieldset and legend -

Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!

-
-
- -
-
- AWAY To War -

Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!

-
-
-'; - -$mpdf->useKerning = true; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -function SVGarcpath($start, $end, $cx = 50, $cy = 50, $r = 48) { - $start = deg2rad($start); - $end = deg2rad($end); - while ($end < $start) { $end += (M_PI*2); } - if (($end - $start) > M_PI) { $largearcflag = 1; } - else { $largearcflag = 0; } - $start = $start-(M_PI/2); // Adjust to start from the top=0 degrees - while ($start < 0) { $start += (M_PI*2); } - $end = $end-(M_PI/2); - while ($end < 0) { $end += (M_PI*2); } - $commands = array('M', $cx, $cy, - 'l', $r * cos($start), $r * sin($start), - 'A', $r, $r, 0, $largearcflag, 1, $cx + ($r * cos($end)), $cy + ($r * sin($end)), - "z"); - $c = implode(' ', $commands); - return $c; -} - -function SVGpie($segs, $w=30, $backgroundcolor="none", $linecolor="none", $linewidth=0, $seglinecolor="none", $seglinewidth=0) { - // $w is a number (? pixels) - // $seglinewidth is a number (? pixels) - $os = (max($seglinewidth,$linewidth))/2; - $svg = ''."\n"; - - if ($backgroundcolor != "none") { - $svg .= ''."\n"; - } - - foreach($segs AS $arc) { - $path = SVGarcpath($arc[0], $arc[1], ($w/2), ($w/2), ($w/2)-$os); - $svg .= ''."\n"; - } - - if ($linecolor != "none") { - $svg .= ''."\n"; - } - - - $svg .= ''."\n"; - return $svg; -} - -$segs = array( - array(0, 90, "blue"), -); -$segs2 = array( - array(0, intval(0.65*360), "blue"), -); - -$svg = SVGpie($segs, 30, "wheat", "none", 0, "none", 0); -$svg2 = SVGpie($segs2, 30, "wheat", "none", 0, "none", 0); - -$html_SVG = ' - - - -
Normal (25%): '.$svg.'
Large (65%): '.$svg2.'
-'; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -// Test In-line font characteristics -$htmlx = ' -
-Normal Arial font-size 16 red bold italic Small Caps underline shadow not shadow; not underline; not small-caps; not italic; not bold; not red; not font-size-16; not Arial-font-family; normal -
- -
-Normal Arial font-size 16 red bold italic Small Caps underline shadow not shadow; not underline; not small-caps; not italic; not bold; not red; not font-size-16; not Arial-font-family; normal -
- -
-Normal kern AWAY To nokern AWAY To not nokern AWAY To; not kern AWAY To; normal green blue not blue; not green; normal -
- -
-Normal kern AWAY To nokern AWAY To not nokern AWAY To; not kern AWAY To; normal green blue not blue; not green; normal -
- -'; - -//============================================================== -//============================================================== -// Test In-line font-feature characteristics -$htmlx = ' -
-Calibri normal:
-£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
- -pnum -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -
-ordn -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -
- -onum -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
- -lnum -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
- -case -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
- -salt -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
- -dlig -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
- -c2sc -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
- -smcp -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check
- -sups -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -
sups off: -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -

smcp off: -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -

c2sc off: -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -

dlig off: -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -

salt off: -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -

case off: -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -

lnum off: -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check - -

onum off: -£123450 (case32) 1st 3rd [CASE] g& CaSeMeNt traffic check -
-'; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -$mpdf->jSmaxChar = 5; // Maximum spacing to allocate to character spacing. (0 = no maximum) - -// Test GPOS -$html = ' -
-ผู้ คู่ -
- -
-ผู้ คู่ -
-// GSUB 5.2 -
-ಶಿಕ್ಷೆ ವಿಧಿಸಿದೆ -
- -// GSUB 7.2 -
-ಕ್ರೌ Kannada -
- -
-ಕ್ರೌ -
- - - -
-זֵּיְּשֳׂךָ -
- -
-זֵּיְּשֳׂךָ -
- -
-
Á á Ȧ ȧ Ä ä ï fi (DejaVu Sans Condensed) -traffic -insufflate
-
Á á Ȧ ȧ Ä ä ï fi traffic insufflate (Arial)
-
Á á Ȧ ȧ Ä ä ï fi (Times New Roman)
-
- -// Test GPOS 2 -
-
To Á á Ȧ ȧ Ä ä ï fi Wö Ẅ Ta Tu Tö (Arial)
-AWAY To WAR
-
Ta To Á á Ȧ ȧ Ä ä ï fi (DejaVu Sans Condensed) -traffic -insufflate Ta Tu -
-AWAY To WAR
-
To Á á Ȧ ȧ Ä ä ï fi Wö Ẅ Ta Tu Tö (DejaVu Sans Condensed) -traffic -insufflate
- -
To Á á Ȧ ȧ Ä ä ï fi Wö Ta Tu Tö (Times New Roman)
-AWAY To WAR
-
-
To Ta D̏ Ḍ ả Á á Ȧ ȧ Ä ä ï fi Wö Ta Tu Tö (Arial)
-AWAY To WAR
-
To D̏ Ḍ ả Á á Ȧ ȧ Ä ä ï fi Wö Ta Tu Tö (Arial)
-AWAY To WAR
-Kerning = GPOS Lookup Type 2; Mark to base = GOS Lookup Type 4 -
Ä̃̕ ä̃̕ ä̃̕ ã̈̕ ã̈̕ (GPOS Lookup Type 6)
- -
ç̥ (GPOS Lookup Type 5)
- -
ç̥ (GPOS Lookup Type 5)
- -
اثمكحه - - (Cursive GPOS Lookup Type 3)
-
Ä ä ä ã a̕
-
Ä̕ ä̕ ä̃ ã̈ ã̕
-
Ä̃̕ ä̃̕ ä̃̕ ã̈̕ ã̈̕
- - - - -
اٙٙه اه ه وٙه وه ه
- - - - -
trÄ̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To
- -
trÄ̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic AWAY To
- - -// TEST GPOS Ligature Position - -
-يَـٰٓأَيُّهَا يَنتُم لَىٰٓ ۚ - وَلَا كَمَا -ٱللَّهُ ٱللَّهَ وَلَا -لَا -رِّجَالِكُمْ ۖ - -خْرَىٰ ۚ وَلَا يَأْبَۚ -وَلَا تَسْـَٔمُوٓا۟ أَوْ كَبِيرًا إِلَىٰٓ -ٱللَّهِ وَأَدْنَىٰٓ أَلَّا إِلَّآ - بَيْنَكُمْ عَلَيْكُمْ أَلَّا -يَعْتُمْ ۚ وَلَا كَاتِبٌۭ -
- -// TEST GPOS Ligature Position - TABLES - -
-يَـٰٓأَيُّهَا يَنتُم لَىٰٓ ۚ - وَلَا كَمَا -ٱللَّهُ ٱللَّهَ وَلَا -لَا -رِّجَالِكُمْ ۖ - -خْرَىٰ ۚ وَلَا يَأْبَۚ -وَلَا تَسْـَٔمُوٓا۟ أَوْ كَبِيرًا إِلَىٰٓ -ٱللَّهِ وَأَدْنَىٰٓ أَلَّا إِلَّآ - بَيْنَكُمْ عَلَيْكُمْ أَلَّا -يَعْتُمْ ۚ وَلَا كَاتِبٌۭ -
- - - -// TEST \'curs\' GPOS - -
-ـىݦـ -ﺌﺌﺌﺌﺌﺌﺌﺌﺌﺌ -
- -
-ـىݦـ -ﺌﺌﺌﺌﺌﺌﺌﺌﺌﺌ -
- -
-سْتَشْهِدُ -
- -
-سْتَشْهِدُ -
- -// TEST LINE-BREAKING - -
-trÄ̃̕ff AWAY 1a) trä̃̕ffic AWAY To insuff-erable -trä̃̕ffic ÄWAY
- -
-trÄ̃̕ffic AWAY 1b) trä̃̕ffic AWAY To -in­suffer­able frä̃̕ffic ÄWAY To
- -
-trÄ̃̕fficAWAYinsufferableTogrä̃̕fficAWAYToträ̃̕ffic2e)i)AWAYToträ̃̕fficAWAYToträ̃̕fficÄWAYTo
- -
-trÄ̃̕ffic2e)ii)A)withSHY­suf­ableToträ̃̕fficAWAYToträ̃̕ffic AWAY To hrä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic ÄWAY To
- -
-trÄ̃̕ffic AW 2e)ii)A) trä̃̕ffic AWAY To -insufferable trä̃̕ffic AWAY 3.) trä̃̕ffic -ÄWAY To trä̃̕ffic
- -
-trÄ̃̕ffic2e)ii)B)sufferableToträ̃̕fficAWAYToträ̃̕ffic AWAY To hrä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic ÄWAY To
- -// TEST LINE-BREAKING - TABLES -
-trÄ̃̕ff AWAY 1a) trä̃̕ffic AWAY To insuff-erable -trä̃̕ffic ÄWAY
- -
-trÄ̃̕ffic AWAY 1b) trä̃̕ffic AWAY To -in­suffer­able frä̃̕ffic ÄWAY To
- -
-trÄ̃̕fficAWAYinsufferableTogrä̃̕fficAWAYToträ̃̕ffic2e)i)AWAYToträ̃̕fficAWAYToträ̃̕fficÄWAYTo
- -
-trÄ̃̕ffic2e)ii)A)withSHY­suf­ableToträ̃̕fficAWAYToträ̃̕ffic AWAY To hrä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic ÄWAY To
- -
-trÄ̃̕ffic AW 2e)ii)A) trä̃̕ffic AWAY To -insufferable trä̃̕ffic AWAY 3.) trä̃̕ffic -ÄWAY To trä̃̕ffic
- -
-trÄ̃̕ffic2e)ii)B)sufferableToträ̃̕fficAWAYToträ̃̕ffic AWAY To hrä̃̕ffic AWAY To trä̃̕ffic AWAY To trä̃̕ffic ÄWAY To
- - - - -// CSS control of features - -
all all all
- -
Small Caps. 1,278 and More.
- -
Small Caps. 1,278 and More.
- -
1st 100 1/2 traffic AWAY feast To
- -
1st 100 1/2 traffic AWAY feast To β θ φ
- -
1st 100 1/2 traffic AWAY feast To β θ φ
- -
C10H16N5O13P3
- -Cambria: - \'salt\' - \'c2sc\' - \'smcp\' - \'sups\' - \'sinf\' - \'case\' - \'calt\' - \'tnum\' - \'pnum\' - \'onum\' - \'lnum\' - \'numr\' - \'dnom\' - -
1st 100 1/2 traffic AWAY feast To β θ φ
- -Calibri: - \'case\' - \'calt\' - \'numr\' - \'dnom\' - \'subs\' - \'tnum\' - \'pnum\' - \'onum\' - \'lnum\' - \'salt\' - \'c2sc\' - \'smcp\' - \'sups\' - \'ordn\' - \'liga\' - \'dlig\' -
1st 100 1/2 traffic AWAY feast To
- -
1st 100 1/2 traffic AWAY feast To
- -// TEST GPOS Type 2 Format 1 (abvm) -
र्वे॑
- -// TEST \'kern\' GPOS in Arabic Typesetting - - -
-۝٣٤٥ -
- - -
-؀٣٤ -
- -
-؁٣٤٥ -
- -
-؁٣٤ -
- -
-؂٣٤ -
- -
-؃٣٤ -
- - -This test for reversal of chunks in flowing block, preserving consecutive chunks of LTR in an RTL line -
-الحمد These English words and not reversed ٣٤٥ لله -
- - - - -
-الحمد ۝٣٤٥ ٣٤٥ لله -
- -
-בדיקה באנגלית Latin Text - (ניסיון A) -
-בדיקה באנגלית Latin Text - (ניסיון 2) -
- -בנק: 12, סניף: 11, מס\' חשבון: 111, מס\' המחאה: 1112 -
- -קיזוז ימים בגין תחילת עבודה מתאריך 08/01/2013 -
- -שירותי Cloud Computing -
- -
-(ٱللَّهَ) Ä̕ ä̕ -
- -
-Ä̃̕ Ä̕ä̕ä̃ (ٱللَّهَ) Ä̕ ä̕ -
- -GPOS Type 2 Format 1 "kern" -
-كَبِيرًا إِلَىٰٓ -
- - -'; - -//============================================================== -//============================================================== -//============================================================== -$mpdf->debug = true; -//============================================================== -//============================================================== -$htmlx =' - - - -

- -ৎত -ৎতে -ত -ত্ত -ত্তে -ত্‍ত -ত্‍তে - -
- -ত্‍ = Khanda Ta. (U+09CE) character was added in Unicode v 4.1 and prior to this, (U+09A4 U+09CD U+200D) used
-

- -Kannada -
ತಮ್ಮದೇ ಯುವತಿಯೊಬ್ಬಳನ್ನು ಸಾಬೀತಾಗಿದ್ದು ನಡೆಸಿದ್ದು ಇಂಗ್ಲೆಂಡ್ ನ್ಯಾಯಾಲಯವು ಯುವತಿಯನ್ನು ಮಲದೊಡ್ಡಪ್ಪ ಮತ್ತು ಭಾವ ಅತ್ಯಾಚಾರ ಕಾರ್ಡಿಫ್ ಕ್ರೌನ್ ನ್ಯಾಯಾಲಯದಲ್ಲಿ ಅಪರಾಧಿಗಳಲ್ಲಿ ಮಲತಂದೆ ಮತ್ತು ಮಲದೊಡ್ಡಪ್ಪ ಅಕ್ರಮ ವಲಸಿಗರಾಗಿದ್ದು ಅವರನ್ನು ಭಾರತಕ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ. -
- -ಮಲದೊಡ್ಡಪ್ಪ ಮತ್ತು ಮಲತಂದೆಗೆ ಕ್ರಮವಾಗಿ ಮತ್ತು -
- -ಬಾಲಕಿಯನ್ನೇ ಅತ್ಯಾಚಾರ ಮಾಡಿದ್ದರು ವರ್ಷವಿದ್ದಾಗ ಗರ್ಭಕ್ಕೆ ಕಾರಣವಾಗಿರುವುದನ್ನೂ ಮಲ ದೊಡ್ಡಪ್ಪ ಅವಧಿಯಲ್ಲಿ ಒಪ್ಪಿಕೊಂಡಿದ್ದಾನೆ ಆಕೆಯನ್ನು ಅತ್ಯಾಚಾರ ಮಾಡಿದ್ದು ಮಗುವಾಗಿದ್ದಾಗ ತೋರಿಸಿದ್ದ. ಅಲ್ಲದೆ ಹಲ್ಲೆ ನಡೆಸಿದ್ದ ನ್ಯಾಯಾಲಯ -
- -ಬಾಲಕಿಯಾಗಿದ್ದಾಗಲೇ ಆರಂಭಿಸಿದ್ದನ್ನು ನ್ಯಾಯಾಲಯ ಹೊರಗೆಳೆದಿತ್ತು. -
-Telegu -
ఆగ్నేయ ఇరాన్‌లో ఆత్మాహుతి -
- -రెవల్యూషనరీ గార్డ్‌లతో ప్రముఖ కమాండర్‌లతోసహా మొత్తం చెందినట్లు లోక్‌సభ స్పీకర్ -
- -దాడుల్లో భద్రతాదళాలకు శుశాత్రీ, మొహమ్మద్‌ తదితరులున్నారని, తీవ్రగాయాలపాలైనారని చెప్పారు. -
- -కమాండర్లు పాకిస్థాన్‌ సరిహద్దుల్లోనున్న పిశిన్ ప్రాంతంలో పాల్గొనేందుకు దేరి వెళ్ళారని -
-Oriya -
ଆପଣଙ୍କୁ ସ୍ବାଗତ ଏହି ଉନ୍ମୁକ୍ତ ଇଣ୍ଟରନେଟ ବିଶ୍ବର ଉପଲବ୍ଧ ମଧ୍ୟ ବର୍ଦ୍ଧିତ କିମ୍ବା ଏହି ପୃଷ୍ଠାକୁ ସମ୍ପାଦନ ସମସ୍ତ ମୁକ୍ତ ଲାଇସେନ୍ସର ସର୍ତ୍ତ ଉପଲବ୍ଧ ମୁକ୍ତ ଇଲେକ୍ଟ୍ରୋନିକ୍ସ ପ୍ରିଣ୍ଟ୍ ପର୍ଯ୍ୟନ୍ତ ପ୍ରସଙ୍ଗ -
-Punjabi -
ਗ੍ਰਹਿਮੰਤਰੀ ਉਨ੍ਹਾ ਦ੍ਰਮੁਕ ਸ਼੍ਰੀਲੰਕਾ -
-Malayalam -
സിപി‌എം -
-Bengali (bn) -
স্বেচ্ছাসেবী ও ত্রাণ তীব্রতা স্রোত সংখ্যা স্বভাবতই আক্রমণ প্রবেশ নিয়ন্ত্রণ সাহায্যে -
-Assamese -
উদ্দেশ্য বিশ্বকোষ প্ৰণয়ন সাহিত্যিকসকল -গ্ৰাহ্য গ্ৰহন -
-Misc -
অ্য ক ক় কি ক্ ক্ক ক্র ক্র্ক ক্‌ক ক্‍ক দ্য ন্ক ন্ধ ন্ব ন্য ন্র ন্‌ক ন্‌ধ ন্‌ব ন্‌র ন্‍ক ন্‍ধ ন্‍ব ন্‍র য্ র্ক র্কি র্কৌ র্ন্‍ র্ব্ব শ্য ষ্য স্য ি কো কৌ ক্র্ক ন্‌ক ন্‌ব ন্‍ক ন্‍ব ন্‍র র্কাং র্কাঃ র্কৌ র্ভ ৰ্ভ ৱ্ভ অৗ ন্ত্র ত্যু চ্য্র -
-Reph -
র্ক র্কা র্কি র্কী র্কু র্কূ র্কে র্কৈ র্কো র্কৌ র্য র্‍য র‍্য র্র‍্য -
-CP - Dependent -
া ি ী ু ূ ৃ ে ৈ ো ৌ -
-GSUB -
ক্র খ্র গ্র ঘ্র জ্র ত্র দ্র ধ্র প্র ম্র শ্র স্র হ্র ছ্র ট্র ঠ্র ড্র থ্র ফ্র ব্র ভ্র ক্য খ্য গ্য ঘ্য চ্য জ্য ট্য ঠ্য ড্য ড়্য ঢ্য ত্য থ্য দ্য ধ্য ন্য প্য ফ্য ব্য ভ্য ম্য য্য র‍্য ল্য শ্য ষ্য স্য হ্য -ক্ল গ্ল প্ল ম্ল ল্ল শ্ল স্ল হ্ল ক্ক -
- -ক্ব জ্ব ট্ব ত্ব দ্ব ধ্ব ন্ব ব্ব ম্ব ল্ব শ্ব ষ্ব স্ব হ্ব -
- -ণ্ণ ষ্ণ ষ্ণু হ্ণ হ্ণি জ্জ ট্ট ত্ত দ্দ ন্ন প্প ত্ন ম্ন স্ন হ্ন ক্ন গ্ন গ্ম ঙ্ম ট্ম ণ্ম ত্ম দ্ম ধ্ম ন্ম ম্ম ল্ম শ্ম ষ্ম হ্ম ক্ষ ক্ত গ্ধ ঙ্ক ঙ্খ ঙ্গ ঙ্ঘ চ্চ চ্ছ চ্ঞ জ্ঝ জ্ঞ ঞ্চ ঞ্ছ ঞ্জ ণ্ট ক্ট ণ্ড ন্ড দ্গ দ্ঘ দ্ধ দ্ভ ন্ত ন্থ ন্দ ন্ধ প্ত ব্জ ব্দ ম্প ম্ফ ম্ভ ল্ক ল্গ ল্প ল্ফ শ্চ ষ্ক ষ্ট ষ্ঠ ষ্প ষ্ফ স্ক স্খ স্ত স্থ স্প স্ফ ম্থ ল্ত ল্ধ ক্ম ক্স গ্গ ঘ্ন চ্ন -
- -ছ্ব -
- -ঞ্ঝ ড্ড ড্ম ড়্গ ণ্ঠ ণ্ঢ ণ্ব ত্থ থ্ব ধ্ন ন্ট ন্ঠ ন্স প্ট প্ন ফ্ল ব্ধ ব্ল ভ্ল ম্ত ম্দ ল্ট ল্ড শ্ছ শ্ন শ্ত স্ট স্ম -
- -চ্ছ্র চ্ছ্ব দ্দ্ব দ্ধ্ব ন্ধ্র ব্দ্র -
- -ক্ষ্ণ ক্ষ্ম -
- -জ্জ্ব ত্ত্ব ত্ম্য ন্ত্র ন্ত্ব ন্দ্র ন্ধ্য ন্ন্য ম্প্র ম্ভ্র র্ধ্ব র্শ্ব ষ্ট্র ষ্প্র স্ত্র স্ট্র স্ক্র ক্ট্র -প্স -
- -'; -//============================================================== -//============================================================== -//============================================================== -// ************ FIXES ************ -// ************ FIXES ************ -$htmlx =' - - -FIX OTL (ZZZ93) Kannada: Old spec Lohit-Kannada - -
-ನ್ನು ದ್ದು ನ್ನು ತ್ತು ದ್ದು ದ್ದು ನ್ನು ಪ್ಪ ಕ್ರೌ ಕ್ರ -
- - -INDIC_FIX_1: -
র্ন্‍
- -INDIC_FIX_2: -
-న్‌లా -న్‌లి -న్‌లీ -న్‌లు -న్‌లూ -న్‌లె -న్‌లే -న్‌లై -న్‌లొ -న్‌లో -న్‌లౌ -
- -INDIC_FIX_3: - -
ক্র্ক
-
ক্র্ক
- -INDIC_FIX_4: -
ర్డ్‌
- -OTL_FIX_1 & OTL_FIX_2: -
ନ୍ମୁ Ä̃̕
- -OTL_FIX_3: -
କ୍ଟ୍ର
- -ZKI8 Fix - (NB With this, Indic fix 2 no longer required.) -
-న్‌లో -
- -ZZZ96 Fix - GPOS fix in OTL Type 2 (kerning) for XPlacement of first character of pair -
-ကြို -
-Part 2) Kern on by default as needed for repositioning -
-သန္တာ -
- -LOHIT fonts at : -https://fedorahosted.org/lohit/wiki -Version 2 are under development: http://pravin-s.blogspot.in/2013/08/project-creating-standard-and-reusable.html - -Solaiman-Lipi (Bengali): http://www.omicronlab.com/bangla-fonts.html - - -Khmer Fix 1 -
-ង្រ្គ -ង្គ្រ -ន្រ្តី -ន្ត្រី -ង្រ្គោះ -ង្គ្រោះ -
- -'; -// ************ FIXES ************ -// INDIC_FIX_1 Indic Initial re-ordering; stops search for base when Halant before ZWJ - this sets the BASE at position of ZWJ -//define('OMIT_INDIC_FIX_1', 1); - -// INDIC_FIX_2 Indic Initial re-ordering; Indic If C(base) H ZWNJ C2 Matra - and Matra position is POS_BEFORE_SUB, -// this changes it to correct position after the 2nd C (by changing it to POS_AFTER_SUB) -// i.e. when ZWNJ prevents C2 from becoming a joined/form -//define('OMIT_INDIC_FIX_2', 1); - -// INDIC_FIX_3 Indic Initial re-ordering; If C(pre-base) H Ra H C(base) - this allows blwf to be applied to pre-base H-Ra -// whereas blwf is normally only applied post-base -// If blwf not substituted, marks for Ra + H to apply 'rphf' -//define('OMIT_INDIC_FIX_3', 1); - -// INDIC_FIX_4 Indic Initial re-ordering; ZWNJ should block H C from forming blwf post-base (e.g. Ra[base] H C H ZWNJ) -// need to unmask backwards beyond first consonant arrived at */ -//define('OMIT_INDIC_FIX_4', 1); - -// OTL_FIX_1 GPOS Mark to Mark Attachment - prevent rule being skipped if the "base" mark is not attached to a ligature -// because it would be skipped as it deems that the marks are attached to different ligs or components of ligs. -//define('OMIT_OTL_FIX_1', 1); - -// OTL_FIX_2 GPOS Mark to Mark Attachment - sets a BaseWidth for the Mark to attach to -//define('OMIT_OTL_FIX_2', 1); - -// OTL_FIX_3 GSUB Type 6 substitution, returned value for shift which meant next character was skipped for lookup (x3 lines) -//define('OMIT_OTL_FIX_3', 1); - -// ZKI6 fixed moving characters using _move_info_pos() - -// ZKI7 fixed old_spec to mark Ra-Halant for pre-base ordering (instead of Halant-Ra) - -// ZKI8 Fix Indic Initial re-ordering: ZWNJ will stop search for base -// INDIC_FIX_2 no longer required when this is used. - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -$htmlx = ' - - - -KHMER -
-ង្រ្គ -ង្គ្រ -ន្រ្តី -ន្រ្តី -ង្គ្រោះ -
- -
-យុវជន​ម្នាក់​បាន​ស្លាប់​ដោយ​គ្រាប់កាំភ្លើង​របស់​ប៉ូលិស និង​បីនាក់​ផ្សេងទៀត​រងរបួស នៅក្នុង​ការប្រឈម​មុខ​ដាក់គ្នា​ដាច់ដោយឡែក​គ្នាមួយ រវាង​ក្រុម​យុវជន​មួយ​ក្រុម ជាមួយ​ប៉ូលិស នៅ​ម្តុំ​ស្ពាន​ក្បាលថ្នល់។ នេះ​បើតាម​ព័ត៌មាន​ពី​លោក​ ចាន់ សាវ៉េត មន្រ្តី​ស៊ើបអង្កេត​របស់​អង្គការ​សិទ្ធិមនុស្ស​អាដហុក ដែល​វត្តមាន​នៅ​កន្លែង​កន្លែង​កើតហេតុ នៅ​យប់​ថ្ងៃ​អាទិត្យ​ទី ១៥ កញ្ញានេះ។ -
-Khmer OS -
-ង្រ្គ -ង្គ្រ -ន្រ្តី -ន្រ្តី -ង្គ្រោះ -
-
-យុវជន​ម្នាក់​បាន​ស្លាប់​ដោយ​គ្រាប់កាំភ្លើង​របស់​ប៉ូលិស និង​បីនាក់​ផ្សេងទៀត​រងរបួស នៅក្នុង​ការប្រឈម​មុខ​ដាក់គ្នា​ដាច់ដោយឡែក​គ្នាមួយ រវាង​ក្រុម​យុវជន​មួយ​ក្រុម ជាមួយ​ប៉ូលិស នៅ​ម្តុំ​ស្ពាន​ក្បាលថ្នល់។ នេះ​បើតាម​ព័ត៌មាន​ពី​លោក​ ចាន់ សាវ៉េត មន្រ្តី​ស៊ើបអង្កេត​របស់​អង្គការ​សិទ្ធិមនុស្ស​អាដហុក ដែល​វត្តមាន​នៅ​កន្លែង​កន្លែង​កើតហេតុ នៅ​យប់​ថ្ងៃ​អាទិត្យ​ទី ១៥ កញ្ញានេះ។ -
- -Khmer -
-ង្រ្គ -ង្គ្រ -ន្រ្តី -ន្រ្តី -ង្គ្រោះ -
-
-យុវជន​ម្នាក់​បាន​ស្លាប់​ដោយ​គ្រាប់កាំភ្លើង​របស់​ប៉ូលិស និង​បីនាក់​ផ្សេងទៀត​រងរបួស នៅក្នុង​ការប្រឈម​មុខ​ដាក់គ្នា​ដាច់ដោយឡែក​គ្នាមួយ រវាង​ក្រុម​យុវជន​មួយ​ក្រុម ជាមួយ​ប៉ូលិស នៅ​ម្តុំ​ស្ពាន​ក្បាលថ្នល់។ នេះ​បើតាម​ព័ត៌មាន​ពី​លោក​ ចាន់ សាវ៉េត មន្រ្តី​ស៊ើបអង្កេត​របស់​អង្គការ​សិទ្ធិមនុស្ស​អាដហុក ដែល​វត្តមាន​នៅ​កន្លែង​កន្លែង​កើតហេតុ នៅ​យប់​ថ្ងៃ​អាទិត្យ​ទី ១៥ កញ្ញានេះ។ -
- - - -'; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -$htmlx = ' -Thai shaper -
-ด๋ำ -ดํ๋า -
-Lao shaper -
-ດ໋ຳ -ດໍ໋າ -
- -'; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -/* -$html = ' - -SYRIAC - Estrangelo Edessa -
-ܘܬܘܒ ܐܬܟܢܝܬ ܗܕܐ ܕܝܪܐ ܩܕܝܫܬܐ ܒܫܡ ܩܕܝܫܐ ܥܢܘܝܐ ܡܪܝ ܐܘܓܝܢ ܕܐܬܐ ܗ̱ܘܐ ܡܢ ܡܨܪܝܢ ܆ ܥܠ ܒܙܒܢ ܩܪܒܐ ܐܝܬܝܘ ܕܝܪ̈ܝܐ (ܐܝܟ ܬܫܥܝܬܐ ܬܘܕܝܬܢܝܬܐ) ܚܕܟܡܐ ܓܪ̈ܡܐ ܕܩܕܝܫܐ ܡܢ ܕܝܪܐ ܕܡܪܝ ܐܘܓܝܢ ܒܛܘܪܐ ܕ ܐܝܙܠܐ ܕܢܦܠ ܒܡܕܒܪܐ ܕ ܢܨܝܒܝܢ ܥܠ ܬܚܘܡܐ ܕ ܩܡܫܠܝ. ܘܬܘܒ ܐܬܟܢܝܬ ܕܝܪܐ ܕ ܙܥܦܪܐܢ ܐܘ ܟܘܪܟܡܐ ܒܫܡ ܡܪܝ (ܫܠܝܡܘܢ) ܕܝܪܝܐ ܕܫܬܐܣ ܠܕܝܪܐ ܒܫܢܬ 473 ܡ. -
- -'; -$mpdf->autoLangToFont = true; -*/ -//============================================================== -//============================================================== -//============================================================== -//============================================================== -/* -$html = '

Distinguishes multiple languages enclosed in same element (tags): -Arabic قال الرئيس -English Cat sat on the large mat -Tamil ஷியா -Hindi भारत और -Japanese いろはにほへと -Chinese 来自商务部新闻办公 -Thai เป็นมนุษย -Viet Một khảo sát mới cho biết người dân -English Cat sat on the large mat -Korean 키스의 고유조건은 -Syriac ܘܬܘܒ ܐܬܟܢܝܬ ܗܕܐ ܕܝܪܐ -Myanmar (Burmese) မြန်​မာအခေါ် တရားဝင်​အား​ဖြင့် -Khmer យុវជន​ម្នាក់​បាន -NKo ߟߐ߬ߝߋ߲ ߓߍ߯ ߟߊߝߋ߲ -Thaana ދިވެހި ވިކިޕީޑިއާ -Arabic الحمد لله رب العالمين -Urdu عزت کے اعتبار سے چیف جسٹس -Pashto ځانمرگو بريدونو لږ -Farsi گیکدیگر -Sindhi جي ڳالهه ڪئي -English Cat sat on the large mat -

-'; -$mpdf->autoScriptToLang = true; -$mpdf->baseScript = 1; -$mpdf->autoVietnamese = true; -$mpdf->autoArabic = true; -$mpdf->autoLangToFont = true; -*/ -//============================================================== -//============================================================== -//============================================================== -// TIBETAN -$htmlx = ' -
-
-༄།ཏདྱཐཱ།ཨོཾགཏེགཏེཔཱརགཏེཔཱརསཾགཏེབོདྷིསྭཱཧཱ། -ཨོཾམུནིམུནིམཧཱམུནིཡེསྭཱཧཱ།ཨོཾཨཱམིདྷེཝཱཧྲཱི།ཨོཾམཎིཔདྨེཧཱུཾ།ཨོཾཨཱཿཧཱུཾ་ -བཛྲགུརུཔདྨསིདྡྷིཧཱུཾ།ཨོཾཨཱམརཱཎིཛྲིཝནཏིཡེསྭཱཧཱ།ཨོཾཝགིཤཱརིམུཾ།ཨོཾ་ -མཎིཔདྨེཧཱུཾ།ཨོཾབཛྲཔཱནིཧཱུཾ།ཨོཾཏཱརེཏུཏྟཱརེཏུརེསྭཱཧཱ།ཨོཾབྷྲཱུཾ་ -སྭཱཧཱ།ཨོཾཨཱམྲིཏཱཨཱཡུརྡདེསྭཱཧཱ།ཨོཾམརིཙྱེམཾསྭཱཧཱ། -
-
-'; -//============================================================== -//============================================================== -$htmlx = ' -
- -
-MYANMAR (Burmese) - Myanmar Text - -
-င်္က္ကျြွှေို့်ာှီ့ၤဲံ့းႍ -
-
- - - -'; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -// FIXES for kerning/line-justification -$htmlx = ' - - -
- -// Test of XPlacement/XAdvance at end of line -
-وَلْيَك -وَلْيَك -وَلْيَك -وَلْيَك -وَلْيَك -وَلْيَك -وَلْيَك -وَلْيَك -وَلْيَك -وَلْيَك -وَلْيَك -وَلْيَك -
-
-کا -
- - -GPOS Type 2: Format 2 (THAANA - MV Boli) -
-ވިކިޕީޑިއާ -
- -GPOS Type 2: Format 2 (ARABIC XB Zar) -
-کا -
- -GPOS Type 2: Format 2 (ARABIC XB Zar) -
-توگه -
- -GPOS Type 2: Format 2 (SYRIAC - Estrangelo Edessa) -
-ܡܨܪܝܢ -
- - - -GPOS Type 2: Format 1 (Tharlon) -
ကြို
- -GPOS Type 2: Format 1 (Arabic Typesetting) -
-كَبِيرًا إِلَىٰٓ -
- -GPOS Type 2: Format 1 (Arial) -
-ÄYÄWAY Tö -
- -
-'; - -//============================================================== -// WHITESPACE -$htmlx = ' -

-From Lazamon\'s Brut -

- -

Monotonic:

Hallo World

Hallo World

-
Monotonic:

Hallo World

Hallo World

- -
Hallo Hallo Hallo Hallo Hallo
-'; -//============================================================== -// LANGUAGE TAGS - CYRILLIC -$htmlx = ' -HTML language tags to distinguish Bulgarian, Russian, and Serbian, -which have different italic forms for lowercase б, г, д, п, and/or т: - - - - -
Bulgarian:   -[ бгдпт ]   -бгдпт ]   - Мога да ям стъкло и не ме боли. -
Russian: -[ бгдпт ]   -бгдпт ]   -Я могу есть стекло, это мне не вредит. -
Serbian: -[ бгдпт ]   -бгдпт ]   - Могу јести стакло -а -да ми -не -шкоди. -
-'; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -// BIDI ALGORITHM FOR CHUNKS -$htmlx = ' -
Arabic (السلام عليكم)
-
Arabic (السلام عليكم)
-
(السلام عليكم) Arabic
-'; - -//============================================================== -// CSS unicode-bidi -// normal | embed | bidi-override | inherit -$htmlx = ' -// embed = add LRE (U+202A; for \'direction: ltr\') or RLE (U+202B; for \'direction: rtl\') at the start of element and PDF (U+202C) at the end of element -
-

english17 עברית18 english19 עברית20

-

english17 ‫עברית18 english19 עברית20‬

-

english17 עברית18 english19 עברית20

-
- -// bidi-override = LRO (U+202D; for \'direction: ltr\') or RLO (U+202E; for \'direction: rtl\') at the start of the element or at the start of each anonymous child block box, if any, and a PDF (U+202C) at the end of the element -
-

english17 עברית18 english19 עברית20

-

‭english17 עברית18 english19 עברית20‬

-

english17 עברית18 english19 עברית20

-
- -'; -//============================================================== -//============================================================== -//============================================================== -// used to determine the aspect value of a font. -// CSS3 font-aspect: http://www.w3.org/TR/css3-fonts/#propdef-font-size-adjust -// DejaVuSansCondensed 0.547 -// FreeSerif 0.45 -// Arabic Typesetting 0.278 -// Mondulkiri 0.45 -// Sun-ExtA 0.455 -// XB Riyaz 0.523 -$htmlx = ' - -

bb

-

bb

-'; -//============================================================== -//============================================================== -// Test for alpha transparency in PNG -$htmlx = ' -
- - -
- -
- - -
-
- - -
-
- - -
-
- - -
- -'; - -//============================================================== -//============================================================== -$htmlx =' - -
- - - -
- -'; - -//============================================================== -//============================================================== -//============================================================== -// ICC based Color Profiles in Images + 16-bit Gamma -$htmlx = ' -PNG (16-bit, Gamma):
-PNG (Gamma):
-PNG (ICC Profile):
- -JPEG (ICC Profile): - - - - - - - - - - - -
Profiles in each quadrant: v4 e-sRGB v4 YCC-RGB
v2 GBR v2 Adobe RGB
- - - - - - - - - - -
-This should correctly display with the motorbike in green: - -'; -//============================================================== -//============================================================== -//============================================================== -// UNDERLINE and LINE-THROUGH - together -$htmlx =' -

Hallo World -Hallo World -Hallo World -Hallo World -Hallo World -Hallo World -Hallo World

-'; -//============================================================== -//============================================================== -// UNDERLINE and LINE-THROUGH - across spans -$htmlx =' -

1st

-

1st

-'; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//BUG TABLES - Width > Page - needing to wrap letters or resize -// KEEP THIS to Illustrate mpdf - ZZZZZe.php Bug fix -$html = ' -Latin script will resize rather than wrap - - - - - - - - - - - - - - -
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
- -Can force wrap using overflow: wrap - - - - - - - - - - - - - - -
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB
- -CJK script will wrap characters (this example also resizes to minimum column width). In this case, minimum is 2 characters in last column because of a character which cannot start a line - - - - - - - - - - - - - - - - -
部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ
- -Default layout when resizing not required - note wrapping, but balanced column widths - - - - - - - - - - - -
部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ部ォ
- -'; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -$html = ' - - - - - -
123
456
- - - - -
123
456
- - - - -
123
456
- - - - -
123
456
- - - - -
123
456
- - - - -
123
456
- - -'; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -if (isset($_REQUEST['html'])) { echo $html; exit; } -if (isset($_REQUEST['source'])) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} -//============================================================== -$mpdf->WriteHTML($html); - - -// $mpdf->WriteHTML('
Generated in '.sprintf('%.2f',(microtime(true) - $mpdf->time0)).' seconds. Peak memory usage '.number_format((memory_get_peak_usage(true)/(1024*1024)),2).' MB
'); - -// echo number_format((memory_get_peak_usage(true)/(1024*1024)),2).' MB
'; - -//============================================================== -//============================================================== -// OUTPUT -//$mpdf->SetCompression(false); -$mpdf->Output(); exit; - -//$mpdf->Output('test.pdf','D'); exit; - -$s = $mpdf->Output('','S'); echo nl2br(htmlspecialchars($s)); exit; - - -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/examples/flowers-pattern.jpg b/mpdf/examples/flowers-pattern.jpg deleted file mode 100644 index 45aaeeb..0000000 Binary files a/mpdf/examples/flowers-pattern.jpg and /dev/null differ diff --git a/mpdf/examples/fonts-elem-01-t.svg b/mpdf/examples/fonts-elem-01-t.svg deleted file mode 100644 index dac89f8..0000000 --- a/mpdf/examples/fonts-elem-01-t.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Basic SVG font element - - - - - Placed Glyphs - - - - - - - - - - - - - - - - - - - - - - - - - - SVG Font - - - AyÖ@ç - - - - diff --git a/mpdf/examples/formsubmit.php b/mpdf/examples/formsubmit.php deleted file mode 100644 index f13a395..0000000 --- a/mpdf/examples/formsubmit.php +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - -

Submitted data from PDF Form

-

(See formsubmit.php in the Examples folder for details)

-'; - - -if (count($_POST)) { - // To display HTML output from PDF form - echo '

HTML format data sent as POST

'; - foreach($_POST AS $name=>$val) { - $t = mb_convert_encoding(PDFDocEncodingToWin1252($val), 'UTF-8', 'Windows-1252' ); // If from core fonts doc - echo '

PDFDocEnc: '.$name.' => '.htmlspecialchars($t).'

'; - } -} -else if (count($_GET)) { - // To display HTML output from PDF form - echo '

HTML format data sent as GET

'; - foreach($_GET AS $name=>$val) { - $t = mb_convert_encoding(PDFDocEncodingToWin1252($val), 'UTF-8', 'Windows-1252' ); // If from core fonts doc - echo '

PDFDocEnc: '.$name.' => '.htmlspecialchars($t).'

'; - } -} - -else { - $postdata = file_get_contents("php://input"); - - if ($postdata) { - echo '

XFDF format data detected

'; - // To parse XFDF - if (preg_match_all('/\s*((.*?)<\/value\s*>)\s*<\/field\s*>/s', $postdata, $m)) { - for($i=0; $i(.*?)<\/value\s*>/s', $m[2][$i], $v); - if (count($v[0])>1) { - $values = array(); - foreach($v[1] AS $val) { $values[] = $val; } - //foreach($v[1] AS $val) { $values[] = htmlspecialchars_decode($val); } - echo '

Field: '.$m[1][$i].' => [array of values] ('.implode(', ',$values).')

'; - } - else { - //echo '

Field: '.$m[1][$i].' => '.htmlspecialchars_decode($m[3][$i]).'

'; - echo '

Field: '.$m[1][$i].' => '.$m[3][$i].'

'; - } - } - } - if (preg_match_all('/\s*\s*<\/field\s*>/s', $postdata, $m)) { - for($i=0; $iField: '.$m[1][$i].' => [blank]

'; - } - } - if (preg_match_all('//s', $postdata, $m)) { - for($i=0; $iField: '.$m[1][$i].' => [no value]

'; - } - } - - - // To display whole XFDF - //$postdata = preg_replace("/[\n\r]/", "", $postdata); - //$postdata = preg_replace('/>\s*\n<", $postdata); - //echo nl2br(htmlspecialchars($postdata)); - } - else { echo "No form data detected"; } -} - - - -echo ''; - -exit; - -function PDFDocEncodingToWin1252($txt) { - $Win1252ToPDFDocEncoding = array( - chr(0200) => chr(0240), chr(0214) => chr(0226), chr(0212) => chr(0227), chr(0237) => chr(0230), - chr(0225) => chr(0200), chr(0210) => chr(0032), chr(0206) => chr(0201), chr(0207) => chr(0202), - chr(0205) => chr(0203), chr(0227) => chr(0204), chr(0226) => chr(0205), chr(0203) => chr(0206), - chr(0213) => chr(0210), chr(0233) => chr(0211), chr(0211) => chr(0213), chr(0204) => chr(0214), - chr(0223) => chr(0215), chr(0224) => chr(0216), chr(0221) => chr(0217), chr(0222) => chr(0220), - chr(0202) => chr(0221), chr(0232) => chr(0235), chr(0230) => chr(0037), chr(0231) => chr(0222), - chr(0216) => chr(0231) - ); - return strtr($txt, array_flip($Win1252ToPDFDocEncoding) ); -} - - -?> \ No newline at end of file diff --git a/mpdf/examples/goto.gif b/mpdf/examples/goto.gif deleted file mode 100644 index e7de2b1..0000000 Binary files a/mpdf/examples/goto.gif and /dev/null differ diff --git a/mpdf/examples/goto2.gif b/mpdf/examples/goto2.gif deleted file mode 100644 index b74091c..0000000 Binary files a/mpdf/examples/goto2.gif and /dev/null differ diff --git a/mpdf/examples/goto2rtl.gif b/mpdf/examples/goto2rtl.gif deleted file mode 100644 index adbef51..0000000 Binary files a/mpdf/examples/goto2rtl.gif and /dev/null differ diff --git a/mpdf/examples/img1.png b/mpdf/examples/img1.png deleted file mode 100644 index fe3f4de..0000000 Binary files a/mpdf/examples/img1.png and /dev/null differ diff --git a/mpdf/examples/img2.png b/mpdf/examples/img2.png deleted file mode 100644 index 2d142f4..0000000 Binary files a/mpdf/examples/img2.png and /dev/null differ diff --git a/mpdf/examples/img3.png b/mpdf/examples/img3.png deleted file mode 100644 index a7a9487..0000000 Binary files a/mpdf/examples/img3.png and /dev/null differ diff --git a/mpdf/examples/img4.png b/mpdf/examples/img4.png deleted file mode 100644 index e9c3f44..0000000 Binary files a/mpdf/examples/img4.png and /dev/null differ diff --git a/mpdf/examples/img5.png b/mpdf/examples/img5.png deleted file mode 100644 index 1e4c5ec..0000000 Binary files a/mpdf/examples/img5.png and /dev/null differ diff --git a/mpdf/examples/index.php b/mpdf/examples/index.php deleted file mode 100644 index f9ab014..0000000 --- a/mpdf/examples/index.php +++ /dev/null @@ -1,41 +0,0 @@ -

mPDF Example Files

'; - -foreach($files AS $n=>$f) { - echo '

'.$n.') '.$f[0].'   PDF

'; -} - -echo ''; -exit; - - -// For PHP4 compatability -if (!function_exists('scandir')) { - function scandir($dir = './', $sort = 0) { - $dir_open = @ opendir($dir); - if (! $dir_open) - return false; - while (($dir_content = readdir($dir_open)) !== false) - $files[] = $dir_content; - if ($sort == 1) - rsort($files, SORT_STRING); - else - sort($files, SORT_STRING); - return $files; - } -} - - -?> \ No newline at end of file diff --git a/mpdf/examples/klematis.jpg b/mpdf/examples/klematis.jpg deleted file mode 100644 index b87e920..0000000 Binary files a/mpdf/examples/klematis.jpg and /dev/null differ diff --git a/mpdf/examples/layers_tab.jpg b/mpdf/examples/layers_tab.jpg deleted file mode 100644 index 4d96ff3..0000000 Binary files a/mpdf/examples/layers_tab.jpg and /dev/null differ diff --git a/mpdf/examples/loading.gif b/mpdf/examples/loading.gif deleted file mode 100644 index e846e1d..0000000 Binary files a/mpdf/examples/loading.gif and /dev/null differ diff --git a/mpdf/examples/mpdfstyleA4.css b/mpdf/examples/mpdfstyleA4.css deleted file mode 100644 index 3492077..0000000 --- a/mpdf/examples/mpdfstyleA4.css +++ /dev/null @@ -1,47 +0,0 @@ - body { font-family: DejaVuSansCondensed, sans-serif; font-size: 11pt; } - p { text-align: justify; margin-bottom: 4pt; margin-top:0pt; } - - hr { width: 70%; height: 1px; - text-align: center; color: #999999; - margin-top: 8pt; margin-bottom: 8pt; } - - a { color: #000066; font-style: normal; text-decoration: underline; - font-weight: normal; } - - pre { font-family: DejaVuSansMono, monospaced; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; } - - h1 { font-weight: normal; font-size: 26pt; color: #000066; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 18pt; margin-bottom: 6pt; - border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; - text-align: ; page-break-after:avoid; } - h2 { font-weight: bold; font-size: 12pt; color: #000066; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 6pt; margin-bottom: 6pt; - border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; - text-align: ; text-transform: uppercase; page-break-after:avoid; } - h3 { font-weight: normal; font-size: 26pt; color: #000000; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 0pt; margin-bottom: 6pt; - border-top: 0; border-bottom: 0; - text-align: ; page-break-after:avoid; } - h4 { font-weight: ; font-size: 13pt; color: #9f2b1e; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 10pt; margin-bottom: 7pt; - font-variant: small-caps; - text-align: ; margin-collapse:collapse; page-break-after:avoid; } - h5 { font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 8pt; margin-bottom: 4pt; - text-align: ; page-break-after:avoid; } - h6 { font-weight: bold; font-size: 9.5pt; color: #333333; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 6pt; margin-bottom: ; - text-align: ; page-break-after:avoid; } - - - .breadcrumb { - text-align: right; font-size: 8pt; font-family: DejaVuSerifCondensed, serif; color: #666666; - font-weight: bold; font-style: normal; margin-bottom: 6pt; } - - .infobox { margin-top:10pt; background-color:#DDDDBB; text-align:center; border:1px solid #880000; } - - .big { font-size: 1.5em; } - .red { color: #880000; } - .slanted { font-style: italic; } - - diff --git a/mpdf/examples/mpdfstylePaged.css b/mpdf/examples/mpdfstylePaged.css deleted file mode 100644 index 904372a..0000000 --- a/mpdf/examples/mpdfstylePaged.css +++ /dev/null @@ -1,120 +0,0 @@ - @page { - size: 15cm 17cm; /* width height {1,2} | auto | portrait | landscape NB 'em' and 'ex' % are not allowed */ - margin: 10%; /* % of page-box width for LR, height for TB */ - margin-header: 5mm; - margin-footer: 5mm; - margin-left: 4cm; - margin-right: 2cm; - odd-header-name: myHeader2Odd; - even-header-name: html_myHTMLHeaderEven; - odd-footer-name: html_myHTMLFooterOdd; - even-footer-name: myFooter2Even; - marks: crop; /* crop | cross | none */ - } - - @page :first { - margin-top: 5cm; /* Top margin on first page 10cm */ - } - - @page standard { - size: auto; /* auto is the default mPDF value */ - margin: 10%; /* % of page-box width for LR, height for TB */ - marks: none; /* crop | cross | none */ - } - - @page standard :first { - margin-top: 7cm; /* Top margin on first page 10cm */ - } - - @page bigsquare { - size: 15cm 20cm; - margin-left: 4cm; - marks: crop cross; /* crop | cross | none */ - background: transparent url('bg.jpg') repeat scroll 5mm 5mm; /* position inset by bleedMargin */ - } - - @page bigsquare :right { - header: html_myHTMLHeaderOdd; - footer: html_myHTMLFooterOdd; - } - - @page bigsquare :left { /* left is what mPDF calls EVEN page - right=ODD */ - header: html_myHTMLHeaderEven; - footer: html_myHTMLFooterEven; - } - - @page smallsquare { - size: 25cm 15cm; - margin-left: 4cm; - marks: crop; /* crop | cross | none */ - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - } - - @page rotated { - size: landscape; - marks: none; /* crop | cross | none */ - background-color: #fff0f2; - margin-left: 3cm; - margin-right: 3cm; - } - @page rotated :first { - margin-top: 7cm; /* Top margin on first page 10cm */ - } - - h1.heading1 { color: #1188FF; - } - - h1.heading2 { color: #88FF11; - page-break-before: always; - page: standard; - } - h1.heading3 { color: #FF1188; - page-break-before: right; - } - h1.heading4 { color: #FF8811; - page-break-before: left; - page: bigsquare; - } - h1.heading5 { color: #11FF88; - page: smallsquare; - } - h1.heading6 { color: #8811FF; - page: rotated; - } - - br.paging { page-break-after: always; } - - body { font-family: DejaVuSansCondensed; font-size: 11pt; } - p { text-align: justify; margin-bottom: 4pt; margin-top:0pt; } - - hr { width: 70%; height: 1px; - text-align: center; color: #999999; - margin-top: 8pt; margin-bottom: 8pt; } - - a { color: #000066; font-style: normal; text-decoration: underline; - font-weight: normal; } - - pre { font-family: DejaVuSansMono; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; } - - h1 { font-weight: normal; font-size: 26pt; color: #000066; - font-family: DejaVuSansCondensed; margin-top: 18pt; margin-bottom: 6pt; - border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; - text-align: ; page-break-after:avoid; } - h2 { font-weight: bold; font-size: 12pt; color: #000066; - font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: 6pt; - border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; - text-align: ; text-transform: uppercase; page-break-after:avoid; } - h3 { font-weight: normal; font-size: 26pt; color: #000000; - font-family: DejaVuSansCondensed; margin-top: 0pt; margin-bottom: 6pt; - border-top: 0; border-bottom: 0; - text-align: ; page-break-after:avoid; } - h4 { font-weight: ; font-size: 13pt; color: #9f2b1e; - font-family: DejaVuSansCondensed; margin-top: 10pt; margin-bottom: 7pt; - text-align: ; margin-collapse:collapse; page-break-after:avoid; } - h5 { font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; - font-family: DejaVuSansCondensed; margin-top: 8pt; margin-bottom: 4pt; - text-align: ; page-break-after:avoid; } - h6 { font-weight: bold; font-size: 9.5pt; color: #333333; - font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: ; - text-align: ; page-break-after:avoid; } - diff --git a/mpdf/examples/mpdfstyletables.css b/mpdf/examples/mpdfstyletables.css deleted file mode 100644 index d97fe9d..0000000 --- a/mpdf/examples/mpdfstyletables.css +++ /dev/null @@ -1,122 +0,0 @@ - - body { font-family: 'DejaVu Sans Condensed'; font-size: 11pt; } - p { text-align: justify; margin-bottom: 4pt; margin-top:0pt; } - - table {font-family: 'DejaVu Sans Condensed'; font-size: 9pt; line-height: 1.2; - margin-top: 2pt; margin-bottom: 5pt; - border-collapse: collapse; } - - thead { font-weight: bold; vertical-align: bottom; } - tfoot { font-weight: bold; vertical-align: top; } - thead td { font-weight: bold; } - tfoot td { font-weight: bold; } - - .headerrow td, .headerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2; } - .footerrow td, .footerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2; } - - th { font-weight: bold; - vertical-align: top; - padding-left: 2mm; - padding-right: 2mm; - padding-top: 0.5mm; - padding-bottom: 0.5mm; - } - - td { padding-left: 2mm; - vertical-align: top; - padding-right: 2mm; - padding-top: 0.5mm; - padding-bottom: 0.5mm; - } - - th p { margin:0pt; } - td p { margin:0pt; } - - table.widecells td { - padding-left: 5mm; - padding-right: 5mm; - } - table.tallcells td { - padding-top: 3mm; - padding-bottom: 3mm; - } - - hr { width: 70%; height: 1px; - text-align: center; color: #999999; - margin-top: 8pt; margin-bottom: 8pt; } - - a { color: #000066; font-style: normal; text-decoration: underline; - font-weight: normal; } - - pre { font-family: 'DejaVu Sans Mono'; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; } - - h1 { font-weight: normal; font-size: 26pt; color: #000066; - font-family: 'DejaVu Sans Condensed'; margin-top: 18pt; margin-bottom: 6pt; - border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; - text-align: ; page-break-after:avoid; } - h2 { font-weight: bold; font-size: 12pt; color: #000066; - font-family: 'DejaVu Sans Condensed'; margin-top: 6pt; margin-bottom: 6pt; - border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; - text-align: ; text-transform:uppercase; page-break-after:avoid; } - h3 { font-weight: normal; font-size: 26pt; color: #000000; - font-family: 'DejaVu Sans Condensed'; margin-top: 0pt; margin-bottom: 6pt; - border-top: 0; border-bottom: 0; - text-align: ; page-break-after:avoid; } - h4 { font-weight: ; font-size: 13pt; color: #9f2b1e; - font-family: 'DejaVu Sans Condensed'; margin-top: 10pt; margin-bottom: 7pt; font-variant: small-caps; - text-align: ; margin-collapse:collapse; page-break-after:avoid; } - h5 { font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; - font-family: 'DejaVu Sans Condensed'; margin-top: 8pt; margin-bottom: 4pt; - text-align: ; page-break-after:avoid; } - h6 { font-weight: bold; font-size: 9.5pt; color: #333333; - font-family: 'DejaVu Sans Condensed'; margin-top: 6pt; margin-bottom: ; - text-align: ; page-break-after:avoid; } - - .breadcrumb { - text-align: right; font-size: 8pt; font-family: 'DejaVu Serif Condensed'; color: #666666; - font-weight: bold; font-style: normal; margin-bottom: 6pt; } - - .bpmTopic tbody tr:nth-child(even) { background-color: #f5f8f5; } - .bpmTopicC tbody tr:nth-child(even) { background-color: #f5f8f5; } - .bpmNoLines tbody tr:nth-child(even) { background-color: #f5f8f5; } - .bpmNoLinesC tbody tr:nth-child(even) { background-color: #f5f8f5; } - .bpmTopnTail tbody tr:nth-child(even) { background-color: #f5f8f5; } - .bpmTopnTailC tbody tr:nth-child(even) { background-color: #f5f8f5; } - - .evenrow td, .evenrow th { background-color: #f5f8f5; } - .oddrow td, .oddrow th { background-color: #e3ece4; } - - .bpmTopic { background-color: #e3ece4; } - .bpmTopicC { background-color: #e3ece4; } - .bpmNoLines { background-color: #e3ece4; } - .bpmNoLinesC { background-color: #e3ece4; } - .bpmClear { } - .bpmClearC { text-align: center; } - .bpmTopnTail { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;} - .bpmTopnTailC { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;} - .bpmTopnTailClear { topntail: 0.02cm solid #495b4a; } - .bpmTopnTailClearC { topntail: 0.02cm solid #495b4a; } - - .bpmTopicC td, .bpmTopicC td p { text-align: center; } - .bpmNoLinesC td, .bpmNoLinesC td p { text-align: center; } - .bpmClearC td, .bpmClearC td p { text-align: center; } - .bpmTopnTailC td, .bpmTopnTailC td p { text-align: center; } - .bpmTopnTailClearC td, .bpmTopnTailClearC td p { text-align: center; } - - .pmhMiddleCenter { text-align:center; vertical-align:middle; } - .pmhMiddleRight { text-align:right; vertical-align:middle; } - .pmhBottomCenter { text-align:center; vertical-align:bottom; } - .pmhBottomRight { text-align:right; vertical-align:bottom; } - .pmhTopCenter { text-align:center; vertical-align:top; } - .pmhTopRight { text-align:right; vertical-align:top; } - .pmhTopLeft { text-align:left; vertical-align:top; } - .pmhBottomLeft { text-align:left; vertical-align:bottom; } - .pmhMiddleLeft { text-align:left; vertical-align:middle; } - - .infobox { margin-top:10pt; background-color:#DDDDBB; text-align:center; border:1px solid #880000; } - - .bpmTopic td, .bpmTopic th { border-top: 1px solid #FFFFFF; } - .bpmTopicC td, .bpmTopicC th { border-top: 1px solid #FFFFFF; } - .bpmTopnTail td, .bpmTopnTail th { border-top: 1px solid #FFFFFF; } - .bpmTopnTailC td, .bpmTopnTailC th { border-top: 1px solid #FFFFFF; } - diff --git a/mpdf/examples/sample_basic.pdf b/mpdf/examples/sample_basic.pdf deleted file mode 100644 index 86c4d74..0000000 Binary files a/mpdf/examples/sample_basic.pdf and /dev/null differ diff --git a/mpdf/examples/sample_logoheader2.pdf b/mpdf/examples/sample_logoheader2.pdf deleted file mode 100644 index 946883d..0000000 Binary files a/mpdf/examples/sample_logoheader2.pdf and /dev/null differ diff --git a/mpdf/examples/sample_orientation2.pdf b/mpdf/examples/sample_orientation2.pdf deleted file mode 100644 index 84944d9..0000000 Binary files a/mpdf/examples/sample_orientation2.pdf and /dev/null differ diff --git a/mpdf/examples/sample_orientation3.pdf b/mpdf/examples/sample_orientation3.pdf deleted file mode 100644 index c23ca31..0000000 Binary files a/mpdf/examples/sample_orientation3.pdf and /dev/null differ diff --git a/mpdf/examples/sunset.jpg b/mpdf/examples/sunset.jpg deleted file mode 100644 index ddd5118..0000000 Binary files a/mpdf/examples/sunset.jpg and /dev/null differ diff --git a/mpdf/examples/test.pdf b/mpdf/examples/test.pdf deleted file mode 100644 index 322fee9..0000000 Binary files a/mpdf/examples/test.pdf and /dev/null differ diff --git a/mpdf/examples/tiger.bmp b/mpdf/examples/tiger.bmp deleted file mode 100644 index 176565d..0000000 Binary files a/mpdf/examples/tiger.bmp and /dev/null differ diff --git a/mpdf/examples/tiger.gif b/mpdf/examples/tiger.gif deleted file mode 100644 index 12081da..0000000 Binary files a/mpdf/examples/tiger.gif and /dev/null differ diff --git a/mpdf/examples/tiger.jpg b/mpdf/examples/tiger.jpg deleted file mode 100644 index a88e6b3..0000000 Binary files a/mpdf/examples/tiger.jpg and /dev/null differ diff --git a/mpdf/examples/tiger.php b/mpdf/examples/tiger.php deleted file mode 100644 index 55365ef..0000000 --- a/mpdf/examples/tiger.php +++ /dev/null @@ -1,19 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/examples/tiger.png b/mpdf/examples/tiger.png deleted file mode 100644 index 72c85ab..0000000 Binary files a/mpdf/examples/tiger.png and /dev/null differ diff --git a/mpdf/examples/tiger.svg b/mpdf/examples/tiger.svg deleted file mode 100644 index 66cf570..0000000 --- a/mpdf/examples/tiger.svg +++ /dev/null @@ -1,653 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/mpdf/examples/tiger.wmf b/mpdf/examples/tiger.wmf deleted file mode 100644 index 34c0b52..0000000 Binary files a/mpdf/examples/tiger.wmf and /dev/null differ diff --git a/mpdf/examples/tiger2.png b/mpdf/examples/tiger2.png deleted file mode 100644 index af42742..0000000 Binary files a/mpdf/examples/tiger2.png and /dev/null differ diff --git a/mpdf/examples/tiger2.wmf b/mpdf/examples/tiger2.wmf deleted file mode 100644 index c60c75a..0000000 Binary files a/mpdf/examples/tiger2.wmf and /dev/null differ diff --git a/mpdf/examples/tiger24trns.png b/mpdf/examples/tiger24trns.png deleted file mode 100644 index e3b3e0c..0000000 Binary files a/mpdf/examples/tiger24trns.png and /dev/null differ diff --git a/mpdf/examples/tiger300px300dpi.png b/mpdf/examples/tiger300px300dpi.png deleted file mode 100644 index 62f7405..0000000 Binary files a/mpdf/examples/tiger300px300dpi.png and /dev/null differ diff --git a/mpdf/examples/tiger300px96dpi.png b/mpdf/examples/tiger300px96dpi.png deleted file mode 100644 index 67174a7..0000000 Binary files a/mpdf/examples/tiger300px96dpi.png and /dev/null differ diff --git a/mpdf/examples/tiger8trns.gif b/mpdf/examples/tiger8trns.gif deleted file mode 100644 index d46053b..0000000 Binary files a/mpdf/examples/tiger8trns.gif and /dev/null differ diff --git a/mpdf/examples/tigercmyk.jpg b/mpdf/examples/tigercmyk.jpg deleted file mode 100644 index e67d5e2..0000000 Binary files a/mpdf/examples/tigercmyk.jpg and /dev/null differ diff --git a/mpdf/examples/tux.svg b/mpdf/examples/tux.svg deleted file mode 100644 index de8c869..0000000 --- a/mpdf/examples/tux.svg +++ /dev/null @@ -1,1487 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mpdf/examples/windmill.jpg b/mpdf/examples/windmill.jpg deleted file mode 100644 index 378a91c..0000000 Binary files a/mpdf/examples/windmill.jpg and /dev/null differ diff --git a/phpexcel/Examples/.gitignore b/phpexcel/Examples/.gitignore deleted file mode 100644 index 1888a98..0000000 --- a/phpexcel/Examples/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ - -*.xls -*.xlsx \ No newline at end of file diff --git a/phpexcel/Examples/01pharSimple.php b/phpexcel/Examples/01pharSimple.php deleted file mode 100644 index a880477..0000000 --- a/phpexcel/Examples/01pharSimple.php +++ /dev/null @@ -1,112 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once '../Build/PHPExcel.phar'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/01simple-download-ods.php b/phpexcel/Examples/01simple-download-ods.php deleted file mode 100644 index 574fb01..0000000 --- a/phpexcel/Examples/01simple-download-ods.php +++ /dev/null @@ -1,89 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Redirect output to a client’s web browser (OpenDocument) -header('Content-Type: application/vnd.oasis.opendocument.spreadsheet'); -header('Content-Disposition: attachment;filename="01simple.ods"'); -header('Cache-Control: max-age=0'); -// If you're serving to IE 9, then the following may be needed -header('Cache-Control: max-age=1'); - -// If you're serving to IE over SSL, then the following may be needed -header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past -header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified -header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 -header ('Pragma: public'); // HTTP/1.0 - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'OpenDocument'); -$objWriter->save('php://output'); -exit; diff --git a/phpexcel/Examples/01simple-download-pdf.php b/phpexcel/Examples/01simple-download-pdf.php deleted file mode 100644 index 287b0e8..0000000 --- a/phpexcel/Examples/01simple-download-pdf.php +++ /dev/null @@ -1,104 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PDF Test Document") - ->setSubject("PDF Test Document") - ->setDescription("Test document for PDF, generated using PHP classes.") - ->setKeywords("pdf php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); -$objPHPExcel->getActiveSheet()->setShowGridLines(false); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - '
' . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -// Redirect output to a client’s web browser (PDF) -header('Content-Type: application/pdf'); -header('Content-Disposition: attachment;filename="01simple.pdf"'); -header('Cache-Control: max-age=0'); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); -$objWriter->save('php://output'); -exit; diff --git a/phpexcel/Examples/01simple-download-xls.php b/phpexcel/Examples/01simple-download-xls.php deleted file mode 100644 index 60fc901..0000000 --- a/phpexcel/Examples/01simple-download-xls.php +++ /dev/null @@ -1,89 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Redirect output to a client’s web browser (Excel5) -header('Content-Type: application/vnd.ms-excel'); -header('Content-Disposition: attachment;filename="01simple.xls"'); -header('Cache-Control: max-age=0'); -// If you're serving to IE 9, then the following may be needed -header('Cache-Control: max-age=1'); - -// If you're serving to IE over SSL, then the following may be needed -header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past -header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified -header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 -header ('Pragma: public'); // HTTP/1.0 - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save('php://output'); -exit; diff --git a/phpexcel/Examples/01simple-download-xlsx.php b/phpexcel/Examples/01simple-download-xlsx.php deleted file mode 100644 index 538888e..0000000 --- a/phpexcel/Examples/01simple-download-xlsx.php +++ /dev/null @@ -1,89 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - -// Rename worksheet -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Redirect output to a client’s web browser (Excel2007) -header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); -header('Content-Disposition: attachment;filename="01simple.xlsx"'); -header('Cache-Control: max-age=0'); -// If you're serving to IE 9, then the following may be needed -header('Cache-Control: max-age=1'); - -// If you're serving to IE over SSL, then the following may be needed -header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past -header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified -header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 -header ('Pragma: public'); // HTTP/1.0 - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save('php://output'); -exit; diff --git a/phpexcel/Examples/01simple.php b/phpexcel/Examples/01simple.php deleted file mode 100644 index 965fefa..0000000 --- a/phpexcel/Examples/01simple.php +++ /dev/null @@ -1,118 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - - -$objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld"); -$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/01simplePCLZip.php b/phpexcel/Examples/01simplePCLZip.php deleted file mode 100644 index 0b7a46c..0000000 --- a/phpexcel/Examples/01simplePCLZip.php +++ /dev/null @@ -1,106 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - - -$objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld"); -$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -// Use PCLZip rather than ZipArchive to create the Excel2007 OfficeOpenXML file -PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/02types-xls.php b/phpexcel/Examples/02types-xls.php deleted file mode 100644 index cc1dc37..0000000 --- a/phpexcel/Examples/02types-xls.php +++ /dev/null @@ -1,183 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Set default font -echo date('H:i:s') , " Set default font" , EOL; -$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial') - ->setSize(10); - -// Add some data, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String') - ->setCellValue('B1', 'Simple') - ->setCellValue('C1', 'PHPExcel'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'String') - ->setCellValue('B2', 'Symbols') - ->setCellValue('C2', '!+&=()~§±æþ'); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'String') - ->setCellValue('B3', 'UTF-8') - ->setCellValue('C3', 'Создать MS Excel Книги из PHP скриптов'); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Number') - ->setCellValue('B4', 'Integer') - ->setCellValue('C4', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Number') - ->setCellValue('B5', 'Float') - ->setCellValue('C5', 34.56); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Number') - ->setCellValue('B6', 'Negative') - ->setCellValue('C6', -7.89); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Boolean') - ->setCellValue('B7', 'True') - ->setCellValue('C7', true); - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Boolean') - ->setCellValue('B8', 'False') - ->setCellValue('C8', false); - -$dateTimeNow = time(); -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Date/Time') - ->setCellValue('B9', 'Date') - ->setCellValue('C9', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C9')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Date/Time') - ->setCellValue('B10', 'Time') - ->setCellValue('C10', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C10')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); - -$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Date/Time') - ->setCellValue('B11', 'Date and Time') - ->setCellValue('C11', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C11')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME); - -$objPHPExcel->getActiveSheet()->setCellValue('A12', 'NULL') - ->setCellValue('C12', NULL); - -$objRichText = new PHPExcel_RichText(); -$objRichText->createText('你好 '); -$objPayable = $objRichText->createTextRun('你 好 吗?'); -$objPayable->getFont()->setBold(true); -$objPayable->getFont()->setItalic(true); -$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); - -$objRichText->createText(', unless specified otherwise on the invoice.'); - -$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text') - ->setCellValue('C13', $objRichText); - - -$objRichText2 = new PHPExcel_RichText(); -$objRichText2->createText("black text\n"); - -$objRed = $objRichText2->createTextRun("red text"); -$objRed->getFont()->setColor( new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_RED ) ); - -$objPHPExcel->getActiveSheet()->getCell("C14")->setValue($objRichText2); -$objPHPExcel->getActiveSheet()->getStyle("C14")->getAlignment()->setWrapText(true); - - -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Datatypes'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Reload workbook from saved file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load(str_replace('.php', '.xls', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to reload Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -var_dump($objPHPExcel->getActiveSheet()->toArray()); - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done testing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/02types.php b/phpexcel/Examples/02types.php deleted file mode 100644 index ff5421e..0000000 --- a/phpexcel/Examples/02types.php +++ /dev/null @@ -1,183 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Set default font -echo date('H:i:s') , " Set default font" , EOL; -$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial') - ->setSize(10); - -// Add some data, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String') - ->setCellValue('B1', 'Simple') - ->setCellValue('C1', 'PHPExcel'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'String') - ->setCellValue('B2', 'Symbols') - ->setCellValue('C2', '!+&=()~§±æþ'); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'String') - ->setCellValue('B3', 'UTF-8') - ->setCellValue('C3', 'Создать MS Excel Книги из PHP скриптов'); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Number') - ->setCellValue('B4', 'Integer') - ->setCellValue('C4', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Number') - ->setCellValue('B5', 'Float') - ->setCellValue('C5', 34.56); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Number') - ->setCellValue('B6', 'Negative') - ->setCellValue('C6', -7.89); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Boolean') - ->setCellValue('B7', 'True') - ->setCellValue('C7', true); - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Boolean') - ->setCellValue('B8', 'False') - ->setCellValue('C8', false); - -$dateTimeNow = time(); -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Date/Time') - ->setCellValue('B9', 'Date') - ->setCellValue('C9', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C9')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Date/Time') - ->setCellValue('B10', 'Time') - ->setCellValue('C10', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C10')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); - -$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Date/Time') - ->setCellValue('B11', 'Date and Time') - ->setCellValue('C11', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )); -$objPHPExcel->getActiveSheet()->getStyle('C11')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME); - -$objPHPExcel->getActiveSheet()->setCellValue('A12', 'NULL') - ->setCellValue('C12', NULL); - -$objRichText = new PHPExcel_RichText(); -$objRichText->createText('你好 '); - -$objPayable = $objRichText->createTextRun('你 好 吗?'); -$objPayable->getFont()->setBold(true); -$objPayable->getFont()->setItalic(true); -$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); - -$objRichText->createText(', unless specified otherwise on the invoice.'); - -$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text') - ->setCellValue('C13', $objRichText); - - -$objRichText2 = new PHPExcel_RichText(); -$objRichText2->createText("black text\n"); - -$objRed = $objRichText2->createTextRun("red text"); -$objRed->getFont()->setColor( new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_RED ) ); - -$objPHPExcel->getActiveSheet()->getCell("C14")->setValue($objRichText2); -$objPHPExcel->getActiveSheet()->getStyle("C14")->getAlignment()->setWrapText(true); - - -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Datatypes'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Reload workbook from saved file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load(str_replace('.php', '.xlsx', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to reload Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -var_dump($objPHPExcel->getActiveSheet()->toArray()); - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done testing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/03formulas.php b/phpexcel/Examples/03formulas.php deleted file mode 100644 index 1396717..0000000 --- a/phpexcel/Examples/03formulas.php +++ /dev/null @@ -1,149 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data, we will use some formulas here -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Sum:'); - -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range #1') - ->setCellValue('B2', 3) - ->setCellValue('B3', 7) - ->setCellValue('B4', 13) - ->setCellValue('B5', '=SUM(B2:B4)'); -echo date('H:i:s') , " Sum of Range #1 is " , - $objPHPExcel->getActiveSheet()->getCell('B5')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Range #2') - ->setCellValue('C2', 5) - ->setCellValue('C3', 11) - ->setCellValue('C4', 17) - ->setCellValue('C5', '=SUM(C2:C4)'); -echo date('H:i:s') , " Sum of Range #2 is " , - $objPHPExcel->getActiveSheet()->getCell('C5')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Total of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B7', '=SUM(B5:C5)'); -echo date('H:i:s') , " Sum of both Ranges is " , - $objPHPExcel->getActiveSheet()->getCell('B7')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Minimum of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B8', '=MIN(B2:C4)'); -echo date('H:i:s') , " Minimum value in either Range is " , - $objPHPExcel->getActiveSheet()->getCell('B8')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Maximum of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B9', '=MAX(B2:C4)'); -echo date('H:i:s') , " Maximum value in either Range is " , - $objPHPExcel->getActiveSheet()->getCell('B9')->getCalculatedValue() , EOL; - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Average of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('B10', '=AVERAGE(B2:C4)'); -echo date('H:i:s') , " Average value of both Ranges is " , - $objPHPExcel->getActiveSheet()->getCell('B10')->getCalculatedValue() , EOL; - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Formulas'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); - -// -// If we set Pre Calculated Formulas to true then PHPExcel will calculate all formulae in the -// workbook before saving. This adds time and memory overhead, and can cause some problems with formulae -// using functions or features (such as array formulae) that aren't yet supported by the calculation engine -// If the value is false (the default) for the Excel2007 Writer, then MS Excel (or the application used to -// open the file) will need to recalculate values itself to guarantee that the correct results are available. -// -//$objWriter->setPreCalculateFormulas(true); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/04printing.php b/phpexcel/Examples/04printing.php deleted file mode 100644 index 14358b0..0000000 --- a/phpexcel/Examples/04printing.php +++ /dev/null @@ -1,125 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data, we will use printing features -echo date('H:i:s') , " Add some data" , EOL; -for ($i = 1; $i < 200; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $i); - $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, 'Test value'); -} - -// Set header and footer. When no different headers for odd/even are used, odd header is assumed. -echo date('H:i:s') , " Set header/footer" , EOL; -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&G&C&HPlease treat this document as confidential!'); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); - -// Add a drawing to the header -echo date('H:i:s') , " Add a drawing to the header" , EOL; -$objDrawing = new PHPExcel_Worksheet_HeaderFooterDrawing(); -$objDrawing->setName('PHPExcel logo'); -$objDrawing->setPath('./images/phpexcel_logo.gif'); -$objDrawing->setHeight(36); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->addImage($objDrawing, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT); - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Printing'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/05featuredemo.inc.php b/phpexcel/Examples/05featuredemo.inc.php deleted file mode 100644 index b543ca4..0000000 --- a/phpexcel/Examples/05featuredemo.inc.php +++ /dev/null @@ -1,394 +0,0 @@ -getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet, representing sales data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Invoice'); -$objPHPExcel->getActiveSheet()->setCellValue('D1', PHPExcel_Shared_Date::PHPToExcel( gmmktime(0,0,0,date('m'),date('d'),date('Y')) )); -$objPHPExcel->getActiveSheet()->getStyle('D1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15); -$objPHPExcel->getActiveSheet()->setCellValue('E1', '#12566'); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Product Id'); -$objPHPExcel->getActiveSheet()->setCellValue('B3', 'Description'); -$objPHPExcel->getActiveSheet()->setCellValue('C3', 'Price'); -$objPHPExcel->getActiveSheet()->setCellValue('D3', 'Amount'); -$objPHPExcel->getActiveSheet()->setCellValue('E3', 'Total'); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', '1001'); -$objPHPExcel->getActiveSheet()->setCellValue('B4', 'PHP for dummies'); -$objPHPExcel->getActiveSheet()->setCellValue('C4', '20'); -$objPHPExcel->getActiveSheet()->setCellValue('D4', '1'); -$objPHPExcel->getActiveSheet()->setCellValue('E4', '=IF(D4<>"",C4*D4,"")'); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', '1012'); -$objPHPExcel->getActiveSheet()->setCellValue('B5', 'OpenXML for dummies'); -$objPHPExcel->getActiveSheet()->setCellValue('C5', '22'); -$objPHPExcel->getActiveSheet()->setCellValue('D5', '2'); -$objPHPExcel->getActiveSheet()->setCellValue('E5', '=IF(D5<>"",C5*D5,"")'); - -$objPHPExcel->getActiveSheet()->setCellValue('E6', '=IF(D6<>"",C6*D6,"")'); -$objPHPExcel->getActiveSheet()->setCellValue('E7', '=IF(D7<>"",C7*D7,"")'); -$objPHPExcel->getActiveSheet()->setCellValue('E8', '=IF(D8<>"",C8*D8,"")'); -$objPHPExcel->getActiveSheet()->setCellValue('E9', '=IF(D9<>"",C9*D9,"")'); - -$objPHPExcel->getActiveSheet()->setCellValue('D11', 'Total excl.:'); -$objPHPExcel->getActiveSheet()->setCellValue('E11', '=SUM(E4:E9)'); - -$objPHPExcel->getActiveSheet()->setCellValue('D12', 'VAT:'); -$objPHPExcel->getActiveSheet()->setCellValue('E12', '=E11*0.21'); - -$objPHPExcel->getActiveSheet()->setCellValue('D13', 'Total incl.:'); -$objPHPExcel->getActiveSheet()->setCellValue('E13', '=E11+E12'); - -// Add comment -echo date('H:i:s') , " Add comments" , EOL; - -$objPHPExcel->getActiveSheet()->getComment('E11')->setAuthor('PHPExcel'); -$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('PHPExcel:'); -$objCommentRichText->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun("\r\n"); -$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('Total amount on the current invoice, excluding VAT.'); - -$objPHPExcel->getActiveSheet()->getComment('E12')->setAuthor('PHPExcel'); -$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E12')->getText()->createTextRun('PHPExcel:'); -$objCommentRichText->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getComment('E12')->getText()->createTextRun("\r\n"); -$objPHPExcel->getActiveSheet()->getComment('E12')->getText()->createTextRun('Total amount of VAT on the current invoice.'); - -$objPHPExcel->getActiveSheet()->getComment('E13')->setAuthor('PHPExcel'); -$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E13')->getText()->createTextRun('PHPExcel:'); -$objCommentRichText->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getComment('E13')->getText()->createTextRun("\r\n"); -$objPHPExcel->getActiveSheet()->getComment('E13')->getText()->createTextRun('Total amount on the current invoice, including VAT.'); -$objPHPExcel->getActiveSheet()->getComment('E13')->setWidth('100pt'); -$objPHPExcel->getActiveSheet()->getComment('E13')->setHeight('100pt'); -$objPHPExcel->getActiveSheet()->getComment('E13')->setMarginLeft('150pt'); -$objPHPExcel->getActiveSheet()->getComment('E13')->getFillColor()->setRGB('EEEEEE'); - - -// Add rich-text string -echo date('H:i:s') , " Add rich-text string" , EOL; -$objRichText = new PHPExcel_RichText(); -$objRichText->createText('This invoice is '); - -$objPayable = $objRichText->createTextRun('payable within thirty days after the end of the month'); -$objPayable->getFont()->setBold(true); -$objPayable->getFont()->setItalic(true); -$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); - -$objRichText->createText(', unless specified otherwise on the invoice.'); - -$objPHPExcel->getActiveSheet()->getCell('A18')->setValue($objRichText); - -// Merge cells -echo date('H:i:s') , " Merge cells" , EOL; -$objPHPExcel->getActiveSheet()->mergeCells('A18:E22'); -$objPHPExcel->getActiveSheet()->mergeCells('A28:B28'); // Just to test... -$objPHPExcel->getActiveSheet()->unmergeCells('A28:B28'); // Just to test... - -// Protect cells -echo date('H:i:s') , " Protect cells" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // Needs to be set to true in order to enable any worksheet protection! -$objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel'); - -// Set cell number formats -echo date('H:i:s') , " Set cell number formats" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('E4:E13')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12); -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12); - -// Set fonts -echo date('H:i:s') , " Set fonts" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setName('Candara'); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(20); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); -$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); - -$objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); -$objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); - -$objPHPExcel->getActiveSheet()->getStyle('D13')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('E13')->getFont()->setBold(true); - -// Set alignments -echo date('H:i:s') , " Set alignments" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('D11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); -$objPHPExcel->getActiveSheet()->getStyle('D12')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); -$objPHPExcel->getActiveSheet()->getStyle('D13')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - -$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY); -$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); - -$objPHPExcel->getActiveSheet()->getStyle('B5')->getAlignment()->setShrinkToFit(true); - -// Set thin black border outline around column -echo date('H:i:s') , " Set thin black border outline around column" , EOL; -$styleThinBlackBorderOutline = array( - 'borders' => array( - 'outline' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN, - 'color' => array('argb' => 'FF000000'), - ), - ), -); -$objPHPExcel->getActiveSheet()->getStyle('A4:E10')->applyFromArray($styleThinBlackBorderOutline); - - -// Set thick brown border outline around "Total" -echo date('H:i:s') , " Set thick brown border outline around Total" , EOL; -$styleThickBrownBorderOutline = array( - 'borders' => array( - 'outline' => array( - 'style' => PHPExcel_Style_Border::BORDER_THICK, - 'color' => array('argb' => 'FF993300'), - ), - ), -); -$objPHPExcel->getActiveSheet()->getStyle('D13:E13')->applyFromArray($styleThickBrownBorderOutline); - -// Set fills -echo date('H:i:s') , " Set fills" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:E1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); -$objPHPExcel->getActiveSheet()->getStyle('A1:E1')->getFill()->getStartColor()->setARGB('FF808080'); - -// Set style for header row using alternative method -echo date('H:i:s') , " Set style for header row using alternative method" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A3:E3')->applyFromArray( - array( - 'font' => array( - 'bold' => true - ), - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT, - ), - 'borders' => array( - 'top' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ), - 'fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR, - 'rotation' => 90, - 'startcolor' => array( - 'argb' => 'FFA0A0A0' - ), - 'endcolor' => array( - 'argb' => 'FFFFFFFF' - ) - ) - ) -); - -$objPHPExcel->getActiveSheet()->getStyle('A3')->applyFromArray( - array( - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT, - ), - 'borders' => array( - 'left' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ) - ) -); - -$objPHPExcel->getActiveSheet()->getStyle('B3')->applyFromArray( - array( - 'alignment' => array( - 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT, - ) - ) -); - -$objPHPExcel->getActiveSheet()->getStyle('E3')->applyFromArray( - array( - 'borders' => array( - 'right' => array( - 'style' => PHPExcel_Style_Border::BORDER_THIN - ) - ) - ) -); - -// Unprotect a cell -echo date('H:i:s') , " Unprotect a cell" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('B1')->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); - -// Add a hyperlink to the sheet -echo date('H:i:s') , " Add a hyperlink to an external website" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('E26', 'www.phpexcel.net'); -$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setUrl('http://www.phpexcel.net'); -$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setTooltip('Navigate to website'); -$objPHPExcel->getActiveSheet()->getStyle('E26')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - -echo date('H:i:s') , " Add a hyperlink to another cell on a different worksheet within the workbook" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('E27', 'Terms and conditions'); -$objPHPExcel->getActiveSheet()->getCell('E27')->getHyperlink()->setUrl("sheet://'Terms and conditions'!A1"); -$objPHPExcel->getActiveSheet()->getCell('E27')->getHyperlink()->setTooltip('Review terms and conditions'); -$objPHPExcel->getActiveSheet()->getStyle('E27')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('Logo'); -$objDrawing->setDescription('Logo'); -$objDrawing->setPath('./images/officelogo.jpg'); -$objDrawing->setHeight(36); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('Paid'); -$objDrawing->setDescription('Paid'); -$objDrawing->setPath('./images/paid.png'); -$objDrawing->setCoordinates('B15'); -$objDrawing->setOffsetX(110); -$objDrawing->setRotation(25); -$objDrawing->getShadow()->setVisible(true); -$objDrawing->getShadow()->setDirection(45); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('PHPExcel logo'); -$objDrawing->setDescription('PHPExcel logo'); -$objDrawing->setPath('./images/phpexcel_logo.gif'); -$objDrawing->setHeight(36); -$objDrawing->setCoordinates('D24'); -$objDrawing->setOffsetX(10); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Play around with inserting and removing rows and columns -echo date('H:i:s') , " Play around with inserting and removing rows and columns" , EOL; -$objPHPExcel->getActiveSheet()->insertNewRowBefore(6, 10); -$objPHPExcel->getActiveSheet()->removeRow(6, 10); -$objPHPExcel->getActiveSheet()->insertNewColumnBefore('E', 5); -$objPHPExcel->getActiveSheet()->removeColumn('E', 5); - -// Set header and footer. When no different headers for odd/even are used, odd header is assumed. -echo date('H:i:s') , " Set header/footer" , EOL; -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BInvoice&RPrinted on &D'); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - -// Rename first worksheet -echo date('H:i:s') , " Rename first worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Invoice'); - - -// Create a new worksheet, after the default sheet -echo date('H:i:s') , " Create a second Worksheet object" , EOL; -$objPHPExcel->createSheet(); - -// Llorem ipsum... -$sLloremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus eget ante. Sed cursus nunc semper tortor. Aliquam luctus purus non elit. Fusce vel elit commodo sapien dignissim dignissim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur accumsan magna sed massa. Nullam bibendum quam ac ipsum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin augue. Praesent malesuada justo sed orci. Pellentesque lacus ligula, sodales quis, ultricies a, ultricies vitae, elit. Sed luctus consectetuer dolor. Vivamus vel sem ut nisi sodales accumsan. Nunc et felis. Suspendisse semper viverra odio. Morbi at odio. Integer a orci a purus venenatis molestie. Nam mattis. Praesent rhoncus, nisi vel mattis auctor, neque nisi faucibus sem, non dapibus elit pede ac nisl. Cras turpis.'; - -// Add some data to the second sheet, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(1); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Terms and conditions'); -$objPHPExcel->getActiveSheet()->setCellValue('A3', $sLloremIpsum); -$objPHPExcel->getActiveSheet()->setCellValue('A4', $sLloremIpsum); -$objPHPExcel->getActiveSheet()->setCellValue('A5', $sLloremIpsum); -$objPHPExcel->getActiveSheet()->setCellValue('A6', $sLloremIpsum); - -// Set the worksheet tab color -echo date('H:i:s') , " Set the worksheet tab color" , EOL; -$objPHPExcel->getActiveSheet()->getTabColor()->setARGB('FF0094FF');; - -// Set alignments -echo date('H:i:s') , " Set alignments" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A3:A6')->getAlignment()->setWrapText(true); - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(80); - -// Set fonts -echo date('H:i:s') , " Set fonts" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('Candara'); -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20); -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); - -$objPHPExcel->getActiveSheet()->getStyle('A3:A6')->getFont()->setSize(8); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_Drawing(); -$objDrawing->setName('Terms and conditions'); -$objDrawing->setDescription('Terms and conditions'); -$objDrawing->setPath('./images/termsconditions.jpg'); -$objDrawing->setCoordinates('B14'); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - -// Rename second worksheet -echo date('H:i:s') , " Rename second worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Terms and conditions'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); diff --git a/phpexcel/Examples/05featuredemo.php b/phpexcel/Examples/05featuredemo.php deleted file mode 100644 index 66d4980..0000000 --- a/phpexcel/Examples/05featuredemo.php +++ /dev/null @@ -1,78 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php b/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php deleted file mode 100644 index cbdb59b..0000000 --- a/phpexcel/Examples/06largescale-with-cellcaching-sqlite.php +++ /dev/null @@ -1,129 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_sqlite; -if (PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { - echo date('H:i:s') , " Enable Cell Caching using " , $cacheMethod , " method" , EOL; -} else { - echo date('H:i:s') , " Unable to set Cell Caching using " , $cacheMethod , " method, reverting to memory" , EOL; -} - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php b/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php deleted file mode 100644 index ca04f85..0000000 --- a/phpexcel/Examples/06largescale-with-cellcaching-sqlite3.php +++ /dev/null @@ -1,129 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_sqlite3; -if (PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { - echo date('H:i:s') , " Enable Cell Caching using " , $cacheMethod , " method" , EOL; -} else { - echo date('H:i:s') , " Unable to set Cell Caching using " , $cacheMethod , " method, reverting to memory" , EOL; -} - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/06largescale-with-cellcaching.php b/phpexcel/Examples/06largescale-with-cellcaching.php deleted file mode 100644 index aa23b8c..0000000 --- a/phpexcel/Examples/06largescale-with-cellcaching.php +++ /dev/null @@ -1,128 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip; -if (!PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) { - die($cacheMethod . " caching method is not available" . EOL); -} -echo date('H:i:s') , " Enable Cell Caching using " , $cacheMethod , " method" , EOL; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/06largescale-xls.php b/phpexcel/Examples/06largescale-xls.php deleted file mode 100644 index 00137ad..0000000 --- a/phpexcel/Examples/06largescale-xls.php +++ /dev/null @@ -1,136 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -/* -After doing some test, I've got these results benchmarked -for writing to Excel2007: - - Number of rows Seconds to generate - 200 3 - 500 4 - 1000 6 - 2000 12 - 4000 36 - 8000 64 - 15000 465 -*/ - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/06largescale.php b/phpexcel/Examples/06largescale.php deleted file mode 100644 index b0fa440..0000000 --- a/phpexcel/Examples/06largescale.php +++ /dev/null @@ -1,136 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -/* -After doing some test, I've got these results benchmarked -for writing to Excel2007: - - Number of rows Seconds to generate - 200 3 - 500 4 - 1000 6 - 2000 12 - 4000 36 - 8000 64 - 15000 465 -*/ - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname"); -$objPHPExcel->getActiveSheet()->setCellValue('B1', "Lastname"); -$objPHPExcel->getActiveSheet()->setCellValue('C1', "Phone"); -$objPHPExcel->getActiveSheet()->setCellValue('D1', "Fax"); -$objPHPExcel->getActiveSheet()->setCellValue('E1', "Is Client ?"); - - -// Hide "Phone" and "fax" column -echo date('H:i:s') , " Hide 'Phone' and 'fax' columns" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); - - -// Set outline levels -echo date('H:i:s') , " Set outline levels" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1) - ->setVisible(false) - ->setCollapsed(true); - -// Freeze panes -echo date('H:i:s') , " Freeze panes" , EOL; -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - -// Rows to repeat at top -echo date('H:i:s') , " Rows to repeat at top" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); - - -// Add data -for ($i = 2; $i <= 5000; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i") - ->setCellValue('B' . $i, "LName $i") - ->setCellValue('C' . $i, "PhoneNo $i") - ->setCellValue('D' . $i, "FaxNo $i") - ->setCellValue('E' . $i, true); -} - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/07reader.php b/phpexcel/Examples/07reader.php deleted file mode 100644 index 616b662..0000000 --- a/phpexcel/Examples/07reader.php +++ /dev/null @@ -1,76 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("05featuredemo.xlsx")) { - exit("Please run 05featuredemo.php first." . EOL); -} - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load("05featuredemo.xlsx"); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/07readerPCLZip.php b/phpexcel/Examples/07readerPCLZip.php deleted file mode 100644 index 90e8590..0000000 --- a/phpexcel/Examples/07readerPCLZip.php +++ /dev/null @@ -1,79 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("05featuredemo.xlsx")) { - exit("Please run 05featuredemo.php first." . EOL); -} - -// Use PCLZip rather than ZipArchive to read the Excel2007 OfficeOpenXML file -PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP); - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load("05featuredemo.xlsx"); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/08conditionalformatting.php b/phpexcel/Examples/08conditionalformatting.php deleted file mode 100644 index f65ec9e..0000000 --- a/phpexcel/Examples/08conditionalformatting.php +++ /dev/null @@ -1,189 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet, representing sales data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Description') - ->setCellValue('B1', 'Amount'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Paycheck received') - ->setCellValue('B2', 100); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Cup of coffee bought') - ->setCellValue('B3', -1.5); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Cup of coffee bought') - ->setCellValue('B4', -1.5); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Cup of tea bought') - ->setCellValue('B5', -1.2); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Found some money') - ->setCellValue('B6', 8); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Total:') - ->setCellValue('B7', '=SUM(B2:B6)'); - - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30); -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12); - - -// Add conditional formatting -echo date('H:i:s') , " Add conditional formatting" , EOL; -$objConditional1 = new PHPExcel_Style_Conditional(); -$objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_BETWEEN) - ->addCondition('200') - ->addCondition('400'); -$objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_YELLOW); -$objConditional1->getStyle()->getFont()->setBold(true); -$objConditional1->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -$objConditional2 = new PHPExcel_Style_Conditional(); -$objConditional2->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN) - ->addCondition('0'); -$objConditional2->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); -$objConditional2->getStyle()->getFont()->setItalic(true); -$objConditional2->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -$objConditional3 = new PHPExcel_Style_Conditional(); -$objConditional3->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL) - ->addCondition('0'); -$objConditional3->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_GREEN); -$objConditional3->getStyle()->getFont()->setItalic(true); -$objConditional3->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); - -$conditionalStyles = $objPHPExcel->getActiveSheet()->getStyle('B2')->getConditionalStyles(); -array_push($conditionalStyles, $objConditional1); -array_push($conditionalStyles, $objConditional2); -array_push($conditionalStyles, $objConditional3); -$objPHPExcel->getActiveSheet()->getStyle('B2')->setConditionalStyles($conditionalStyles); - - -// duplicate the conditional styles across a range of cells -echo date('H:i:s') , " Duplicate the conditional formatting across a range of cells" , EOL; -$objPHPExcel->getActiveSheet()->duplicateConditionalStyle( - $objPHPExcel->getActiveSheet()->getStyle('B2')->getConditionalStyles(), - 'B3:B7' - ); - - -// Set fonts -echo date('H:i:s') , " Set fonts" , EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:B1')->getFont()->setBold(true); -//$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A7:B7')->getFont()->setBold(true); -//$objPHPExcel->getActiveSheet()->getStyle('B7')->getFont()->setBold(true); - - -// Set header and footer. When no different headers for odd/even are used, odd header is assumed. -echo date('H:i:s') , " Set header/footer" , EOL; -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BPersonal cash register&RPrinted on &D'); -$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N'); - - -// Set page orientation and size -echo date('H:i:s') , " Set page orientation and size" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); -$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Invoice'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/08conditionalformatting2.php b/phpexcel/Examples/08conditionalformatting2.php deleted file mode 100644 index bbe084a..0000000 --- a/phpexcel/Examples/08conditionalformatting2.php +++ /dev/null @@ -1,136 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet, representing sales data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet() - ->setCellValue('A1', '-0.5') - ->setCellValue('A2', '-0.25') - ->setCellValue('A3', '0.0') - ->setCellValue('A4', '0.25') - ->setCellValue('A5', '0.5') - ->setCellValue('A6', '0.75') - ->setCellValue('A7', '1.0') - ->setCellValue('A8', '1.25') -; - -$objPHPExcel->getActiveSheet()->getStyle('A1:A8') - ->getNumberFormat() - ->setFormatCode( - PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00 - ); - - -// Add conditional formatting -echo date('H:i:s') , " Add conditional formatting" , EOL; -$objConditional1 = new PHPExcel_Style_Conditional(); -$objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN) - ->addCondition('0'); -$objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); - -$objConditional3 = new PHPExcel_Style_Conditional(); -$objConditional3->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS) - ->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL) - ->addCondition('1'); -$objConditional3->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_GREEN); - -$conditionalStyles = $objPHPExcel->getActiveSheet()->getStyle('A1')->getConditionalStyles(); -array_push($conditionalStyles, $objConditional1); -array_push($conditionalStyles, $objConditional3); -$objPHPExcel->getActiveSheet()->getStyle('A1')->setConditionalStyles($conditionalStyles); - - -// duplicate the conditional styles across a range of cells -echo date('H:i:s') , " Duplicate the conditional formatting across a range of cells" , EOL; -$objPHPExcel->getActiveSheet()->duplicateConditionalStyle( - $objPHPExcel->getActiveSheet()->getStyle('A1')->getConditionalStyles(), - 'A2:A8' - ); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/09pagebreaks.php b/phpexcel/Examples/09pagebreaks.php deleted file mode 100644 index 6b8c185..0000000 --- a/phpexcel/Examples/09pagebreaks.php +++ /dev/null @@ -1,134 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data and page breaks" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Firstname") - ->setCellValue('B1', "Lastname") - ->setCellValue('C1', "Phone") - ->setCellValue('D1', "Fax") - ->setCellValue('E1', "Is Client ?"); - - -// Add data -for ($i = 2; $i <= 50; $i++) { - $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, "FName $i"); - $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, "LName $i"); - $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, "PhoneNo $i"); - $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, "FaxNo $i"); - $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, true); - - // Add page breaks every 10 rows - if ($i % 10 == 0) { - // Add a page break - $objPHPExcel->getActiveSheet()->setBreak( 'A' . $i, PHPExcel_Worksheet::BREAK_ROW ); - } -} - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setTitle('Printing Options'); - -// Set print headers -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setOddHeader('&C&24&K0000FF&B&U&A'); -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setEvenHeader('&C&24&K0000FF&B&U&A'); - -// Set print footers -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setOddFooter('&R&D &T&C&F&LPage &P / &N'); -$objPHPExcel->getActiveSheet() - ->getHeaderFooter()->setEvenFooter('&L&D &T&C&F&RPage &P / &N'); - - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/10autofilter-selection-1.php b/phpexcel/Examples/10autofilter-selection-1.php deleted file mode 100644 index 7542a52..0000000 --- a/phpexcel/Examples/10autofilter-selection-1.php +++ /dev/null @@ -1,221 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Financial Year') - ->setCellValue('B1', 'Financial Period') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Date') - ->setCellValue('E1', 'Sales Value') - ->setCellValue('F1', 'Expenditure') - ; -$startYear = $endYear = $currentYear = date('Y'); -$startYear--; -$endYear++; - -$years = range($startYear,$endYear); -$periods = range(1,12); -$countries = array( 'United States', 'UK', 'France', 'Germany', - 'Italy', 'Spain', 'Portugal', 'Japan' - ); - -$row = 2; -foreach($years as $year) { - foreach($periods as $period) { - foreach($countries as $country) { - $endDays = date('t',mktime(0,0,0,$period,1,$year)); - for($i = 1; $i <= $endDays; ++$i) { - $eDate = PHPExcel_Shared_Date::FormattedPHPToExcel( - $year, - $period, - $i - ); - $value = rand(500,1000) * (1 + rand(-0.25,+0.25)); - $salesValue = $invoiceValue = NULL; - $incomeOrExpenditure = rand(-1,1); - if ($incomeOrExpenditure == -1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = NULL; - } elseif ($incomeOrExpenditure == 1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } else { - $expenditure = NULL; - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } - $dataArray = array( $year, - $period, - $country, - $eDate, - $income, - $expenditure, - ); - $objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A'.$row++); - } - } - } -} -$row--; - - -// Set styling -echo date('H:i:s').' Set styling'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(TRUE); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12.5); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10.5); -$objPHPExcel->getActiveSheet()->getStyle('D2:D'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); -$objPHPExcel->getActiveSheet()->getStyle('E2:F'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); -$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(14); -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - - -// Set autofilter range -echo date('H:i:s').' Set autofilter range'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active filters -$autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); -echo date('H:i:s').' Set active filters'.EOL; -// Filter the Country column on a filter value of countries beginning with the letter U (or Japan) -// We use * as a wildcard, so specify as U* and using a wildcard requires customFilter -$autoFilter->getColumn('C') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'u*' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -$autoFilter->getColumn('C') - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'japan' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -// Filter the Date column on a filter value of the first day of every period of the current year -// We us a dateGroup ruletype for this, although it is still a standard filter -foreach($periods as $period) { - $endDate = date('t',mktime(0,0,0,$period,1,$currentYear)); - - $autoFilter->getColumn('D') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - array( - 'year' => $currentYear, - 'month' => $period, - 'day' => $endDate - ) - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP); -} -// Display only sales values that are blank -// Standard filter, operator equals, and value of NULL -$autoFilter->getColumn('E') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - '' - ); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s').' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB'.EOL; - -// Echo done -echo date('H:i:s').' Done writing files'.EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/10autofilter-selection-2.php b/phpexcel/Examples/10autofilter-selection-2.php deleted file mode 100644 index c89173f..0000000 --- a/phpexcel/Examples/10autofilter-selection-2.php +++ /dev/null @@ -1,213 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Financial Year') - ->setCellValue('B1', 'Financial Period') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Date') - ->setCellValue('E1', 'Sales Value') - ->setCellValue('F1', 'Expenditure') - ; -$startYear = $endYear = $currentYear = date('Y'); -$startYear--; -$endYear++; - -$years = range($startYear,$endYear); -$periods = range(1,12); -$countries = array( 'United States', 'UK', 'France', 'Germany', - 'Italy', 'Spain', 'Portugal', 'Japan' - ); - -$row = 2; -foreach($years as $year) { - foreach($periods as $period) { - foreach($countries as $country) { - $endDays = date('t',mktime(0,0,0,$period,1,$year)); - for($i = 1; $i <= $endDays; ++$i) { - $eDate = PHPExcel_Shared_Date::FormattedPHPToExcel( - $year, - $period, - $i - ); - $value = rand(500,1000) * (1 + rand(-0.25,+0.25)); - $salesValue = $invoiceValue = NULL; - $incomeOrExpenditure = rand(-1,1); - if ($incomeOrExpenditure == -1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = NULL; - } elseif ($incomeOrExpenditure == 1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } else { - $expenditure = NULL; - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } - $dataArray = array( $year, - $period, - $country, - $eDate, - $income, - $expenditure, - ); - $objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A'.$row++); - } - } - } -} -$row--; - - -// Set styling -echo date('H:i:s').' Set styling'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(TRUE); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12.5); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10.5); -$objPHPExcel->getActiveSheet()->getStyle('D2:D'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); -$objPHPExcel->getActiveSheet()->getStyle('E2:F'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); -$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(14); -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - - -// Set autofilter range -echo date('H:i:s').' Set autofilter range'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active filters -$autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); -echo date('H:i:s').' Set active filters'.EOL; -// Filter the Country column on a filter value of Germany -// As it's just a simple value filter, we can use FILTERTYPE_FILTER -$autoFilter->getColumn('C') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'Germany' - ); -// Filter the Date column on a filter value of the year to date -$autoFilter->getColumn('D') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - NULL, - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER); -// Display only sales values that are between 400 and 600 -$autoFilter->getColumn('E') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL, - 400 - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -$autoFilter->getColumn('E') - ->setJoin(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL, - 600 - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s').' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB'.EOL; - -// Echo done -echo date('H:i:s').' Done writing files'.EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/10autofilter-selection-display.php b/phpexcel/Examples/10autofilter-selection-display.php deleted file mode 100644 index cf2b8ac..0000000 --- a/phpexcel/Examples/10autofilter-selection-display.php +++ /dev/null @@ -1,198 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Financial Year') - ->setCellValue('B1', 'Financial Period') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Date') - ->setCellValue('E1', 'Sales Value') - ->setCellValue('F1', 'Expenditure') - ; -$startYear = $endYear = $currentYear = date('Y'); -$startYear--; -$endYear++; - -$years = range($startYear,$endYear); -$periods = range(1,12); -$countries = array( 'United States', 'UK', 'France', 'Germany', - 'Italy', 'Spain', 'Portugal', 'Japan' - ); - -$row = 2; -foreach($years as $year) { - foreach($periods as $period) { - foreach($countries as $country) { - $endDays = date('t',mktime(0,0,0,$period,1,$year)); - for($i = 1; $i <= $endDays; ++$i) { - $eDate = PHPExcel_Shared_Date::FormattedPHPToExcel( - $year, - $period, - $i - ); - $value = rand(500,1000) * (1 + rand(-0.25,+0.25)); - $salesValue = $invoiceValue = NULL; - $incomeOrExpenditure = rand(-1,1); - if ($incomeOrExpenditure == -1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = NULL; - } elseif ($incomeOrExpenditure == 1) { - $expenditure = rand(-500,-1000) * (1 + rand(-0.25,+0.25)); - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } else { - $expenditure = NULL; - $income = rand(500,1000) * (1 + rand(-0.25,+0.25));; - } - $dataArray = array( $year, - $period, - $country, - $eDate, - $income, - $expenditure, - ); - $objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A'.$row++); - } - } - } -} -$row--; - - -// Set styling -echo date('H:i:s').' Set styling'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getFont()->setBold(true); -$objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(TRUE); -$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12.5); -$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10.5); -$objPHPExcel->getActiveSheet()->getStyle('D2:D'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); -$objPHPExcel->getActiveSheet()->getStyle('E2:F'.$row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); -$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(14); -$objPHPExcel->getActiveSheet()->freezePane('A2'); - - - -// Set autofilter range -echo date('H:i:s').' Set autofilter range'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active filters -$autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); -echo date('H:i:s').' Set active filters'.EOL; -// Filter the Country column on a filter value of countries beginning with the letter U (or Japan) -// We use * as a wildcard, so specify as U* and using a wildcard requires customFilter -$autoFilter->getColumn('C') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'u*' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -$autoFilter->getColumn('C') - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - 'japan' - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); -// Filter the Date column on a filter value of the first day of every period of the current year -// We us a dateGroup ruletype for this, although it is still a standard filter -foreach($periods as $period) { - $endDate = date('t',mktime(0,0,0,$period,1,$currentYear)); - - $autoFilter->getColumn('D') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - array( - 'year' => $currentYear, - 'month' => $period, - 'day' => $endDate - ) - ) - ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP); -} -// Display only sales values that are blank -// Standard filter, operator equals, and value of NULL -$autoFilter->getColumn('E') - ->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) - ->createRule() - ->setRule( - PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, - '' - ); - -// Execute filtering -echo date('H:i:s').' Execute filtering'.EOL; -$autoFilter->showHideRows(); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Display Results of filtering -echo date('H:i:s').' Display filtered rows'.EOL; -foreach ($objPHPExcel->getActiveSheet()->getRowIterator() as $row) { - if ($objPHPExcel->getActiveSheet()->getRowDimension($row->getRowIndex())->getVisible()) { - echo ' Row number - ' , $row->getRowIndex() , ' '; - echo $objPHPExcel->getActiveSheet()->getCell('C'.$row->getRowIndex())->getValue(), ' '; - echo $objPHPExcel->getActiveSheet()->getCell('D'.$row->getRowIndex())->getFormattedValue(), ' '; - echo EOL; - } -} diff --git a/phpexcel/Examples/10autofilter.php b/phpexcel/Examples/10autofilter.php deleted file mode 100644 index ea3f763..0000000 --- a/phpexcel/Examples/10autofilter.php +++ /dev/null @@ -1,171 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -// Create new PHPExcel object -echo date('H:i:s').' Create new PHPExcel object'.EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s').' Set document properties'.EOL; -$objPHPExcel->getProperties()->setCreator('Maarten Balliauw') - ->setLastModifiedBy('Maarten Balliauw') - ->setTitle('PHPExcel Test Document') - ->setSubject('PHPExcel Test Document') - ->setDescription('Test document for PHPExcel, generated using PHP classes.') - ->setKeywords('office PHPExcel php') - ->setCategory('Test result file'); - -// Create the worksheet -echo date('H:i:s').' Add data'.EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Year') - ->setCellValue('B1', 'Quarter') - ->setCellValue('C1', 'Country') - ->setCellValue('D1', 'Sales'); - -$dataArray = array(array('2010', 'Q1', 'United States', 790), - array('2010', 'Q2', 'United States', 730), - array('2010', 'Q3', 'United States', 860), - array('2010', 'Q4', 'United States', 850), - array('2011', 'Q1', 'United States', 800), - array('2011', 'Q2', 'United States', 700), - array('2011', 'Q3', 'United States', 900), - array('2011', 'Q4', 'United States', 950), - array('2010', 'Q1', 'Belgium', 380), - array('2010', 'Q2', 'Belgium', 390), - array('2010', 'Q3', 'Belgium', 420), - array('2010', 'Q4', 'Belgium', 460), - array('2011', 'Q1', 'Belgium', 400), - array('2011', 'Q2', 'Belgium', 350), - array('2011', 'Q3', 'Belgium', 450), - array('2011', 'Q4', 'Belgium', 500), - array('2010', 'Q1', 'UK', 690), - array('2010', 'Q2', 'UK', 610), - array('2010', 'Q3', 'UK', 620), - array('2010', 'Q4', 'UK', 600), - array('2011', 'Q1', 'UK', 720), - array('2011', 'Q2', 'UK', 650), - array('2011', 'Q3', 'UK', 580), - array('2011', 'Q4', 'UK', 510), - array('2010', 'Q1', 'France', 510), - array('2010', 'Q2', 'France', 490), - array('2010', 'Q3', 'France', 460), - array('2010', 'Q4', 'France', 590), - array('2011', 'Q1', 'France', 620), - array('2011', 'Q2', 'France', 650), - array('2011', 'Q3', 'France', 415), - array('2011', 'Q4', 'France', 570), - array('2010', 'Q1', 'Germany', 720), - array('2010', 'Q2', 'Germany', 680), - array('2010', 'Q3', 'Germany', 640), - array('2010', 'Q4', 'Germany', 660), - array('2011', 'Q1', 'Germany', 680), - array('2011', 'Q2', 'Germany', 620), - array('2011', 'Q3', 'Germany', 710), - array('2011', 'Q4', 'Germany', 690), - array('2010', 'Q1', 'Spain', 510), - array('2010', 'Q2', 'Spain', 490), - array('2010', 'Q3', 'Spain', 470), - array('2010', 'Q4', 'Spain', 420), - array('2011', 'Q1', 'Spain', 460), - array('2011', 'Q2', 'Spain', 390), - array('2011', 'Q3', 'Spain', 430), - array('2011', 'Q4', 'Spain', 415), - array('2010', 'Q1', 'Italy', 440), - array('2010', 'Q2', 'Italy', 410), - array('2010', 'Q3', 'Italy', 420), - array('2010', 'Q4', 'Italy', 450), - array('2011', 'Q1', 'Italy', 430), - array('2011', 'Q2', 'Italy', 370), - array('2011', 'Q3', 'Italy', 350), - array('2011', 'Q4', 'Italy', 335), - ); -$objPHPExcel->getActiveSheet()->fromArray($dataArray, NULL, 'A2'); - -// Set title row bold -echo date('H:i:s').' Set title row bold'.EOL; -$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true); - -// Set autofilter -echo date('H:i:s').' Set autofilter'.EOL; -// Always include the complete filter range! -// Excel does support setting only the caption -// row, but that's not a best practise... -$objPHPExcel->getActiveSheet()->setAutoFilter($objPHPExcel->getActiveSheet()->calculateWorksheetDimension()); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s').' Peak memory usage: '.(memory_get_peak_usage(true) / 1024 / 1024).' MB'.EOL; - -// Echo done -echo date('H:i:s').' Done writing files'.EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/11documentsecurity-xls.php b/phpexcel/Examples/11documentsecurity-xls.php deleted file mode 100644 index b104c7b..0000000 --- a/phpexcel/Examples/11documentsecurity-xls.php +++ /dev/null @@ -1,109 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!'); -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set document security -echo date('H:i:s') , " Set document security" , EOL; -$objPHPExcel->getSecurity()->setLockWindows(true); -$objPHPExcel->getSecurity()->setLockStructure(true); -$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel"); - - -// Set sheet security -echo date('H:i:s') , " Set sheet security" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel'); -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // This should be enabled in order to enable any of the following! -$objPHPExcel->getActiveSheet()->getProtection()->setSort(true); -$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true); -$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/11documentsecurity.php b/phpexcel/Examples/11documentsecurity.php deleted file mode 100644 index 96f5d99..0000000 --- a/phpexcel/Examples/11documentsecurity.php +++ /dev/null @@ -1,109 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!'); -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello'); -$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set document security -echo date('H:i:s') , " Set document security" , EOL; -$objPHPExcel->getSecurity()->setLockWindows(true); -$objPHPExcel->getSecurity()->setLockStructure(true); -$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel"); - - -// Set sheet security -echo date('H:i:s') , " Set sheet security" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel'); -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); // This should be enabled in order to enable any of the following! -$objPHPExcel->getActiveSheet()->getProtection()->setSort(true); -$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true); -$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/12cellProtection.php b/phpexcel/Examples/12cellProtection.php deleted file mode 100644 index 77bfee4..0000000 --- a/phpexcel/Examples/12cellProtection.php +++ /dev/null @@ -1,107 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Mark Baker") - ->setLastModifiedBy("Mark Baker") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Crouching'); -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Tiger'); -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Hidden'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 'Dragon'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set document security -echo date('H:i:s') , " Set cell protection" , EOL; - - -// Set sheet security -echo date('H:i:s') , " Set sheet security" , EOL; -$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); -$objPHPExcel->getActiveSheet() - ->getStyle('A2:B2') - ->getProtection()->setLocked( - PHPExcel_Style_Protection::PROTECTION_UNPROTECTED - ); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/13calculation.php b/phpexcel/Examples/13calculation.php deleted file mode 100644 index 01e63ea..0000000 --- a/phpexcel/Examples/13calculation.php +++ /dev/null @@ -1,235 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); -mt_srand(1234567890); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// List functions -echo date('H:i:s') , " List implemented functions" , EOL; -$objCalc = PHPExcel_Calculation::getInstance(); -print_r($objCalc->listFunctionNames()); - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Add some data, we will use some formulas here -echo date('H:i:s') , " Add some data and formulas" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A14', 'Count:') - ->setCellValue('A15', 'Sum:') - ->setCellValue('A16', 'Max:') - ->setCellValue('A17', 'Min:') - ->setCellValue('A18', 'Average:') - ->setCellValue('A19', 'Median:') - ->setCellValue('A20', 'Mode:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A22', 'CountA:') - ->setCellValue('A23', 'MaxA:') - ->setCellValue('A24', 'MinA:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A26', 'StDev:') - ->setCellValue('A27', 'StDevA:') - ->setCellValue('A28', 'StDevP:') - ->setCellValue('A29', 'StDevPA:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A31', 'DevSq:') - ->setCellValue('A32', 'Var:') - ->setCellValue('A33', 'VarA:') - ->setCellValue('A34', 'VarP:') - ->setCellValue('A35', 'VarPA:'); - -$objPHPExcel->getActiveSheet()->setCellValue('A37', 'Date:'); - - -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range 1') - ->setCellValue('B2', 2) - ->setCellValue('B3', 8) - ->setCellValue('B4', 10) - ->setCellValue('B5', True) - ->setCellValue('B6', False) - ->setCellValue('B7', 'Text String') - ->setCellValue('B9', '22') - ->setCellValue('B10', 4) - ->setCellValue('B11', 6) - ->setCellValue('B12', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('B14', '=COUNT(B2:B12)') - ->setCellValue('B15', '=SUM(B2:B12)') - ->setCellValue('B16', '=MAX(B2:B12)') - ->setCellValue('B17', '=MIN(B2:B12)') - ->setCellValue('B18', '=AVERAGE(B2:B12)') - ->setCellValue('B19', '=MEDIAN(B2:B12)') - ->setCellValue('B20', '=MODE(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B22', '=COUNTA(B2:B12)') - ->setCellValue('B23', '=MAXA(B2:B12)') - ->setCellValue('B24', '=MINA(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B26', '=STDEV(B2:B12)') - ->setCellValue('B27', '=STDEVA(B2:B12)') - ->setCellValue('B28', '=STDEVP(B2:B12)') - ->setCellValue('B29', '=STDEVPA(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B31', '=DEVSQ(B2:B12)') - ->setCellValue('B32', '=VAR(B2:B12)') - ->setCellValue('B33', '=VARA(B2:B12)') - ->setCellValue('B34', '=VARP(B2:B12)') - ->setCellValue('B35', '=VARPA(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('B37', '=DATE(2007, 12, 21)') - ->setCellValue('B38', '=DATEDIF( DATE(2007, 12, 21), DATE(2007, 12, 22), "D" )') - ->setCellValue('B39', '=DATEVALUE("01-Feb-2006 10:06 AM")') - ->setCellValue('B40', '=DAY( DATE(2006, 1, 2) )') - ->setCellValue('B41', '=DAYS360( DATE(2002, 2, 3), DATE(2005, 5, 31) )'); - - -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Range 2') - ->setCellValue('C2', 1) - ->setCellValue('C3', 2) - ->setCellValue('C4', 2) - ->setCellValue('C5', 3) - ->setCellValue('C6', 3) - ->setCellValue('C7', 3) - ->setCellValue('C8', '0') - ->setCellValue('C9', 4) - ->setCellValue('C10', 4) - ->setCellValue('C11', 4) - ->setCellValue('C12', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('C14', '=COUNT(C2:C12)') - ->setCellValue('C15', '=SUM(C2:C12)') - ->setCellValue('C16', '=MAX(C2:C12)') - ->setCellValue('C17', '=MIN(C2:C12)') - ->setCellValue('C18', '=AVERAGE(C2:C12)') - ->setCellValue('C19', '=MEDIAN(C2:C12)') - ->setCellValue('C20', '=MODE(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C22', '=COUNTA(C2:C12)') - ->setCellValue('C23', '=MAXA(C2:C12)') - ->setCellValue('C24', '=MINA(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C26', '=STDEV(C2:C12)') - ->setCellValue('C27', '=STDEVA(C2:C12)') - ->setCellValue('C28', '=STDEVP(C2:C12)') - ->setCellValue('C29', '=STDEVPA(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C31', '=DEVSQ(C2:C12)') - ->setCellValue('C32', '=VAR(C2:C12)') - ->setCellValue('C33', '=VARA(C2:C12)') - ->setCellValue('C34', '=VARP(C2:C12)') - ->setCellValue('C35', '=VARPA(C2:C12)'); - - -$objPHPExcel->getActiveSheet()->setCellValue('D1', 'Range 3') - ->setCellValue('D2', 2) - ->setCellValue('D3', 3) - ->setCellValue('D4', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('D14', '=((D2 * D3) + D4) & " should be 10"'); - -$objPHPExcel->getActiveSheet()->setCellValue('E12', 'Other functions') - ->setCellValue('E14', '=PI()') - ->setCellValue('E15', '=RAND()') - ->setCellValue('E16', '=RANDBETWEEN(5, 10)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E17', 'Count of both ranges:') - ->setCellValue('F17', '=COUNT(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E18', 'Total of both ranges:') - ->setCellValue('F18', '=SUM(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E19', 'Maximum of both ranges:') - ->setCellValue('F19', '=MAX(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E20', 'Minimum of both ranges:') - ->setCellValue('F20', '=MIN(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E21', 'Average of both ranges:') - ->setCellValue('F21', '=AVERAGE(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E22', 'Median of both ranges:') - ->setCellValue('F22', '=MEDIAN(B2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E23', 'Mode of both ranges:') - ->setCellValue('F23', '=MODE(B2:C12)'); - - -// Calculated data -echo date('H:i:s') , " Calculated data" , EOL; -for ($col = 'B'; $col != 'G'; ++$col) { - for($row = 14; $row <= 41; ++$row) { - if ((!is_null($formula = $objPHPExcel->getActiveSheet()->getCell($col.$row)->getValue())) && - ($formula[0] == '=')) { - echo 'Value of ' , $col , $row , ' [' , $formula , ']: ' , - $objPHPExcel->getActiveSheet()->getCell($col.$row)->getCalculatedValue() . EOL; - } - } -} - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); - -// -// If we set Pre Calculated Formulas to true then PHPExcel will calculate all formulae in the -// workbook before saving. This adds time and memory overhead, and can cause some problems with formulae -// using functions or features (such as array formulae) that aren't yet supported by the calculation engine -// If the value is false (the default) for the Excel2007 Writer, then MS Excel (or the application used to -// open the file) will need to recalculate values itself to guarantee that the correct results are available. -// -//$objWriter->setPreCalculateFormulas(true); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/14excel5.php b/phpexcel/Examples/14excel5.php deleted file mode 100644 index 3fd3d69..0000000 --- a/phpexcel/Examples/14excel5.php +++ /dev/null @@ -1,63 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/15datavalidation-xls.php b/phpexcel/Examples/15datavalidation-xls.php deleted file mode 100644 index 2f8fa5e..0000000 --- a/phpexcel/Examples/15datavalidation-xls.php +++ /dev/null @@ -1,142 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Cell B3 and B5 contain data validation...") - ->setCellValue('A3', "Number:") - ->setCellValue('B3', "10") - ->setCellValue('A5', "List:") - ->setCellValue('B5', "Item A") - ->setCellValue('A7', "List #2:") - ->setCellValue('B7', "Item #2") - ->setCellValue('D2', "Item #1") - ->setCellValue('D3', "Item #2") - ->setCellValue('D4', "Item #3") - ->setCellValue('D5', "Item #4") - ->setCellValue('D6', "Item #5") - ; - - -// Set data validation -echo date('H:i:s') , " Set data validation" , EOL; -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP ); -$objValidation->setAllowBlank(true); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Only numbers between 10 and 20 are allowed!'); -$objValidation->setPromptTitle('Allowed input'); -$objValidation->setPrompt('Only numbers between 10 and 20 are allowed.'); -$objValidation->setFormula1(10); -$objValidation->setFormula2(20); - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B5')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('"Item A,Item B,Item C"'); // Make sure to put the list items between " and " !!! - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B7')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('$D$2:$D$6'); // Make sure NOT to put a range of cells or a formula between " and " !!! - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/15datavalidation.php b/phpexcel/Examples/15datavalidation.php deleted file mode 100644 index 932bacc..0000000 --- a/phpexcel/Examples/15datavalidation.php +++ /dev/null @@ -1,143 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Create a first sheet -echo date('H:i:s') , " Add data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', "Cell B3 and B5 contain data validation...") - ->setCellValue('A3', "Number:") - ->setCellValue('B3', "10") - ->setCellValue('A5', "List:") - ->setCellValue('B5', "Item A") - ->setCellValue('A7', "List #2:") - ->setCellValue('B7', "Item #2") - ->setCellValue('D2', "Item #1") - ->setCellValue('D3', "Item #2") - ->setCellValue('D4', "Item #3") - ->setCellValue('D5', "Item #4") - ->setCellValue('D6', "Item #5") - ; - - -// Set data validation -echo date('H:i:s') , " Set data validation" , EOL; -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP ); -$objValidation->setAllowBlank(true); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Only numbers between 10 and 20 are allowed!'); -$objValidation->setPromptTitle('Allowed input'); -$objValidation->setPrompt('Only numbers between 10 and 20 are allowed.'); -$objValidation->setFormula1(10); -$objValidation->setFormula2(20); - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B5')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('"Item A,Item B,Item C"'); // Make sure to put the list items between " and " if your list is simply a comma-separated list of values !!! - - -$objValidation = $objPHPExcel->getActiveSheet()->getCell('B7')->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ); -$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ); -$objValidation->setAllowBlank(false); -$objValidation->setShowInputMessage(true); -$objValidation->setShowErrorMessage(true); -$objValidation->setShowDropDown(true); -$objValidation->setErrorTitle('Input error'); -$objValidation->setError('Value is not in list.'); -$objValidation->setPromptTitle('Pick from list'); -$objValidation->setPrompt('Please pick a value from the drop-down list.'); -$objValidation->setFormula1('$D$2:$D$6'); // Make sure NOT to put a range of cells or a formula between " and " !!! - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/16csv.php b/phpexcel/Examples/16csv.php deleted file mode 100644 index 71ebfd0..0000000 --- a/phpexcel/Examples/16csv.php +++ /dev/null @@ -1,107 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once '../Classes/PHPExcel/IOFactory.php'; - - -echo date('H:i:s') , " Write to CSV format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV')->setDelimiter(',') - ->setEnclosure('"') - ->setLineEnding("\r\n") - ->setSheetIndex(0) - ->save(str_replace('.php', '.csv', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Read from CSV format" , EOL; -$callStartTime = microtime(true); -$objReader = PHPExcel_IOFactory::createReader('CSV')->setDelimiter(',') - ->setEnclosure('"') - ->setLineEnding("\r\n") - ->setSheetIndex(0); -$objPHPExcelFromCSV = $objReader->load(str_replace('.php', '.csv', __FILE__)); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to reload Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter2007 = PHPExcel_IOFactory::createWriter($objPHPExcelFromCSV, 'Excel2007'); -$objWriter2007->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Write to CSV format" , EOL; -$callStartTime = microtime(true); - -$objWriterCSV = PHPExcel_IOFactory::createWriter($objPHPExcelFromCSV, 'CSV'); -$objWriterCSV->setExcelCompatibility(true); -$objWriterCSV->save(str_replace('.php', '_excel.csv', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '_excel.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/17html.php b/phpexcel/Examples/17html.php deleted file mode 100644 index 0dc825b..0000000 --- a/phpexcel/Examples/17html.php +++ /dev/null @@ -1,64 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -echo date('H:i:s') , " Write to HTML format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); -$objWriter->setSheetIndex(0); -//$objWriter->setImagesRoot('http://www.example.com'); -$objWriter->save(str_replace('.php', '.htm', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '.htm', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/18extendedcalculation.php b/phpexcel/Examples/18extendedcalculation.php deleted file mode 100644 index 3c6fcb4..0000000 --- a/phpexcel/Examples/18extendedcalculation.php +++ /dev/null @@ -1,108 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// List functions -echo date('H:i:s') . " List implemented functions\n"; -$objCalc = PHPExcel_Calculation::getInstance(); -print_r($objCalc->listFunctionNames()); - -// Create new PHPExcel object -echo date('H:i:s') . " Create new PHPExcel object\n"; -$objPHPExcel = new PHPExcel(); - -// Add some data, we will use some formulas here -echo date('H:i:s') . " Add some data\n"; -$objPHPExcel->getActiveSheet()->setCellValue('A14', 'Count:'); - -$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range 1'); -$objPHPExcel->getActiveSheet()->setCellValue('B2', 2); -$objPHPExcel->getActiveSheet()->setCellValue('B3', 8); -$objPHPExcel->getActiveSheet()->setCellValue('B4', 10); -$objPHPExcel->getActiveSheet()->setCellValue('B5', True); -$objPHPExcel->getActiveSheet()->setCellValue('B6', False); -$objPHPExcel->getActiveSheet()->setCellValue('B7', 'Text String'); -$objPHPExcel->getActiveSheet()->setCellValue('B9', '22'); -$objPHPExcel->getActiveSheet()->setCellValue('B10', 4); -$objPHPExcel->getActiveSheet()->setCellValue('B11', 6); -$objPHPExcel->getActiveSheet()->setCellValue('B12', 12); - -$objPHPExcel->getActiveSheet()->setCellValue('B14', '=COUNT(B2:B12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Range 2'); -$objPHPExcel->getActiveSheet()->setCellValue('C2', 1); -$objPHPExcel->getActiveSheet()->setCellValue('C3', 2); -$objPHPExcel->getActiveSheet()->setCellValue('C4', 2); -$objPHPExcel->getActiveSheet()->setCellValue('C5', 3); -$objPHPExcel->getActiveSheet()->setCellValue('C6', 3); -$objPHPExcel->getActiveSheet()->setCellValue('C7', 3); -$objPHPExcel->getActiveSheet()->setCellValue('C8', '0'); -$objPHPExcel->getActiveSheet()->setCellValue('C9', 4); -$objPHPExcel->getActiveSheet()->setCellValue('C10', 4); -$objPHPExcel->getActiveSheet()->setCellValue('C11', 4); -$objPHPExcel->getActiveSheet()->setCellValue('C12', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('C14', '=COUNT(C2:C12)'); - -$objPHPExcel->getActiveSheet()->setCellValue('D1', 'Range 3'); -$objPHPExcel->getActiveSheet()->setCellValue('D2', 2); -$objPHPExcel->getActiveSheet()->setCellValue('D3', 3); -$objPHPExcel->getActiveSheet()->setCellValue('D4', 4); - -$objPHPExcel->getActiveSheet()->setCellValue('D5', '=((D2 * D3) + D4) & " should be 10"'); - -$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Other functions'); -$objPHPExcel->getActiveSheet()->setCellValue('E2', '=PI()'); -$objPHPExcel->getActiveSheet()->setCellValue('E3', '=RAND()'); -$objPHPExcel->getActiveSheet()->setCellValue('E4', '=RANDBETWEEN(5, 10)'); - -$objPHPExcel->getActiveSheet()->setCellValue('E14', 'Count of both ranges:'); -$objPHPExcel->getActiveSheet()->setCellValue('F14', '=COUNT(B2:C12)'); - -// Calculated data -echo date('H:i:s') . " Calculated data\n"; -echo 'Value of B14 [=COUNT(B2:B12)]: ' . $objPHPExcel->getActiveSheet()->getCell('B14')->getCalculatedValue() . "\r\n"; - - -// Echo memory peak usage -echo date('H:i:s') . " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB\r\n"; - -// Echo done -echo date('H:i:s') . " Done" , EOL; diff --git a/phpexcel/Examples/19namedrange.php b/phpexcel/Examples/19namedrange.php deleted file mode 100644 index acea22b..0000000 --- a/phpexcel/Examples/19namedrange.php +++ /dev/null @@ -1,129 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Firstname:') - ->setCellValue('A2', 'Lastname:') - ->setCellValue('A3', 'Fullname:') - ->setCellValue('B1', 'Maarten') - ->setCellValue('B2', 'Balliauw') - ->setCellValue('B3', '=B1 & " " & B2'); - -// Define named ranges -echo date('H:i:s') , " Define named ranges" , EOL; -$objPHPExcel->addNamedRange( new PHPExcel_NamedRange('PersonName', $objPHPExcel->getActiveSheet(), 'B1') ); -$objPHPExcel->addNamedRange( new PHPExcel_NamedRange('PersonLN', $objPHPExcel->getActiveSheet(), 'B2') ); - -// Rename named ranges -echo date('H:i:s') , " Rename named ranges" , EOL; -$objPHPExcel->getNamedRange('PersonName')->setName('PersonFN'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Person'); - - -// Create a new worksheet, after the default sheet -echo date('H:i:s') , " Create new Worksheet object" , EOL; -$objPHPExcel->createSheet(); - -// Add some data to the second sheet, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(1); -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Firstname:') - ->setCellValue('A2', 'Lastname:') - ->setCellValue('A3', 'Fullname:') - ->setCellValue('B1', '=PersonFN') - ->setCellValue('B2', '=PersonLN') - ->setCellValue('B3', '=PersonFN & " " & PersonLN'); - -// Resolve range -echo date('H:i:s') , " Resolve range" , EOL; -echo 'Cell B1 {=PersonFN}: ' , $objPHPExcel->getActiveSheet()->getCell('B1')->getCalculatedValue() , EOL; -echo 'Cell B3 {=PersonFN & " " & PersonLN}: ' , $objPHPExcel->getActiveSheet()->getCell('B3')->getCalculatedValue() , EOL; -echo 'Cell Person!B1: ' , $objPHPExcel->getActiveSheet()->getCell('Person!B1')->getCalculatedValue() , EOL; - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Person (cloned)'); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/20readexcel5.php b/phpexcel/Examples/20readexcel5.php deleted file mode 100644 index 98eff9e..0000000 --- a/phpexcel/Examples/20readexcel5.php +++ /dev/null @@ -1,79 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("14excel5.xls")) { - exit("Please run 14excel5.php first.\n"); -} - -echo date('H:i:s') , " Load workbook from Excel5 file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcel = PHPExcel_IOFactory::load("14excel5.xls"); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo 'Call time to load Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done reading file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/21pdf.php b/phpexcel/Examples/21pdf.php deleted file mode 100644 index 11c56b2..0000000 --- a/phpexcel/Examples/21pdf.php +++ /dev/null @@ -1,94 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -//$rendererLibrary = 'mPDF5.4'; -$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary; - - -echo date('H:i:s') , " Hide grid lines" , EOL; -$objPHPExcel->getActiveSheet()->setShowGridLines(false); - -echo date('H:i:s') , " Set orientation to landscape" , EOL; -$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); - - -echo date('H:i:s') , " Write to PDF format using {$rendererName}" , EOL; - -if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); -$objWriter->setSheetIndex(0); -$objWriter->save(str_replace('.php', '_'.$rendererName.'.pdf', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo date('H:i:s') , " File written to " , str_replace('.php', '_'.$rendererName.'.pdf', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/22heavilyformatted.php b/phpexcel/Examples/22heavilyformatted.php deleted file mode 100644 index c17bc86..0000000 --- a/phpexcel/Examples/22heavilyformatted.php +++ /dev/null @@ -1,116 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); - -$objPHPExcel->getActiveSheet()->getStyle('A1:T100')->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFCCFFCC') - ), - 'borders' => array( - 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), - 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) - ) - ) - ); - -$objPHPExcel->getActiveSheet()->getStyle('C5:R95')->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFFFFF00') - ), - ) - ); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/23sharedstyles.php b/phpexcel/Examples/23sharedstyles.php deleted file mode 100644 index 652b4ed..0000000 --- a/phpexcel/Examples/23sharedstyles.php +++ /dev/null @@ -1,124 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0); - -$sharedStyle1 = new PHPExcel_Style(); -$sharedStyle2 = new PHPExcel_Style(); - -$sharedStyle1->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFCCFFCC') - ), - 'borders' => array( - 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), - 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) - ) - )); - -$sharedStyle2->applyFromArray( - array('fill' => array( - 'type' => PHPExcel_Style_Fill::FILL_SOLID, - 'color' => array('argb' => 'FFFFFF00') - ), - 'borders' => array( - 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_THIN), - 'right' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM) - ) - )); - -$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A1:T100"); -$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle2, "C5:R95"); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/24readfilter.php b/phpexcel/Examples/24readfilter.php deleted file mode 100644 index afa6d0c..0000000 --- a/phpexcel/Examples/24readfilter.php +++ /dev/null @@ -1,77 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Check prerequisites -if (!file_exists("06largescale.xlsx")) { - exit("Please run 06largescale.php first.\n"); -} - -class MyReadFilter implements PHPExcel_Reader_IReadFilter -{ - public function readCell($column, $row, $worksheetName = '') { - // Read title row and rows 20 - 30 - if ($row == 1 || ($row >= 20 && $row <= 30)) { - return true; - } - - return false; - } -} - - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel2007'); -$objReader->setReadFilter( new MyReadFilter() ); -$objPHPExcel = $objReader->load("06largescale.xlsx"); - -echo date('H:i:s') , " Remove unnecessary rows" , EOL; -$objPHPExcel->getActiveSheet()->removeRow(2, 18); - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/25inmemoryimage.php b/phpexcel/Examples/25inmemoryimage.php deleted file mode 100644 index 7a3424e..0000000 --- a/phpexcel/Examples/25inmemoryimage.php +++ /dev/null @@ -1,83 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Generate an image -echo date('H:i:s') , " Generate an image" , EOL; -$gdImage = @imagecreatetruecolor(120, 20) or die('Cannot Initialize new GD image stream'); -$textColor = imagecolorallocate($gdImage, 255, 255, 255); -imagestring($gdImage, 1, 5, 5, 'Created with PHPExcel', $textColor); - -// Add a drawing to the worksheet -echo date('H:i:s') , " Add a drawing to the worksheet" , EOL; -$objDrawing = new PHPExcel_Worksheet_MemoryDrawing(); -$objDrawing->setName('Sample image'); -$objDrawing->setDescription('Sample image'); -$objDrawing->setImageResource($gdImage); -$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG); -$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT); -$objDrawing->setHeight(36); -$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/26utf8.php b/phpexcel/Examples/26utf8.php deleted file mode 100644 index ad0b400..0000000 --- a/phpexcel/Examples/26utf8.php +++ /dev/null @@ -1,122 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Change these values to select the PDF Rendering library that you wish to use -// and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -//$rendererLibrary = 'mPDF5.4'; -$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary; - - -// Read from Excel2007 (.xlsx) template -echo date('H:i:s') , " Load Excel2007 template file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel2007'); -$objPHPExcel = $objReader->load("templates/26template.xlsx"); - -/** at this point, we could do some manipulations with the template, but we skip this step */ - -// Export to Excel2007 (.xlsx) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to Excel5 (.xls) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to HTML (.html) -echo date('H:i:s') , " Write to HTML format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); -$objWriter->save(str_replace('.php', '.htm', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.htm', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to PDF (.pdf) -echo date('H:i:s') , " Write to PDF format" , EOL; -try { - if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - echo ( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' . - EOL - ); - } else { - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); - $objWriter->save(str_replace('.php', '.pdf', __FILE__)); - echo date('H:i:s') , " File written to " , str_replace('.php', '.pdf', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - } -} catch (Exception $e) { - echo date('H:i:s') , ' EXCEPTION: ', $e->getMessage() , EOL; -} - -// Remove first two rows with field headers before exporting to CSV -echo date('H:i:s') , " Removing first two heading rows for CSV export" , EOL; -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->removeRow(1, 2); - -// Export to CSV (.csv) -echo date('H:i:s') , " Write to CSV format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV'); -$objWriter->save(str_replace('.php', '.csv', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to CSV with BOM (.csv) -echo date('H:i:s') , " Write to CSV format (with BOM)" , EOL; -$objWriter->setUseBOM(true); -$objWriter->save(str_replace('.php', '-bom.csv', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '-bom.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/27imagesexcel5.php b/phpexcel/Examples/27imagesexcel5.php deleted file mode 100644 index 17db771..0000000 --- a/phpexcel/Examples/27imagesexcel5.php +++ /dev/null @@ -1,64 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Read from Excel5 (.xls) template -echo date('H:i:s') , " Load Excel2007 template file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel5'); -$objPHPExcel = $objReader->load("templates/27template.xls"); - -// Export to Excel2007 (.xlsx) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Export to Excel5 (.xls) -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/28iterator.php b/phpexcel/Examples/28iterator.php deleted file mode 100644 index 3e1e681..0000000 --- a/phpexcel/Examples/28iterator.php +++ /dev/null @@ -1,68 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -if (!file_exists("05featuredemo.xlsx")) { - exit("Please run 05featuredemo.php first." . EOL); -} - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel2007'); -$objPHPExcel = $objReader->load("05featuredemo.xlsx"); - -echo date('H:i:s') , " Iterate worksheets" , EOL; -foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - echo 'Worksheet - ' , $worksheet->getTitle() , EOL; - - foreach ($worksheet->getRowIterator() as $row) { - echo ' Row number - ' , $row->getRowIndex() , EOL; - - $cellIterator = $row->getCellIterator(); - $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set - foreach ($cellIterator as $cell) { - if (!is_null($cell)) { - echo ' Cell - ' , $cell->getCoordinate() , ' - ' , $cell->getCalculatedValue() , EOL; - } - } - } -} - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; diff --git a/phpexcel/Examples/29advancedvaluebinder.php b/phpexcel/Examples/29advancedvaluebinder.php deleted file mode 100644 index bb387f9..0000000 --- a/phpexcel/Examples/29advancedvaluebinder.php +++ /dev/null @@ -1,183 +0,0 @@ -'); - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Set timezone -echo date('H:i:s') , " Set timezone" , EOL; -date_default_timezone_set('UTC'); - -// Set value binder -echo date('H:i:s') , " Set value binder" , EOL; -PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() ); - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") - ->setKeywords("office 2007 openxml php") - ->setCategory("Test result file"); - -// Set default font -echo date('H:i:s') , " Set default font" , EOL; -$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setName('Arial'); -$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10); - -// Set column widths -echo date('H:i:s') , " Set column widths" , EOL; -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true); -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(14); - -// Add some data, resembling some different data types -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String value:') - ->setCellValue('B1', 'Mark Baker'); - -$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Numeric value #1:') - ->setCellValue('B2', 12345); - -$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Numeric value #2:') - ->setCellValue('B3', -12.345); - -$objPHPExcel->getActiveSheet()->setCellValue('A4', 'Numeric value #3:') - ->setCellValue('B4', .12345); - -$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Numeric value #4:') - ->setCellValue('B5', '12345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A6', 'Numeric value #5:') - ->setCellValue('B6', '1.2345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Numeric value #6:') - ->setCellValue('B7', '.12345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Numeric value #7:') - ->setCellValue('B8', '1.234e-5'); - -$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Numeric value #8:') - ->setCellValue('B9', '-1.234e+5'); - -$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Boolean value:') - ->setCellValue('B10', 'TRUE'); - -$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Percentage value #1:') - ->setCellValue('B11', '10%'); - -$objPHPExcel->getActiveSheet()->setCellValue('A12', 'Percentage value #2:') - ->setCellValue('B12', '12.5%'); - -$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Fraction value #1:') - ->setCellValue('B13', '-1/2'); - -$objPHPExcel->getActiveSheet()->setCellValue('A14', 'Fraction value #2:') - ->setCellValue('B14', '3 1/2'); - -$objPHPExcel->getActiveSheet()->setCellValue('A15', 'Fraction value #3:') - ->setCellValue('B15', '-12 3/4'); - -$objPHPExcel->getActiveSheet()->setCellValue('A16', 'Fraction value #4:') - ->setCellValue('B16', '13/4'); - -$objPHPExcel->getActiveSheet()->setCellValue('A17', 'Currency value #1:') - ->setCellValue('B17', '$12345'); - -$objPHPExcel->getActiveSheet()->setCellValue('A18', 'Currency value #2:') - ->setCellValue('B18', '$12345.67'); - -$objPHPExcel->getActiveSheet()->setCellValue('A19', 'Currency value #3:') - ->setCellValue('B19', '$12,345.67'); - -$objPHPExcel->getActiveSheet()->setCellValue('A20', 'Date value #1:') - ->setCellValue('B20', '21 December 1983'); - -$objPHPExcel->getActiveSheet()->setCellValue('A21', 'Date value #2:') - ->setCellValue('B21', '19-Dec-1960'); - -$objPHPExcel->getActiveSheet()->setCellValue('A22', 'Date value #3:') - ->setCellValue('B22', '07/12/1982'); - -$objPHPExcel->getActiveSheet()->setCellValue('A23', 'Date value #4:') - ->setCellValue('B23', '24-11-1950'); - -$objPHPExcel->getActiveSheet()->setCellValue('A24', 'Date value #5:') - ->setCellValue('B24', '17-Mar'); - -$objPHPExcel->getActiveSheet()->setCellValue('A25', 'Time value #1:') - ->setCellValue('B25', '01:30'); - -$objPHPExcel->getActiveSheet()->setCellValue('A26', 'Time value #2:') - ->setCellValue('B26', '01:30:15'); - -$objPHPExcel->getActiveSheet()->setCellValue('A27', 'Date/Time value:') - ->setCellValue('B27', '19-Dec-1960 01:30'); - -$objPHPExcel->getActiveSheet()->setCellValue('A28', 'Formula:') - ->setCellValue('B28', '=SUM(B2:B9)'); - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Advanced value binder'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/30template.php b/phpexcel/Examples/30template.php deleted file mode 100644 index 2b66c2c..0000000 --- a/phpexcel/Examples/30template.php +++ /dev/null @@ -1,91 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - - -echo date('H:i:s') , " Load from Excel5 template" , EOL; -$objReader = PHPExcel_IOFactory::createReader('Excel5'); -$objPHPExcel = $objReader->load("templates/30template.xls"); - - - - -echo date('H:i:s') , " Add new data to the template" , EOL; -$data = array(array('title' => 'Excel for dummies', - 'price' => 17.99, - 'quantity' => 2 - ), - array('title' => 'PHP for dummies', - 'price' => 15.99, - 'quantity' => 1 - ), - array('title' => 'Inside OOP', - 'price' => 12.95, - 'quantity' => 1 - ) - ); - -$objPHPExcel->getActiveSheet()->setCellValue('D1', PHPExcel_Shared_Date::PHPToExcel(time())); - -$baseRow = 5; -foreach($data as $r => $dataRow) { - $row = $baseRow + $r; - $objPHPExcel->getActiveSheet()->insertNewRowBefore($row,1); - - $objPHPExcel->getActiveSheet()->setCellValue('A'.$row, $r+1) - ->setCellValue('B'.$row, $dataRow['title']) - ->setCellValue('C'.$row, $dataRow['price']) - ->setCellValue('D'.$row, $dataRow['quantity']) - ->setCellValue('E'.$row, '=C'.$row.'*D'.$row); -} -$objPHPExcel->getActiveSheet()->removeRow($baseRow-1,1); - - -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/31docproperties_write-xls.php b/phpexcel/Examples/31docproperties_write-xls.php deleted file mode 100644 index f3ad0a4..0000000 --- a/phpexcel/Examples/31docproperties_write-xls.php +++ /dev/null @@ -1,119 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$inputFileType = 'Excel5'; -$inputFileName = 'templates/31docproperties.xls'; - - -echo date('H:i:s') , " Load Tests from $inputFileType file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcelReader = PHPExcel_IOFactory::createReader($inputFileType); -$objPHPExcel = $objPHPExcelReader->load($inputFileName); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Adjust properties" , EOL; -$objPHPExcel->getProperties()->setTitle("Office 95 XLS Test Document") - ->setSubject("Office 95 XLS Test Document") - ->setDescription("Test XLS document, generated using PHPExcel") - ->setKeywords("office 95 biff php"); - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; - - -echo EOL; -// Reread File -echo date('H:i:s') , " Reread Excel5 file" , EOL; -$objPHPExcelRead = PHPExcel_IOFactory::load(str_replace('.php', '.xls', __FILE__)); - -// Set properties -echo date('H:i:s') , " Get properties" , EOL; - -echo 'Core Properties:' , EOL; -echo ' Created by - ' , $objPHPExcel->getProperties()->getCreator() , EOL; -echo ' Created on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getCreated()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getCreated()) , EOL; -echo ' Last Modified by - ' , $objPHPExcel->getProperties()->getLastModifiedBy() , EOL; -echo ' Last Modified on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getModified()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getModified()) , EOL; -echo ' Title - ' , $objPHPExcel->getProperties()->getTitle() , EOL; -echo ' Subject - ' , $objPHPExcel->getProperties()->getSubject() , EOL; -echo ' Description - ' , $objPHPExcel->getProperties()->getDescription() , EOL; -echo ' Keywords: - ' , $objPHPExcel->getProperties()->getKeywords() , EOL; - - -echo 'Extended (Application) Properties:' , EOL; -echo ' Category - ' , $objPHPExcel->getProperties()->getCategory() , EOL; -echo ' Company - ' , $objPHPExcel->getProperties()->getCompany() , EOL; -echo ' Manager - ' , $objPHPExcel->getProperties()->getManager() , EOL; - - -echo 'Custom Properties:' , EOL; -$customProperties = $objPHPExcel->getProperties()->getCustomProperties(); -foreach($customProperties as $customProperty) { - $propertyValue = $objPHPExcel->getProperties()->getCustomPropertyValue($customProperty); - $propertyType = $objPHPExcel->getProperties()->getCustomPropertyType($customProperty); - echo ' ' , $customProperty , ' - (' , $propertyType , ') - '; - if ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE) { - echo date('d-M-Y H:i:s',$propertyValue) , EOL; - } elseif ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN) { - echo (($propertyValue) ? 'TRUE' : 'FALSE') , EOL; - } else { - echo $propertyValue , EOL; - } -} - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; diff --git a/phpexcel/Examples/31docproperties_write.php b/phpexcel/Examples/31docproperties_write.php deleted file mode 100644 index 3f5328c..0000000 --- a/phpexcel/Examples/31docproperties_write.php +++ /dev/null @@ -1,119 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$inputFileType = 'Excel2007'; -$inputFileName = 'templates/31docproperties.xlsx'; - - -echo date('H:i:s') , " Load Tests from $inputFileType file" , EOL; -$callStartTime = microtime(true); - -$objPHPExcelReader = PHPExcel_IOFactory::createReader($inputFileType); -$objPHPExcel = $objPHPExcelReader->load($inputFileName); - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -echo date('H:i:s') , " Adjust properties" , EOL; -$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document") - ->setSubject("Office 2007 XLSX Test Document") - ->setDescription("Test XLSX document, generated using PHPExcel") - ->setKeywords("office 2007 openxml php"); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; - - -echo EOL; -// Reread File -echo date('H:i:s') , " Reread Excel2007 file" , EOL; -$objPHPExcelRead = PHPExcel_IOFactory::load(str_replace('.php', '.xlsx', __FILE__)); - -// Set properties -echo date('H:i:s') , " Get properties" , EOL; - -echo 'Core Properties:' , EOL; -echo ' Created by - ' , $objPHPExcel->getProperties()->getCreator() , EOL; -echo ' Created on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getCreated()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getCreated()) , EOL; -echo ' Last Modified by - ' , $objPHPExcel->getProperties()->getLastModifiedBy() , EOL; -echo ' Last Modified on - ' , date('d-M-Y',$objPHPExcel->getProperties()->getModified()) , ' at ' , - date('H:i:s',$objPHPExcel->getProperties()->getModified()) , EOL; -echo ' Title - ' , $objPHPExcel->getProperties()->getTitle() , EOL; -echo ' Subject - ' , $objPHPExcel->getProperties()->getSubject() , EOL; -echo ' Description - ' , $objPHPExcel->getProperties()->getDescription() , EOL; -echo ' Keywords: - ' , $objPHPExcel->getProperties()->getKeywords() , EOL; - - -echo 'Extended (Application) Properties:' , EOL; -echo ' Category - ' , $objPHPExcel->getProperties()->getCategory() , EOL; -echo ' Company - ' , $objPHPExcel->getProperties()->getCompany() , EOL; -echo ' Manager - ' , $objPHPExcel->getProperties()->getManager() , EOL; - - -echo 'Custom Properties:' , EOL; -$customProperties = $objPHPExcel->getProperties()->getCustomProperties(); -foreach($customProperties as $customProperty) { - $propertyValue = $objPHPExcel->getProperties()->getCustomPropertyValue($customProperty); - $propertyType = $objPHPExcel->getProperties()->getCustomPropertyType($customProperty); - echo ' ' , $customProperty , ' - (' , $propertyType , ') - '; - if ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE) { - echo date('d-M-Y H:i:s',$propertyValue) , EOL; - } elseif ($propertyType == PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN) { - echo (($propertyValue) ? 'TRUE' : 'FALSE') , EOL; - } else { - echo $propertyValue , EOL; - } -} - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) . " MB" , EOL; diff --git a/phpexcel/Examples/32chartreadwrite.php b/phpexcel/Examples/32chartreadwrite.php deleted file mode 100644 index be1925a..0000000 --- a/phpexcel/Examples/32chartreadwrite.php +++ /dev/null @@ -1,131 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/32readwrite*[0-9].xlsx'; - -if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - $groupCount = $chart->getPlotArea()->getPlotGroupCount(); - if ($groupCount == 1) { - $chartType = $chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - echo ' ' , $chartType , EOL; - } else { - $chartTypes = array(); - for($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = 'Multiple Plot ' . array_pop($chartTypes); - echo ' ' , $chartType , EOL; - } elseif (count($chartTypes) == 0) { - echo ' *** Type not yet implemented' , EOL; - } else { - echo ' Combination Chart' , EOL; - } - } - } - } - } - - - $outputFileName = basename($inputFileName); - - echo date('H:i:s') , " Write Tests to Excel2007 file " , EOL; - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); - $objWriter->setIncludeCharts(TRUE); - $objWriter->save($outputFileName); - echo date('H:i:s') , " File written to " , $outputFileName , EOL; - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-area.php b/phpexcel/Examples/33chartcreate-area.php deleted file mode 100644 index 53fe523..0000000 --- a/phpexcel/Examples/33chartcreate-area.php +++ /dev/null @@ -1,142 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_PERCENT_STACKED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test %age-Stacked Area Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-bar-stacked.php b/phpexcel/Examples/33chartcreate-bar-stacked.php deleted file mode 100644 index cac29f2..0000000 --- a/phpexcel/Examples/33chartcreate-bar-stacked.php +++ /dev/null @@ -1,145 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STACKED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a horizontal bar rather than a vertical column graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_BAR); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-bar.php b/phpexcel/Examples/33chartcreate-bar.php deleted file mode 100644 index 14fd5d4..0000000 --- a/phpexcel/Examples/33chartcreate-bar.php +++ /dev/null @@ -1,145 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a horizontal bar rather than a vertical column graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_BAR); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Bar Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-column-2.php b/phpexcel/Examples/33chartcreate-column-2.php deleted file mode 100644 index 00bf0d7..0000000 --- a/phpexcel/Examples/33chartcreate-column-2.php +++ /dev/null @@ -1,154 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', '', 'Budget', 'Forecast', 'Actual'), - array('2010', 'Q1', 47, 44, 43 ), - array('', 'Q2', 56, 53, 50 ), - array('', 'Q3', 52, 46, 45 ), - array('', 'Q4', 45, 40, 40 ), - array('2011', 'Q1', 51, 42, 46 ), - array('', 'Q2', 53, 58, 56 ), - array('', 'Q3', 64, 66, 69 ), - array('', 'Q4', 54, 55, 56 ), - array('2012', 'Q1', 49, 52, 58 ), - array('', 'Q2', 68, 73, 86 ), - array('', 'Q3', 72, 78, 0 ), - array('', 'Q4', 50, 60, 0 ), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 'Budget' - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 'Forecast' - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$E$1', NULL, 1), // 'Actual' -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$B$13', NULL, 12), // Q1 to Q4 for 2010 to 2012 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', NULL, 12), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', NULL, 12), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$E$2:$E$13', NULL, 12), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_BOTTOM, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Grouped Column Chart'); -$xAxisLabel = new PHPExcel_Chart_Title('Financial Period'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - $xAxisLabel, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('G2'); -$chart->setBottomRightPosition('P20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-column.php b/phpexcel/Examples/33chartcreate-column.php deleted file mode 100644 index ae9c618..0000000 --- a/phpexcel/Examples/33chartcreate-column.php +++ /dev/null @@ -1,145 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Column Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-composite.php b/phpexcel/Examples/33chartcreate-composite.php deleted file mode 100644 index 8ea7212..0000000 --- a/phpexcel/Examples/33chartcreate-composite.php +++ /dev/null @@ -1,203 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 'Rainfall (mm)', 'Temperature (°F)', 'Humidity (%)'), - array('Jan', 78, 52, 61), - array('Feb', 64, 54, 62), - array('Mar', 62, 57, 63), - array('Apr', 21, 62, 59), - array('May', 11, 75, 60), - array('Jun', 1, 75, 57), - array('Jul', 1, 79, 56), - array('Aug', 1, 79, 59), - array('Sep', 10, 75, 60), - array('Oct', 40, 68, 63), - array('Nov', 69, 62, 64), - array('Dec', 89, 57, 66), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // Temperature -); -$dataSeriesLabels2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // Rainfall -); -$dataSeriesLabels3 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // Humidity -); - -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$13', NULL, 12), // Jan to Dec -); - - -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues1 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$13', NULL, 12), -); - -// Build the dataseries -$series1 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping - range(0, count($dataSeriesValues1)-1), // plotOrder - $dataSeriesLabels1, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues1 // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series1->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - - -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues2 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', NULL, 12), -); - -// Build the dataseries -$series2 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_LINECHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels2, // plotLabel - NULL, // plotCategory - $dataSeriesValues2 // plotValues -); - - -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues3 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', NULL, 12), -); - -// Build the dataseries -$series3 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels3, // plotLabel - NULL, // plotCategory - $dataSeriesValues3 // plotValues -); - - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series1, $series2, $series3)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Average Weather Chart for Crete'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('F2'); -$chart->setBottomRightPosition('O16'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-line.php b/phpexcel/Examples/33chartcreate-line.php deleted file mode 100644 index 145ae72..0000000 --- a/phpexcel/Examples/33chartcreate-line.php +++ /dev/null @@ -1,142 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_LINECHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STACKED, // plotGrouping - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Stacked Line Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-multiple-charts.php b/phpexcel/Examples/33chartcreate-multiple-charts.php deleted file mode 100644 index a95c276..0000000 --- a/phpexcel/Examples/33chartcreate-multiple-charts.php +++ /dev/null @@ -1,220 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues1 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series1 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_AREACHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_PERCENT_STACKED, // plotGrouping - range(0, count($dataSeriesValues1)-1), // plotOrder - $dataSeriesLabels1, // plotLabel - $xAxisTickValues1, // plotCategory - $dataSeriesValues1 // plotValues -); - -// Set the series in the plot area -$plotArea1 = new PHPExcel_Chart_PlotArea(NULL, array($series1)); -// Set the chart legend -$legend1 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title1 = new PHPExcel_Chart_Title('Test %age-Stacked Area Chart'); -$yAxisLabel1 = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart1 = new PHPExcel_Chart( - 'chart1', // name - $title1, // title - $legend1, // legend - $plotArea1, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel1 // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart1->setTopLeftPosition('A7'); -$chart1->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart1); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues2 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series2 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_BARCHART, // plotType - PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // plotGrouping - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels2, // plotLabel - $xAxisTickValues2, // plotCategory - $dataSeriesValues2 // plotValues -); -// Set additional dataseries parameters -// Make it a vertical column rather than a horizontal bar graph -$series2->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL); - -// Set the series in the plot area -$plotArea2 = new PHPExcel_Chart_PlotArea(NULL, array($series2)); -// Set the chart legend -$legend2 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title2 = new PHPExcel_Chart_Title('Test Column Chart'); -$yAxisLabel2 = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart2 = new PHPExcel_Chart( - 'chart2', // name - $title2, // title - $legend2, // legend - $plotArea2, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel2 // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart2->setTopLeftPosition('I7'); -$chart2->setBottomRightPosition('P20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart2); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-pie.php b/phpexcel/Examples/33chartcreate-pie.php deleted file mode 100644 index 5af0290..0000000 --- a/phpexcel/Examples/33chartcreate-pie.php +++ /dev/null @@ -1,215 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues1 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues1 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), -); - -// Build the dataseries -$series1 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_PIECHART, // plotType - NULL, // plotGrouping (Pie charts don't have any grouping) - range(0, count($dataSeriesValues1)-1), // plotOrder - $dataSeriesLabels1, // plotLabel - $xAxisTickValues1, // plotCategory - $dataSeriesValues1 // plotValues -); - -// Set up a layout object for the Pie chart -$layout1 = new PHPExcel_Chart_Layout(); -$layout1->setShowVal(TRUE); -$layout1->setShowPercent(TRUE); - -// Set the series in the plot area -$plotArea1 = new PHPExcel_Chart_PlotArea($layout1, array($series1)); -// Set the chart legend -$legend1 = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title1 = new PHPExcel_Chart_Title('Test Pie Chart'); - - -// Create the chart -$chart1 = new PHPExcel_Chart( - 'chart1', // name - $title1, // title - $legend1, // legend - $plotArea1, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel - Pie charts don't have a Y-Axis -); - -// Set the position where the chart should appear in the worksheet -$chart1->setTopLeftPosition('A7'); -$chart1->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart1); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues2 = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues2 = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), -); - -// Build the dataseries -$series2 = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_DONUTCHART, // plotType - NULL, // plotGrouping (Donut charts don't have any grouping) - range(0, count($dataSeriesValues2)-1), // plotOrder - $dataSeriesLabels2, // plotLabel - $xAxisTickValues2, // plotCategory - $dataSeriesValues2 // plotValues -); - -// Set up a layout object for the Pie chart -$layout2 = new PHPExcel_Chart_Layout(); -$layout2->setShowVal(TRUE); -$layout2->setShowCatName(TRUE); - -// Set the series in the plot area -$plotArea2 = new PHPExcel_Chart_PlotArea($layout2, array($series2)); - -$title2 = new PHPExcel_Chart_Title('Test Donut Chart'); - - -// Create the chart -$chart2 = new PHPExcel_Chart( - 'chart2', // name - $title2, // title - NULL, // legend - $plotArea2, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel - Like Pie charts, Donut charts don't have a Y-Axis -); - -// Set the position where the chart should appear in the worksheet -$chart2->setTopLeftPosition('I7'); -$chart2->setBottomRightPosition('P20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart2); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-radar.php b/phpexcel/Examples/33chartcreate-radar.php deleted file mode 100644 index b8b427f..0000000 --- a/phpexcel/Examples/33chartcreate-radar.php +++ /dev/null @@ -1,154 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Jan', 47, 45, 71), - array('Feb', 56, 73, 86), - array('Mar', 52, 61, 69), - array('Apr', 40, 52, 60), - array('May', 42, 55, 71), - array('Jun', 58, 63, 76), - array('Jul', 53, 61, 89), - array('Aug', 46, 69, 85), - array('Sep', 62, 75, 81), - array('Oct', 51, 70, 96), - array('Nov', 55, 66, 89), - array('Dec', 68, 62, 0), - ) -); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$13', NULL, 12), // Jan to Dec - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$13', NULL, 12), // Jan to Dec -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$13', NULL, 12), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$13', NULL, 12), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_RADARCHART, // plotType - NULL, // plotGrouping (Radar charts don't have any grouping) - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues, // plotValues - NULL, // smooth line - PHPExcel_Chart_DataSeries::STYLE_MARKER // plotStyle -); - -// Set up a layout object for the Pie chart -$layout = new PHPExcel_Chart_Layout(); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea($layout, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Radar Chart'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - NULL // yAxisLabel - Radar charts don't have a Y-Axis -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('F2'); -$chart->setBottomRightPosition('M15'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-scatter.php b/phpexcel/Examples/33chartcreate-scatter.php deleted file mode 100644 index 250c61d..0000000 --- a/phpexcel/Examples/33chartcreate-scatter.php +++ /dev/null @@ -1,138 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('', 2010, 2011, 2012), - array('Q1', 12, 15, 21), - array('Q2', 56, 73, 86), - array('Q3', 52, 61, 69), - array('Q4', 30, 32, 0), - ) -); - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), // 2010 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), // 2011 - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), // 2012 -); -// Set the X-Axis Labels -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$5', NULL, 4), // Q1 to Q4 -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$5', NULL, 4), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$5', NULL, 4), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART, // plotType - NULL, // plotGrouping (Scatter charts don't have any grouping) - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues, // plotValues - NULL, // smooth line - PHPExcel_Chart_DataSeries::STYLE_LINEMARKER // plotStyle -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Scatter Chart'); -$yAxisLabel = new PHPExcel_Chart_Title('Value ($k)'); - - -// Create the chart -$chart = new PHPExcel_Chart( - 'chart1', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - NULL, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/33chartcreate-stock.php b/phpexcel/Examples/33chartcreate-stock.php deleted file mode 100644 index b38fd51..0000000 --- a/phpexcel/Examples/33chartcreate-stock.php +++ /dev/null @@ -1,151 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -$objPHPExcel = new PHPExcel(); -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array('Counts', 'Max', 'Min', 'Min Threshold', 'Max Threshold' ), - array(10, 10, 5, 0, 50 ), - array(30, 20, 10, 0, 50 ), - array(20, 30, 15, 0, 50 ), - array(40, 10, 0, 0, 50 ), - array(100, 40, 5, 0, 50 ), - ), null, 'A1', true -); -$objWorksheet->getStyle('B2:E6')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00); - - -// Set the Labels for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesLabels = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', NULL, 1), //Max / Open - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', NULL, 1), //Min / Close - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$1', NULL, 1), //Min Threshold / Min - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$E$1', NULL, 1), //Max Threshold / Max -); -// Set the X-Axis Labels -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$xAxisTickValues = array( - new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$2:$A$6', NULL, 5), // Counts -); -// Set the Data values for each data series we want to plot -// Datatype -// Cell reference for data -// Format Code -// Number of datapoints in series -// Data values -// Data Marker -$dataSeriesValues = array( - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$2:$B$6', NULL, 5), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$C$2:$C$6', NULL, 5), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$2:$D$6', NULL, 5), - new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$E$2:$E$6', NULL, 5), -); - -// Build the dataseries -$series = new PHPExcel_Chart_DataSeries( - PHPExcel_Chart_DataSeries::TYPE_STOCKCHART, // plotType - null, // plotGrouping - if we set this to not null, then xlsx throws error - range(0, count($dataSeriesValues)-1), // plotOrder - $dataSeriesLabels, // plotLabel - $xAxisTickValues, // plotCategory - $dataSeriesValues // plotValues -); - -// Set the series in the plot area -$plotArea = new PHPExcel_Chart_PlotArea(NULL, array($series)); -// Set the chart legend -$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); - -$title = new PHPExcel_Chart_Title('Test Stock Chart'); -$xAxisLabel = new PHPExcel_Chart_Title('Counts'); -$yAxisLabel = new PHPExcel_Chart_Title('Values'); - -// Create the chart -$chart = new PHPExcel_Chart( - 'stock-chart', // name - $title, // title - $legend, // legend - $plotArea, // plotArea - true, // plotVisibleOnly - 0, // displayBlanksAs - $xAxisLabel, // xAxisLabel - $yAxisLabel // yAxisLabel -); - -// Set the position where the chart should appear in the worksheet -$chart->setTopLeftPosition('A7'); -$chart->setBottomRightPosition('H20'); - -// Add the chart to the worksheet -$objWorksheet->addChart($chart); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$filename = str_replace('.php', '.xlsx', __FILE__); -if(file_exists($filename)) { - unlink($filename); -} -$objWriter->save($filename); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/34chartupdate.php b/phpexcel/Examples/34chartupdate.php deleted file mode 100644 index cb586a3..0000000 --- a/phpexcel/Examples/34chartupdate.php +++ /dev/null @@ -1,78 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -if (!file_exists("33chartcreate-bar.xlsx")) { - exit("Please run 33chartcreate-bar.php first." . EOL); -} - -echo date('H:i:s') , " Load from Excel2007 file" , EOL; -$objReader = PHPExcel_IOFactory::createReader("Excel2007"); -$objReader->setIncludeCharts(TRUE); -$objPHPExcel = $objReader->load("33chartcreate-bar.xlsx"); - - -echo date('H:i:s') , " Update cell data values that are displayed in the chart" , EOL; -$objWorksheet = $objPHPExcel->getActiveSheet(); -$objWorksheet->fromArray( - array( - array(50-12, 50-15, 50-21), - array(50-56, 50-73, 50-86), - array(50-52, 50-61, 50-69), - array(50-30, 50-32, 50), - ), - NULL, - 'B2' -); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->setIncludeCharts(TRUE); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/35chartrender.php b/phpexcel/Examples/35chartrender.php deleted file mode 100644 index f0e7963..0000000 --- a/phpexcel/Examples/35chartrender.php +++ /dev/null @@ -1,134 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -$rendererName = PHPExcel_Settings::CHART_RENDERER_JPGRAPH; -$rendererLibrary = 'jpgraph3.5.0b1/src/'; -$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setChartRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/32readwrite*[0-9].xlsx'; - - if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - - $jpegFile = '35'.str_replace('.xlsx', '.jpg', substr($inputFileNameShort,2)); - if (file_exists($jpegFile)) { - unlink($jpegFile); - } - try { - $chart->render($jpegFile); - } catch (Exception $e) { - echo 'Error rendering chart: ',$e->getMessage(); - } - } - } - } - - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done rendering charts as images" , EOL; -echo 'Image files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/36chartreadwriteHTML.php b/phpexcel/Examples/36chartreadwriteHTML.php deleted file mode 100644 index b4bae11..0000000 --- a/phpexcel/Examples/36chartreadwriteHTML.php +++ /dev/null @@ -1,151 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// and its directory location on your server -$rendererName = PHPExcel_Settings::CHART_RENDERER_JPGRAPH; -$rendererLibrary = 'jpgraph3.5.0b1/src'; -$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setChartRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/36write*.xlsx'; - -if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - $groupCount = $chart->getPlotArea()->getPlotGroupCount(); - if ($groupCount == 1) { - $chartType = $chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - echo ' ' , $chartType , EOL; - } else { - $chartTypes = array(); - for($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = 'Multiple Plot ' . array_pop($chartTypes); - echo ' ' , $chartType , EOL; - } elseif (count($chartTypes) == 0) { - echo ' *** Type not yet implemented' , EOL; - } else { - echo ' Combination Chart' , EOL; - } - } - } - } - } - - - $outputFileName = str_replace('.xlsx', '.html', basename($inputFileName)); - - echo date('H:i:s') , " Write Tests to HTML file " , EOL; - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); - $objWriter->setIncludeCharts(TRUE); - $objWriter->save($outputFileName); - echo date('H:i:s') , " File written to " , $outputFileName , EOL; - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/36chartreadwritePDF.php b/phpexcel/Examples/36chartreadwritePDF.php deleted file mode 100644 index 10d62cd..0000000 --- a/phpexcel/Examples/36chartreadwritePDF.php +++ /dev/null @@ -1,174 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** - * PHPExcel - * - * Copyright (C) 2006 - 2014 PHPExcel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * @category PHPExcel - * @package PHPExcel - * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## - */ - -/** Include path **/ -set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/../Classes/'); - -/** PHPExcel_IOFactory */ -include 'PHPExcel/IOFactory.php'; - - -// Change these values to select the Rendering library that you wish to use -// for PDF files, and its directory location on your server -//$rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; -$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF; -//$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; -//$rendererLibrary = 'tcPDF5.9'; -$rendererLibrary = 'mPDF5.4'; -//$rendererLibrary = 'domPDF0.6.0beta3'; -$rendererLibraryPath = '/php/libraries/PDF/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setPdfRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -// Change these values to select the Rendering library that you wish to use -// for Chart images, and its directory location on your server -$rendererName = PHPExcel_Settings::CHART_RENDERER_JPGRAPH; -$rendererLibrary = 'jpgraph3.5.0b1/src'; -$rendererLibraryPath = '/php/libraries/Charts/' . $rendererLibrary; - - -if (!PHPExcel_Settings::setChartRenderer( - $rendererName, - $rendererLibraryPath - )) { - die( - 'NOTICE: Please set the $rendererName and $rendererLibraryPath values' . - EOL . - 'at the top of this script as appropriate for your directory structure' - ); -} - - -$inputFileType = 'Excel2007'; -$inputFileNames = 'templates/36write*.xlsx'; - -if ((isset($argc)) && ($argc > 1)) { - $inputFileNames = array(); - for($i = 1; $i < $argc; ++$i) { - $inputFileNames[] = dirname(__FILE__) . '/templates/' . $argv[$i]; - } -} else { - $inputFileNames = glob($inputFileNames); -} -foreach($inputFileNames as $inputFileName) { - $inputFileNameShort = basename($inputFileName); - - if (!file_exists($inputFileName)) { - echo date('H:i:s') , " File " , $inputFileNameShort , ' does not exist' , EOL; - continue; - } - - echo date('H:i:s') , " Load Test from $inputFileType file " , $inputFileNameShort , EOL; - - $objReader = PHPExcel_IOFactory::createReader($inputFileType); - $objReader->setIncludeCharts(TRUE); - $objPHPExcel = $objReader->load($inputFileName); - - - echo date('H:i:s') , " Iterate worksheets looking at the charts" , EOL; - foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { - $sheetName = $worksheet->getTitle(); - echo 'Worksheet: ' , $sheetName , EOL; - - $chartNames = $worksheet->getChartNames(); - if(empty($chartNames)) { - echo ' There are no charts in this worksheet' , EOL; - } else { - natsort($chartNames); - foreach($chartNames as $i => $chartName) { - $chart = $worksheet->getChartByName($chartName); - if (!is_null($chart->getTitle())) { - $caption = '"' . implode(' ',$chart->getTitle()->getCaption()) . '"'; - } else { - $caption = 'Untitled'; - } - echo ' ' , $chartName , ' - ' , $caption , EOL; - echo str_repeat(' ',strlen($chartName)+3); - $groupCount = $chart->getPlotArea()->getPlotGroupCount(); - if ($groupCount == 1) { - $chartType = $chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); - echo ' ' , $chartType , EOL; - } else { - $chartTypes = array(); - for($i = 0; $i < $groupCount; ++$i) { - $chartTypes[] = $chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); - } - $chartTypes = array_unique($chartTypes); - if (count($chartTypes) == 1) { - $chartType = 'Multiple Plot ' . array_pop($chartTypes); - echo ' ' , $chartType , EOL; - } elseif (count($chartTypes) == 0) { - echo ' *** Type not yet implemented' , EOL; - } else { - echo ' Combination Chart' , EOL; - } - } - } - } - } - - - $outputFileName = str_replace('.xlsx', '.pdf', basename($inputFileName)); - - echo date('H:i:s') , " Write Tests to HTML file " , EOL; - $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); - $objWriter->setIncludeCharts(TRUE); - $objWriter->save($outputFileName); - echo date('H:i:s') , " File written to " , $outputFileName , EOL; - - $objPHPExcel->disconnectWorksheets(); - unset($objPHPExcel); -} - -// Echo memory peak usage -echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/37page_layout_view.php b/phpexcel/Examples/37page_layout_view.php deleted file mode 100644 index 070f512..0000000 --- a/phpexcel/Examples/37page_layout_view.php +++ /dev/null @@ -1,83 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("PHPOffice") - ->setLastModifiedBy("PHPOffice") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("Office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!'); - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - -// Set the page layout view as page layout -$objPHPExcel->getActiveSheet()->getSheetView()->setView(PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT); - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -// Save Excel5 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/38cloneWorksheet.php b/phpexcel/Examples/38cloneWorksheet.php deleted file mode 100644 index 901b887..0000000 --- a/phpexcel/Examples/38cloneWorksheet.php +++ /dev/null @@ -1,118 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', 'Hello') - ->setCellValue('B2', 'world!') - ->setCellValue('C1', 'Hello') - ->setCellValue('D2', 'world!'); - -// Miscellaneous glyphs, UTF-8 -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', 'Miscellaneous glyphs') - ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç'); - - -$objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld"); -$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Clone worksheet -echo date('H:i:s') , " Clone worksheet" , EOL; -$clonedSheet = clone $objPHPExcel->getActiveSheet(); -$clonedSheet - ->setCellValue('A1', 'Goodbye') - ->setCellValue('A2', 'cruel') - ->setCellValue('C1', 'Goodbye') - ->setCellValue('C2', 'cruel'); - -// Rename cloned worksheet -echo date('H:i:s') , " Rename cloned worksheet" , EOL; -$clonedSheet->setTitle('Simple Clone'); -$objPHPExcel->addSheet($clonedSheet); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/39dropdown.php b/phpexcel/Examples/39dropdown.php deleted file mode 100644 index 5dadc09..0000000 --- a/phpexcel/Examples/39dropdown.php +++ /dev/null @@ -1,175 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties() - ->setCreator("PHPOffice") - ->setLastModifiedBy("PHPOffice") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("Office PHPExcel php") - ->setCategory("Test result file"); - - -function transpose($value) { - return array($value); -} - -// Add some data -$continentColumn = 'D'; -$column = 'F'; - -// Set data for dropdowns -foreach(glob('./data/continents/*') as $key => $filename) { - $continent = pathinfo($filename, PATHINFO_FILENAME); - echo "Loading $continent", EOL; - $continent = str_replace(' ','_',$continent); - $countries = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - $countryCount = count($countries); - - // Transpose $countries from a row to a column array - $countries = array_map('transpose', $countries); - $objPHPExcel->getActiveSheet() - ->fromArray($countries, null, $column . '1'); - $objPHPExcel->addNamedRange( - new PHPExcel_NamedRange( - $continent, - $objPHPExcel->getActiveSheet(), $column . '1:' . $column . $countryCount - ) - ); - $objPHPExcel->getActiveSheet() - ->getColumnDimension($column) - ->setVisible(false); - - $objPHPExcel->getActiveSheet() - ->setCellValue($continentColumn . ($key+1), $continent); - - ++$column; -} - -// Hide the dropdown data -$objPHPExcel->getActiveSheet() - ->getColumnDimension($continentColumn) - ->setVisible(false); - -$objPHPExcel->addNamedRange( - new PHPExcel_NamedRange( - 'Continents', - $objPHPExcel->getActiveSheet(), $continentColumn . '1:' . $continentColumn . ($key+1) - ) -); - - -// Set selection cells -$objPHPExcel->getActiveSheet() - ->setCellValue('A1', 'Continent:'); -$objPHPExcel->getActiveSheet() - ->setCellValue('B1', 'Select continent'); -$objPHPExcel->getActiveSheet() - ->setCellValue('B3', '=' . $column . 1); -$objPHPExcel->getActiveSheet() - ->setCellValue('B3', 'Select country'); -$objPHPExcel->getActiveSheet() - ->getStyle('A1:A3') - ->getFont()->setBold(true); - -// Set linked validators -$objValidation = $objPHPExcel->getActiveSheet() - ->getCell('B1') - ->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ) - ->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ) - ->setAllowBlank(false) - ->setShowInputMessage(true) - ->setShowErrorMessage(true) - ->setShowDropDown(true) - ->setErrorTitle('Input error') - ->setError('Continent is not in the list.') - ->setPromptTitle('Pick from the list') - ->setPrompt('Please pick a continent from the drop-down list.') - ->setFormula1('=Continents'); - -$objPHPExcel->getActiveSheet() - ->setCellValue('A3', 'Country:'); -$objPHPExcel->getActiveSheet() - ->getStyle('A3') - ->getFont()->setBold(true); - -$objValidation = $objPHPExcel->getActiveSheet() - ->getCell('B3') - ->getDataValidation(); -$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST ) - ->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION ) - ->setAllowBlank(false) - ->setShowInputMessage(true) - ->setShowErrorMessage(true) - ->setShowDropDown(true) - ->setErrorTitle('Input error') - ->setError('Country is not in the list.') - ->setPromptTitle('Pick from the list') - ->setPrompt('Please pick a country from the drop-down list.') - ->setFormula1('=INDIRECT($B$1)'); - - -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(12); -$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - -// Save Excel 2007 file -// This linked validation list method only seems to work for Excel2007, not for Excel5 -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/40duplicateStyle.php b/phpexcel/Examples/40duplicateStyle.php deleted file mode 100644 index be31951..0000000 --- a/phpexcel/Examples/40duplicateStyle.php +++ /dev/null @@ -1,51 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); -$worksheet = $objPHPExcel->getActiveSheet(); - -echo date('H:i:s') , " Create styles array" , EOL; -$styles = array(); -for ($i = 0; $i < 10; $i++) { - $style = new PHPExcel_Style(); - $style->getFont()->setSize($i + 4); - $styles[] = $style; -} - -echo date('H:i:s') , " Add data (begin)" , EOL; -$t = microtime(true); -for ($col = 0; $col < 50; $col++) { - for ($row = 0; $row < 100; $row++) { - $str = ($row + $col); - $style = $styles[$row % 10]; - $coord = PHPExcel_Cell::stringFromColumnIndex($col) . ($row + 1); - $worksheet->setCellValue($coord, $str); - $worksheet->duplicateStyle($style, $coord); - } -} -$d = microtime(true) - $t; -echo date('H:i:s') , " Add data (end), time: " . round($d, 2) . " s", EOL; - - -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; - - -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -echo date('H:i:s') , " Done writing file" , EOL; -echo 'File has been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/41password.php b/phpexcel/Examples/41password.php deleted file mode 100644 index 7b03e4f..0000000 --- a/phpexcel/Examples/41password.php +++ /dev/null @@ -1,84 +0,0 @@ -'); - -date_default_timezone_set('Europe/London'); - -include "05featuredemo.inc.php"; - -/** Include PHPExcel_IOFactory */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php'; - - -// Set password against the spreadsheet file -$objPHPExcel->getSecurity()->setLockWindows(true); -$objPHPExcel->getSecurity()->setLockStructure(true); -$objPHPExcel->getSecurity()->setWorkbookPassword('secret'); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/42richText.php b/phpexcel/Examples/42richText.php deleted file mode 100644 index 4e99b85..0000000 --- a/phpexcel/Examples/42richText.php +++ /dev/null @@ -1,159 +0,0 @@ -'); - -/** Include PHPExcel */ -require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'; - - -// Create new PHPExcel object -echo date('H:i:s') , " Create new PHPExcel object" , EOL; -$objPHPExcel = new PHPExcel(); - -// Set document properties -echo date('H:i:s') , " Set document properties" , EOL; -$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") - ->setLastModifiedBy("Maarten Balliauw") - ->setTitle("PHPExcel Test Document") - ->setSubject("PHPExcel Test Document") - ->setDescription("Test document for PHPExcel, generated using PHP classes.") - ->setKeywords("office PHPExcel php") - ->setCategory("Test result file"); - - -// Add some data -echo date('H:i:s') , " Add some data" , EOL; - -$html1=' -

My very first example of rich text
generated from html markup

-

- -This block contains an italicized word; -while this block uses an underline. - -

-

-I want to eat healthy foodpizza. - -'; - -$html2='

- - 100°C is a hot temperature - -
- - 10°F is cold - -

'; - -$html3='23 equals 8'; - -$html4='H2SO4 is the chemical formula for Sulphuric acid'; - - -$wizard = new PHPExcel_Helper_HTML; -$richText = $wizard->toRichTextObject($html1); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A1', $richText); - -$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(48); -$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A1') - ->getAlignment() - ->setWrapText(true); - -$richText = $wizard->toRichTextObject($html2); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A2', $richText); - -$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1); -$objPHPExcel->getActiveSheet()->getStyle('A2') - ->getAlignment() - ->setWrapText(true); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A3', $wizard->toRichTextObject($html3)); - -$objPHPExcel->setActiveSheetIndex(0) - ->setCellValue('A4', $wizard->toRichTextObject($html4)); - - -// Rename worksheet -echo date('H:i:s') , " Rename worksheet" , EOL; -$objPHPExcel->getActiveSheet()->setTitle('Simple'); - - -// Set active sheet index to the first sheet, so Excel opens this as the first sheet -$objPHPExcel->setActiveSheetIndex(0); - - -// Save Excel 2007 file -echo date('H:i:s') , " Write to Excel2007 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); -$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Save Excel 95 file -echo date('H:i:s') , " Write to Excel5 format" , EOL; -$callStartTime = microtime(true); - -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; - -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL; -echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL; - -// Echo done -echo date('H:i:s') , " Done writing files" , EOL; -echo 'Files have been created in ' , getcwd() , EOL; diff --git a/phpexcel/Examples/Excel2003XMLReader.php b/phpexcel/Examples/Excel2003XMLReader.php deleted file mode 100644 index 99d6df8..0000000 --- a/phpexcel/Examples/Excel2003XMLReader.php +++ /dev/null @@ -1,61 +0,0 @@ -load("Excel2003XMLTest.xml"); - - -$callEndTime = microtime(true); -$callTime = $callEndTime - $callStartTime; -echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , PHP_EOL; -// Echo memory usage -echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - - -echo date('H:i:s') , " Write to Excel5 format" , PHP_EOL; -$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); -$objWriter->save(str_replace('.php', '.xls', __FILE__)); -echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', __FILE__) , PHP_EOL; - - -// Echo memory peak usage -echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , PHP_EOL; - -// Echo done -echo date('H:i:s') , " Done writing file" , PHP_EOL; diff --git a/phpexcel/Examples/Excel2003XMLTest.xml b/phpexcel/Examples/Excel2003XMLTest.xml deleted file mode 100644 index fb2d305..0000000 --- a/phpexcel/Examples/Excel2003XMLTest.xml +++ /dev/null @@ -1 +0,0 @@ -3#0000004#0000ff5#0080006#00ccff7#8000808#9933669#c0c0c010#c4751211#ccffcc12#ddbc7d13#ff000014#ff00ff15#ff660016#ff990017#ff99cc18#ffff0090001386024075FalseFalse - - - - - - - - - - - - - - - - - - - - - - - - - - - - Test String 1 - 1 - 5 - A - E - 6 - AE - - - Test - String 2 - 2 - 6 - B - F - 8 - BF - - - Test #3 - 3 - 7 - C - G - 10 - CG - - - Test with (") in string - 4 - 8 - D - H - 12 - DH - - - 10 - 26 - 36 - - - 1.23 - 1 - - - - 2.34 - 0 - - - 3.45 - - - - 1960-12-19T00:00:00.000 - TOP - #N/A - - - 1.5 - #DIV/0! - - - BOTTOM - - - LEFT - - - RIGHT - - - - BOX - - Test Column 1 - - - Test Column 2 - - - Test Column 3 - -
- - -
-