LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir des articles frais.
Courriel
Prénom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam

Où cela peut-il être utile?  Si nécessaire, générez des fichiers prêts à imprimer dans une application Web selon un modèle matériel arbitraire existant: certificats, badges, badges et plus encore.

Pourquoi pdf?  Le format PDF vous permet de créer des documents avec un certain nombre d'avantages indéniables: ouverture, multiplateforme, prévalence et, surtout, précision et invariabilité de la transmission des données tout au long de la chaîne de création, de visualisation et d'impression.

Qu'est-ce que le sel?  Dans l'utilisation de fichiers SVG comme modèles avec la possibilité de remplacer les champs nécessaires avec une conversion ultérieure en PDF.

Quels en sont les avantages?  La possibilité de créer et de modifier rapidement des modèles très complexes dans des éditeurs vectoriels familiers tels que Adobe Illustrator, Corel Draw ou Inkscape. Programmation facile et utilisation uniquement de logiciels gratuits. Un autre avantage important est la possibilité d'utiliser de manière transparente UTF-8 pour les textes insérés.

Que faut-il pour cela?  Pour utiliser cette méthode, vous avez besoin d'un serveur dédié avec la possibilité d'installer vos applications (Inkscape et GhostScript) et d'exécuter des commandes système. Dans le même temps, tout fonctionnera à la fois sur la plate-forme Windows et sur Linux.

  Je pense que la brève FAQ a couvert les principales questions sur cette méthode, alors passez immédiatement à l'analyse de son essence.

Comme vous le savez, le format graphique vectoriel SVG est en fait un fichier XML, donc le fichier déjà créé est assez simple à modifier avec les outils de programmation les plus simples. Dans le cas de l'utilisation du fichier SVG comme modèle dur, le processus est grandement simplifié, car nous n'avons pas besoin de modifier la structure du document, mais nous devons simplement remplacer les valeurs de texte nécessaires ou les images tramées encodées en base64.

Vous pouvez créer le modèle initial dans n’importe quel éditeur de vecteur prenant en charge l’exportation vers svg: Adobe Illustrator, Corel Draw ou Inkscape. L'utilisation de ce dernier est souhaitable, au moins au dernier stade final, car, en définitive, il lui appartient de réaliser la transformation nécessaire.

Lorsque vous utilisez un raster dans un modèle, vous pouvez utiliser 2 méthodes, stocker le raster dans un fichier externe séparé ou intégré au fichier SVG lui-même. Si nécessaire, changez le bitmap dans le modèle dans le premier cas, vous pouvez changer le fichier avant la génération. Lorsque vous stockez une image incorporée dans un fichier, écrivez la ligne dans la propriété de l'URL de l'objet de dessin:

  où (IMAGE) est le champ à insérer par le moteur de modèle base64 pour l'image codée.

Par exemple, dessinons un modèle de badge simple, je pense que vous me pardonnerez d'être tordu, je ne suis pas un artiste, mais pour une utilisation réelle, vous pouvez commander une mise en page vectorielle auprès de votre designer.


  Je n'ai pas utilisé de bitmap variable, le laissant pour mes devoirs, et je me suis limité aux champs de texte variables.

Je pense que vous avez déjà remarqué qu'à la place du texte supposé, les balises de modèle sont insérées (utilisées dans cet exemple). C'est l'utilisation de balises compatibles XML qui permet de les enregistrer dans l'éditeur de vecteur lui-même sans avoir recours à des modifications supplémentaires.

Nous avons un modèle, et sans aucun problème, nous pouvons insérer les données dont nous avons besoin, mais comment allons-nous réellement effectuer la conversion? Pour ce faire, utilisez l'interface de ligne de commande d'Inkscape:

  # Convertir en PDF
  inkscape -A

  Utilisation de la clé " -A»Nous recevrons immédiatement un fichier PDF, mais, malheureusement, le PDF créé est très volumineux. Vous pouvez contourner ce problème. À savoir, pour utiliser l'exportation SVG non pas directement au format PDF, mais en chaîne SVG-\u003e PS-\u003e PDF. En utilisant l'utilitaire ps2pdf du kit Ghost Script pour la formation finale du fichier PDF, nous pouvons réduire la taille du fichier final de dizaines de fois.
  # Convertir en fichier PostScript
  inkscape -P
  # convertir en fichier PostScript en PDF
  ps2pdf

  Le seul point négatif est que dans ce cas, nous perdrons tous les effets de transparence, car le format PostScript ne le prend pas en charge.

