Versiunea offline a site-ului, sau pdf și - php - site-ul romanului de parpalac

Recent am făcut o versiune offline a articolelor scrise pe. Din punct de vedere tehnic, acest fișier pdf este puțin mai mare decât un megabyte, care este generat automat pe server. Include textele articolelor și fotografiilor pentru ele. Actualizată pe măsură ce apar articole noi. Mai jos sunt detaliile cum funcționează acest lucru.







În unele cazuri, este mai convenabil ca vizitatorii unui site să folosească o versiune offline care poate fi descărcată pe un computer local. Proprietarii "fericiți" de modemuri, precum și în timp ce nu plătesc pentru utilizatorii de Internet ar spune pentru versiuni offline ale unor site-uri "mulțumesc".

Una dintre opțiunile posibile pentru versiunile offline ale site-urilor bazate pe utilizarea formatului CHM (a se vedea. De exemplu, nota lui Dmitri Smirnov). CHM (sau Microsoft HTML Help) - formatul fișierelor pentru Windows Help 98. Cu toate acestea, a fost un succes nu numai pentru sistemele de aplicare de referință, dar, de asemenea, pentru toate tipurile de tutoriale și documentație, care a creat un mare mulți. Deși băieții de la Microsoft au venit în curând cu un alt format de referință, CHM ei încă susțin. De asemenea, au fost create programe care citesc CHM pentru Linux.

În această variantă, trebuie mai întâi să salvați toate fișierele HTML oferite browserelor fișierelor și apoi, împreună cu imaginile și CSS, să compilați un singur fișier CHM. Această procedură are mai multe avantaje:

Desigur, există o serie de deficiențe, la care se pot adăuga următoarele:

  • când citiți un document CHM, este neclar cât de mult text este lăsat să citiți;
  • anumite dificultăți legate de imprimarea unui document.

Cu toate acestea, cel mai important dezavantaj este lipsa compilatoarelor CHM care rulează sub Linux. Acest lucru înseamnă că automatizarea completă la crearea unei versiuni offline nu poate fi realizată. Pe computerul local, care rulează Windows trebuie să păstreze o copie a site-ului, pentru a compila CHM și încărcați-l la server (selectați Windows numai găzduire, datorită posibilității de a genera mult sens CHM fișiere-nr).

În legătură cu aceste deficiențe, este logic să alegeți un alt format pentru versiunea off-line. Unul dintre cele posibile este PDF. După cum sugerează și numele său (Portable Document Format), utilizatorii calculatoarelor și sistemelor de operare nu ar trebui să aibă probleme la citirea fișierelor PDF. Acest format acceptă o serie de caracteristici care, în principiu, vă permit să faceți o versiune offline a site-urilor. Fișierele PDF pot conține informații text și grafice, hyperlink-uri interne și externe, marcaje care permit organizarea unui sistem de partiții pe bază de copaci. Să vedem cum arată acest lucru în practică.

Pentru lucrul cu fișierele PDF în PHP există o interfață cu biblioteca PDFlib. Cu toate acestea, această bibliotecă ar putea să nu fie pe server. Licența, prin care este distribuită, îi limitează utilizarea. Din alte variante este posibil să se noteze clasa FPDF. Această clasă vă permite să creați fișiere PDF direct din PHP fără biblioteci suplimentare. Acesta conține cele mai simple instrucțiuni pentru afișarea textului și graficii formatate. De exemplu, tipăriți o astfel de linie într-un astfel de font, începând de la o anumită poziție. Din păcate, nu există niciun indiciu de suport HTML în FDPF. Cu toate acestea, exemplele din documentație funcționează corect, iar acest lucru nu poate decât să inspire căutări suplimentare.







Pentru a folosi FPDF pentru scopurile noastre, trebuie să adăugăm un parser HTML în acesta. Nu am vrut să scriu singur acest parser și am decis să profit de evoluțiile deja existente. Cel mai promițător a fost HTML2FPDF 3.0 beta. Aceasta este o extensie a clasei FPDF, completând-o cu un parser HTML, care susține imagini GIF (FPDF în sine suportă doar PNG și JPEG) și o serie de alte îmbunătățiri minore. Cu toate acestea, în practică sa dovedit că aceasta este într-adevăr o "beta". A trebuit să săpat în cod și să repet un număr suficient de bug-uri înainte ca scripturile să devină mai mult sau mai puțin acceptabile.