Pour une portabilité complète des documents générés, vous pouvez ajouter l'option Inscape " -T»Convertissez tout le texte en courbes. De cette façon, nous pouvons nous débarrasser des problèmes par la présence de polices sur la machine cliente, ainsi que des problèmes d'encodage.

Nous avons maintenant tout ce dont nous avons besoin: un modèle SVG et des commandes de conversion. Nous allons écrire un script php qui produirait le fichier pdf généré à partir du modèle.

/* ****************************************************************************************
   * Script pour créer un saut de fichier pdf en utilisant la conversion séquentielle
   * un modèle en fichier svg, après quoi il est converti en fichier PostScript par Inkscape,
   * et ce dernier est converti en pdf à l'aide de l'utilitaire ps2pdf.
*
   * Auteur: Shebastyuk V.V. alias Jstingo
* **************************************************************************************** */

  / * paramètres de script * /

// Le chemin du dossier avec les fichiers temporaires
   // (si non spécifié, les fichiers seront stockés dans le dossier temporaire du système)
$ tmp_dir \u003d ""; // génère des chemins vers des fichiers temporaires svg, ps et pdf
$ tmp_svg_file \u003d tempnam ($ tmp_dir, "");
$ tmp_ps_file \u003d tempnam ($ tmp_dir, "");
$ tmp_pdf_file \u003d tempnam ($ tmp_dir, ""); / * Moteur de modèle FastTemplate * /
inclure ( "Inclure / cls_fast_template.php");
$ tpl \u003d new FastTemplate ("modèles"); essayez ( / * Bloc avec les données obtenues pour la normalisation * /
/* ........................... */
$ user_name \u003d "JStingo";
$ register_date \u003d "28/09/2007";
/* ........................... */
  / * forme le nom du fichier résultant sous la forme User_name.pdf * /
$ pdf_file_name \u003d $ user_name. ".pdf"; / * traitement du modèle et obtention du fichier résultant * /$ tpl -\u003e define (array ("svg" \u003d\u003e "template.svg"));
$ tpl -\u003e assign (array ("USER_NAME" \u003d\u003e $ user_name,
"R_DATE" \u003d\u003e $ register_date
));
$ tpl -\u003e parse ("SVG", "svg"); // sauvegarde le fichier svg résultant
$ tpl -\u003e FastWrite ("SVG", $ tmp_svg_file); // convertir le fichier svg en utilisant inkscape "et en fichier ps
   // Clés
   // -T - utilisé pour convertir le texte en courbes (pour le support de police normal)
   // -P - indique la nécessité de convertir en un fichier PostScript
système ( "Inkscape -T $ tmp_svg_file -P $ tmp_ps_file", $ success); if ($ success! \u003d 0)
lever une nouvelle exception ( "Erreur lors de la génération du fichier ps.");// convertir le fichier ps en pdf en utilisant l'utilitaire ps2pdf

   // Clés
   // -dUseFlateCompression \u003d true - définit l'utilisation de la compression
   // -dPDFSETTINGS \u003d / printer - définit l'optimisation pour l'impression

système ( "Ps2pdf -dUseFlateCompression \u003d true -dPDFSETTINGS \u003d / printer $ tmp_ps_file $ tmp_pdf_file", $ succès); // en cas de conversion infructueuse, lève une exception
if ($ success! \u003d 0)
lever une nouvelle exception ( "Erreur lors de la création du fichier pdf.");// en-tête que nous enverrons le fichier pdf
en-tête ( "Type de contenu: application / pdf");// Sera appelé comme $ pdf_file_name
en-tête ( "Content-Disposition: attachment; filename \u003d" ". $ pdf_file_name. "" "); // passe le fichier généré
readfile ($ tmp_pdf_file); // supprime les fichiers temporaires
@ unlink ($ tmp_svg);
   @ unlink ($ tmp_ps_file);
@ unlink ($ tmp_pdf_file); catch (Exception $ e) (
/ * Si une erreur s'est produite quelque part, signalez-la * /
$ tpl -\u003e define (array ("error" \u003d\u003e "error.tpl"));
$ tpl -\u003e assign ("ERROR", $ e -\u003e getMessage ()); $ tpl -\u003e parse ("ERROR", "error");
$ tpl -\u003e FastPrint ("ERREUR");
}
?>

  Je pense qu'il ne sera pas difficile pour tout le monde de réécrire le script dans un autre langage de programmation.

Pour la première fois face à la tâche de générer des documents PDF sur un site, tout programmeur (j'espère) entamera son parcours en recherchant des solutions toutes faites, à savoir une bibliothèque qui lui offrira ces opportunités. J'avais besoin d'une bibliothèque en PHP, pour ne pas être plus sage à l'avenir, car le site fonctionnait en PHP. Je voudrais également qu'il soit gratuit et qu'il puisse être utilisé librement à des fins commerciales. J'ai trouvé des informations sur 3 options:

PDFLib dans la version gratuite ne prend pas en charge utf-8, ce qui est mauvais. Avec FPDF, presque la même histoire, j'ai donc abandonné ces options immédiatement et ne me suis pas donné la peine de les utiliser. Il y a beaucoup d'informations sur TCPDF sur le réseau. Cette bibliothèque fait également partie de nombreux CMS populaires.

Il existe des versions pour PHP4 et PHP5. J'ai besoin de cinq.

Décompressez l'archive. Dans le répertoire tcpdf, nous verrons la liste suivante des fichiers et répertoires:

Cache config doc - documentation (vous pouvez la jeter pour plus de facilité) exemples - vous pouvez également lancer des images de polices 2dbarcodes.php barcodes.php htmlcolors.php tcpdf.php unicode_data.php tcpdf.crt tcpdf.fdf CHANGELOG.TXT LICENSE.TXT READ

Lors de la génération d'un document, TCPDF inclut les polices utilisées dans le document. Ces polices se trouvent dans le répertoire des polices. Chaque police a trois fichiers:

FontName.php FontName.z FontName.ctg.z

Il n'y a pas de polices cyrilliques, ce qui bien sûr ne nous convient pas. Si vous prévoyez d'utiliser l'alphabet cyrillique dans le document, vous pouvez tout supprimer sauf helvetica.php, car il est utilisé par la bibliothèque par défaut et le dossier utils, où vous pouvez trouver tout le nécessaire pour préparer les polices cyrilliques.

Disons que nous avons une police Arial de style normal. Nous prenons la police Arial (style - normal) du dossier système Windows (par exemple) - le fichier arial.ttf - et la copions dans le dossier fonts / utils.

Il y a un utilitaire ttf2ufm dans ce dossier, avec lequel nous devons alimenter le fichier arial.ttf:

Php -q makefont.php arial.ttf arial.ufm

Si votre machine locale ne possède pas d'interpréteur PHP, vous pouvez exécuter le fichier suivant sur le serveur:

Si vous avez «alimenté» plusieurs fichiers et souhaitez créer toutes les polices (pour lesquelles les fichiers * .ufm) sont disponibles dans le dossier à la fois, exécutez makeallttffonts.php.

Une fois cet utilitaire opérationnel, trois fichiers apparaîtront dans le dossier utils: arial.php, arial.z, arial.ctg.z, que nous devrons déplacer vers le dossier fonts. Les fichiers arial.ttf et arial.ufm ne sont plus nécessaires, nous pouvons donc les supprimer en toute sécurité.

En conséquence, nous avons préparé la police Arial, qui sera jointe au fichier PDF généré. Mais il convient de noter que la taille du document PDF généré augmentera d'environ la taille du fichier de police arial.z. Il est également nécessaire de tenir compte du fait que si nous voulons afficher l'inscription en italique, nous devrons créer une police ariali distincte pour cela, ou si un caractère gras - arialb.

Il est temps de créer notre document.

   // crée un nouveau document PDF $ pdf \u003d new TCPDF ("P", "mm", "A4", true, "UTF-8", false);
   // définit les informations du document $ pdf-\u003e SetAuthor ("Votre nom"); $ pdf-\u003e SetTitle ("Le nom de notre document");
   // définit les données d'en-tête par défaut $ pdf-\u003e SetHeaderData (PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
   // définir les polices d'en-tête et de pied de page $ pdf-\u003e setHeaderFont (Array (PDF_FONT_NAME_MAIN, "", PDF_FONT_SIZE_MAIN)); $ pdf-\u003e setFooterFont (Array (PDF_FONT_NAME_DATA, "", PDF_FONT_SIZE_DATA));
   // définit la police à espacement fixe par défaut $ pdf-\u003e SetDefaultMonospacedFont (PDF_FONT_MONOSPACED);
   // définir les marges $ pdf-\u003e SetMargins (PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $ pdf-\u003e SetHeaderMargin (PDF_MARGIN_HEADER); $ pdf-\u003e SetFooterMargin (PDF_MARGIN_FOOTER);
   // définir les sauts de page automatiques $ pdf-\u003e SetAutoPageBreak (TRUE, PDF_MARGIN_BOTTOM);
   // définir la police $ pdf-\u003e SetFont ("fois", "BI", 16);
   // ajoute une page $ pdf-\u003e AddPage ();
   // affiche une ligne avec Cell () $ pdf-\u003e Cell (0, 12, "Exemple 1", 1, 1, "C");
   // Ferme et édite le document PDF $ pdf-\u003e Output ("example_1.pdf", "I"); ?\u003e

Ceci est un exemple très simple. Dans le dossier des exemples, il existe de nombreux exemples plus complexes qui illustrent presque toutes les fonctionnalités de la bibliothèque.

Je donnerai également quelques liens utiles:

    Documentation TCPDF dans le cadre de Joomla http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp\u003dtcpdf_docs

    Un article qui m'a beaucoup aidé dans mon temps et dont j'ai utilisé le matériel pour écrire cet article

La génération de documents pdf est une tâche quotidienne dans le développement web. La liste de ces documents comprend les factures, les factures, les politiques et autres. Il existe de nombreuses bibliothèques prêtes à l'emploi pour résoudre ce problème, y compris php. Par exemple, mpdf, tcpdf et bien d'autres. Le fichier peut être assemblé à l'aide de l'API de ces bibliothèques, mais c'est une tâche assez longue. Et il n'y a jamais beaucoup de temps pour la mise en œuvre de la tâche, non? Par conséquent, le plus souvent, un fichier pdf est créé à partir d'une représentation html, ce qui est assez pratique. Mais, malheureusement, tout n'est pas si simple. Cette approche a de nombreux pièges qui peuvent énerver n'importe qui.

Par exemple:

  • Les styles ne peuvent pas être connectés séparément, ils doivent donc être inclus dans le document html en tant qu'unité distincte ou intégrés pour chaque élément. Il n'y a rien à craindre, un léger inconvénient.
  • Malheureusement, dans de telles bibliothèques, certains styles peuvent ne pas fonctionner comme prévu, ou ne pas fonctionner en principe. C'est le principal inconvénient.
  • Il ressort du paragraphe précédent que la création d'un document qui répond autant que possible aux exigences est très laborieuse et parfois tout simplement impossible.
  • Et dans le cas du développement pour Bitrix, il y a un autre problème. Tout le monde sait que pour que la plateforme fonctionne, il est nécessaire de définir le paramètre mbstring.func_overload sur 2 dans php.ini. Et pour créer un fichier pdf contenant l'alphabet cyrillique, une valeur de 0 est requise. Ce problème est généralement résolu en configurant un serveur Web, mais c'est tout de même désagréable.

Face à une telle tâche encore une fois, je pense de plus en plus qu'un microservice distinct devrait être impliqué dans la génération des fichiers pdf, surtout si le projet est volumineux, mais c'est une histoire complètement différente.

Il est temps de passer à la partie principale de cet article. En plus des options proposées ci-dessus, il existe une alternative - PhantomJS.

PhantomJS est un assemblage du moteur WebKit sans interface graphique qui vous permet de charger une page Web en mode console, d'exécuter JavaScript et de travailler pleinement avec DOM, Canvas et SVG.

Bien entendu, en plus des fonctionnalités listées ci-dessus, il permet de créer des fichiers pdf.

Comment? En termes simples, il charge la page Web requise et permet d'enregistrer le résultat sous forme de fichier pdf.

Le processus d'installation de PhantomJS est décrit suffisamment en détail dans la documentation, donc je ne m'attarderai pas sur ce problème.

Un point important dans le travail de PhantomJS est le fichier js (ci-après config.js), qui détermine exactement ce que nous voulons faire avec son contenu. Sur le site officiel, il existe de nombreux exemples prêts à l'emploi de ces fichiers qui peuvent être utilisés pour résoudre une variété de tâches, par exemple, les tests unitaires. Les exemples incluent l'enregistrement d'une page Web au format pdf. C'est exactement ce dont nous avons besoin.

Quelques petites modifications nous permettront d'utiliser cet exemple à nos fins.

var page \u003d require ("page Web"). create (), system \u003d require ("system"), address, output, size; // s'il y a peu ou trop d'arguments, un message s'affiche en utilisant  if (system. args. length< 3 || system . args . length >   5) (console. Journal ( "Utilisation: config.js URL nom de fichier"); console. log ( "exemples de papier (sortie pdf):" 5 pouces * 7,5 pouces "," 10 cm * 20 cm "," A4 "," Lettre ""); console. log ( "exemples d'image (sortie png / jpg):" 1920px "page entière, largeur de fenêtre 1920px"); console. log ( Fenêtre "" 800px * 600px ", coupée à 800x600"); fantôme. sortie (1); ) else ( // traitement des arguments   adresse \u003d système. args [1]; sortie \u003d système. args [2]; page. viewportSize \u003d (largeur: 800, hauteur: 800); if (system. args. length\u003e 3 && system. args [2]. substr (- 4) \u003d\u003d\u003d ".pdf") (size \u003d system. args [3]. split ("*"); page. paperSize \u003d (taille. longueur \u003d\u003d\u003d 2)? (largeur: taille [0], hauteur: taille [1], marge: "0px"): (format: système. args [3], orientation: "portrait", marge : "1cm");) else (console. Log ("Chemin d'accès au pdf non valide!"); Phantom. Exit (1);) if (system. Args. Length\u003e 4) (page. ZoomFactor \u003d system. Args [4 ];) // ouvre la page et enregistre le résultat   page. open (adresse, fonction (status) (if (status! \u003d\u003d "success") (console. log ("Impossible de charger l'adresse!"); phantom. exit (1);) else (window. setTimeout (function ( ) (page. render (sortie); fantôme. exit ();), 200);))); )

$ phantomjs chemin / vers / config.js chemin "url" / vers / pdf / fichier "A4"

Analysons les arguments dans l'ordre:

  1. Le chemin vers config.js.
  2. L'adresse de la page Web à convertir en fichier pfd.
  3. Chemin d'accès au fichier pdf où le résultat sera enregistré.
  4. Format de fichier PDF.

Nous obtenons le fichier pdf souhaité.

Revenant à php, cette solution est assez facile à intégrer dans le code.

Dans le cas le plus simple, cela ressemble à ceci:

$ command \u003d sprintf ("phantomjs% s% s% s% s", $ fullPathToConfigJS, $ url, $ fullPathToSave, $ format); exec ($ commande);

Donc, pour résumer. À mon avis, cette solution présente les avantages suivants:

  • Créer une mise en page pour un tel document beaucoup  plus facile. Ceci est très important car non seulement simplifie le développement, mais ne se transforme pas en cauchemar pour les révisions ultérieures du document.
  • Élimine le besoin de pervertir avec mbstring.func_overload. Mais c'est sans aucun doute un problème caractéristique principalement de Bitrix.

Bien sûr, il y a aussi des inconvénients:

  • Pas de support à 100% pour tous les styles CSS. Mais en comparaison avec les bibliothèques listées au début de l'article, tout est très bien.
  • Une telle solution peut effrayer un développeur novice.
03.12.2015

Afin de générer un fichier PDF à partir de HTML, nous utiliserons la bibliothèque DomPDF pour PHP. Et avec lui, nous pouvons obtenir des fichiers PDF de haute qualité avec des caractères russes.

Commençons donc. Vous devez d'abord télécharger la bibliothèque elle-même sur:

Ou installez-le via composer:

Le compositeur nécessite dompdf / dompdf

Cependant, il convient de noter que l'assemblage standard ne prend pas en charge les caractères de langue russe. Par conséquent, vous devez creuser Internet pendant longtemps et essayer, essayer, essayer. Pour réduire votre temps, nous avons déjà tout collecté. Ci-dessous, vous pouvez télécharger la bibliothèque avec prise en charge des caractères en russe.

Si vous souhaitez utiliser l'assemblage standard, remplacez simplement les fichiers de cette archive (916 Ko).

Vous devrez remplacer les fichiers dans le dossier:

   ../dompdf/lib/fonts

Avec ce script, vous pouvez créer des fichiers PDF complexes avec des tableaux, des images incorporées à partir de HTML dans un fichier PDF.

Nous utilisons cette bibliothèque pour générer des PDF avec une requête ajax. Dans l'archive téléchargée, vous trouverez le fichier index.php, qui traite les données entrantes, connecte un modèle dans lequel les images sont déjà intégrées. Nous avons déchargé pour vous un option utilisée par nous (5 Mo).

Téléchargez un exemple du fichier PDF généré (580 Ko)

Si vous avez téléchargé la bibliothèque, connectez-la à votre fichier PHP à l'aide de la connexion du chargeur automatique:

Require_once "dompdf / autoload.inc.php";

Ou utilisez GIT:

Git clone https://github.com/dompdf/dompdf.git
cd dompdf
git clone https://github.com/PhenX/php-font-lib.git lib / php-font-lib
cd lib / php-font-lib
git checkout 0.5.1
cd ..
git clone https://github.com/PhenX/php-svg-lib.git php-svg-lib
cd php-svg-lib
git checkout v0.3

Le gestionnaire lui-même ressemble à ceci:

// connecte l'autochargeur include_once "autoload.inc.php"; // fonction pour effacer le code de la fonction de données malveillantes challsrt ($ data) ($ array1 \u003d array ("\\" "," * ","% "," 0x "," & "," \\ 0 "," \\ n " , "\\ r", "\\ s", "\\ t", "\\\\", "` "," ^ "," $ "," (",") "," [","] "," (",") "," wss "," blob "," localhost "," - "," Услуги Цены Создание сайта-визитки от 2 499 UAH, от 5 999 RUR (сайт-одностраничник) Создание простого сайта от 3 499 UAH, от 7 999 RUR
(наполнение до 10 страниц без оплаты) Создание интернет-магазина от 5 499 UAH, от 11 999 RUR
(наполнение до 50 товаров – без оплаты) Дополнительные услуги по согласованию с заказчиком Продление доменного имени и хостинга 599 RUR+цена хостинга+цена домена Написание уникальных статей
(не входящих в пакет услуг создания сайта) от 29 UAH, 69 RUR / 1000 символов без пробелов Поддержка сайта первые 14 дней без оплаты Поддержка сайта после 14 дней 749 UAH, 1599 RUR / 30 дней
(если производились действия) Минимальная стоимость хостинга 329 UAH, 719 RUR / 365 дней
[расположение: RU, DE, UA] Минимальная стоимость доменного имени 169 UAH, 399 RUR / 365 дней Подбор доменного имени даром "; //склеиваем все данные $html=$table_one_head.$table.$table_one_down; // если в таблице есть нечитаемые для PDF скрипта символы, то заменяем их на читаемые $html=str_replace("₽","рос. руб.", $html); //убираем пробелы HTML $html=str_replace(" "," ", $html); //генерируем имя файла с уникальным ключем $name=date("Y-m-d-H-i-s").uniqid().".pdf"; //обрабатываем данные с помощью библиотеки DOMPDF $d->loadHtml($html); //устанавливаем ориентацию листа portrait || landscape $d->setPaper("A4","portrait"); //отображаем готовый PDF $d->render(); //записываем PDF в файл file_put_contents(getenv("DOCUMENT_ROOT")."/pdf/{$name}", $d->output()); //можно отправить ответ после AJAX Запроса с ссылкой на файл. у на //echo "

Скачать файл
";

Используемые библиотеки:

  • PDF Rendering
    • CPDF (included with dompdf)
    • PDFLib
  • Font handling if using fonts other than the core PDF fonts (courier, helvetica, times)
    • 0.5.x
  • Document parsing
    • html5lib (included with dompdf)
  • SVG rendering
    • 0.3.x for SVG support

Системные и иные требования:

  • PHP version 5.4.0 or higher
  • DOM extension
  • GD extension
  • MBString extension
  • php-font-lib
  • php-svg-lib

Поддержка:

  • CSS 2.1 и некоторые CSS3 свойства, такие как: @import, @media & @page правила
  • HTML 4.0
  • Внешних стилей http/ftp (с fopen-запросами)
  • tables, вместе с параметрами строк и ячеек, отступов и других стилей для тиблиц
  • изображений (gif, png (8, 24 and 32 bit with alpha channel), bmp & jpeg)
  • простых SVG

PDF24 Creator, это бесплатный PDF генератор для вашего ПК. Генерация PDF файлов невероятно простая задача с этой программой. Комбинация дополнительных возможностей вместе с созданием PDF файлов, делает этот инструмент одной из самых признанных бесплатных программ. В качестве альтернативы вы также можете генерировать PDF онлайн. Прочтите ниже как это работает.

PDF24 Creator – бесплатный PDF генератор

PDF24 Creator, это бесплатный PDF генератор для Windows. Генерация PDF файлов реализована с помощью PDF принтера. После установки в вашей Windows появится новый виртуальный PDF принтер. Просто печатайте через этот принтер все, что хотите превратить в PDF. PDF принтер, это единственный путь создания PDF. Программа включает в себя широкий диапазон возможностей, которые помогут вам в генерации PDF. Эта программа бесплатна. Вы можете скачать свежую версию с этого сайта.

PDF24 Онлайн PDF Генератор – Генерация PDF файлов онлайн

Онлайн PDF Генератор, это полезный инструмент, если вы хотите преобразовать документы в PDF формат. Просто выберите документ или отправьте документ по почте в Онлайн PDF Генератор и через несколько секунд ваш PDF файл будет доступен для скачивания или отправлен вам обратно.

Email интерфейс для этого PDF генератора также доступен. Нужно отправить файлы генератору и дождаться ответного письма, в котором будут файлы, сконвертированные в PDF

Множество других PDF генераторов в инструментарии PDF24

Онлайн утилиты от PDF24 решают многие проблемы, связанные с PDF, достаточно просто, быстро и бесплатно. Многие из этих инструментов генерируют PDF файлы. Вы ещё не знакомы с онлайн утилитами PDF24? Взгляните, вы сможете использовать все эти инструменты.

LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir des articles frais.
Courriel
Prénom
Nom de famille
Comment voulez-vous lire The Bell
Pas de spam