Să vorbim acum despre particularitățile extensiei HTML2FPDF. A declarat că susține HTML și parțial CSS, dar de fapt acest sprijin este foarte limitat:

  • CSS nu este acceptat în nici un fel;
  • Implementarea incompletă a conceptului de cutii de linii și blocuri (afișare: inline și display: block;), absența blocurilor plutitoare (float), probleme cu eticheta blockquote;
  • imaginile nu procesează atributul Align. adică textul nu poate circula în jurul imaginilor;
  • Nu puteți modifica dimensiunea fontului pentru o anumită secțiune în text (etichete mari și mici).

Aceasta înseamnă că HTML-ul original trebuie să fie supus anumitor transformări: înlocuiți etichetele, cum ar fi mici și blochează cu i. Cu toate acestea, și aici nu este așa de simplu. În interiorul etichetei liniei i nu pot fi mai multe paragrafe - blochează etichetele p (italic doar primul), astfel încât conținutul fiecărei etichete p din blocul de bloc trebuie să fie inclus în eticheta i.

Totuși, trebuie să subliniem problema sprijinului chirilic. Implicit, FPDF acceptă codarea cp1252 pentru fonturile Times, Arial, Courier. Cu toate acestea, puteți utiliza orice font TrueType sau Type1, iar suportul pentru codarea chirilică cp1251 este, de asemenea, disponibil. Fontul poate fi încorporat în document sau nu, sperând că acesta va fi instalat de utilizator în sistem.

Pe scurt, procedura de adăugare a fonturilor este după cum urmează. Cu ajutorul fișierelor fonturilor ttf2pt1 de utilitate ttf generate fișiere cu extensia .amf. Apoi, un font script / makefont / makefont.php (dosar cu FPDF) de la AMF-fișiere sunt fișiere cu descrierea fontului pentru FPDF cu .php extensie, precum și ttf - fonturi comprimat cu extensia .Z. Fișierul .php trebuie să fie plasat în folderul de fonturi din folderul FPDF. Dacă te duci la același loc și un fișier cu extensia .Z, apoi Crearea PDF-fișierele font va fi încorporat în ea.

Trebuie remarcat faptul că toate fișierele necesare pot fi generate online folosind serviciul fPDF Font File Converter. Mai multe detalii despre subtilitățile adăugării de noi fonturi pot fi găsite pe site-ul FPDF.

HTML2FPDF designer de clasă (funcția HTML2FPDF () în fișierul html2fpdf.php) trebuie să se înregistreze fiecare font este adăugat prin apelarea AddFont ( 'Numefont', '', 'font.php'). Apoi puteți trece la acest font cu ajutorul funcției SetFont ('FontName'). Dacă doriți să schimbați fontul de bază, schimbă denumirea sa în toate SetFont () funcția de apel în fișierul html2fpdf.php. Nu uitați că fonturile italice, bold și bold sunt stocate în fișiere separate. Toate aceste fișiere trebuie să fie adăugate la FPDF.

FPDF acceptă marcaje. Mai multe marcaje vă permit să faceți ușor un meniu copac. Cu toate acestea, trebuie luat în considerare un lucru: caracterele rusești ar trebui să fie codificate în UTF-16. Așa arată arborele marcajelor pentru exemplul nostru (va fi discutat):

Versiunea offline a site-ului, sau pdf și - php - site-ul romanului de parpalac

În ceea ce privește viteza, atunci metoda în discuție cu aceasta nu este bine. Cu o cantitate mare de cod HTML (mai ales cu imagini), timpul de funcționare al scriptului poate depăși limita de 30 de secunde. Cu toate acestea, aceasta nu este o dificultate insurmontabilă, dacă este necesar, se poate recurge la metoda de calcul separat. Această metodă este descrisă în cartea lui Dmitri Koterova „Teach PHP 4“ pe scurt esența ei constă în executarea unei mici părți a lungi calculat și stocate într-un fișier de rezultate intermediare, după fiecare apel către o pagină web.

În concluzie, oferim instrucțiuni pas cu pas pentru cei care decid să utilizeze metoda de creare a fișierelor PDF pe server din HTML descris aici.

Metoda propusă de creare automată a documentelor PDF pe server poate fi utilizată nu numai pentru versiunile offline ale site-urilor, dar și pentru pregătirea listelor de prețuri, a textelor contractelor și a altor documente pe care utilizatorul le va tipări.







Articole similare

Trimiteți-le prietenilor: