Skripty : Přidání fontu

Popis

Tento skript umožňuje přidávat nové fonty pro FPDF (pro usnadnění použij makefont.php). Pracuje na Windows a podporované fonty jsou TrueType a Type1.
Viz informace v souboru readme.txt k instalaci a používání.

Zdrojový kód

Main menu:
<?php
/******************************************************************************/
/* Skript pro přidání TrueType a Type1 fonty pro FPDF                         */
/*                                                                            */
/* autor: Y. SUGERE                                                           */
/* verze: 1.0                                                                 */
/* datum: 28.4.2003                                                           */
/* požadované soubory: addfont.php, addfontt1.php, addfontttf.php             */
/* další potřebné programy: pfm2afm, ttf2pt1, fpdf                            */
/* Pro více informací čti readme.txt                                          */
/*                                                                            */
/* Tento soubor je hlavní menu                                                */
/******************************************************************************/
?>
<!doctype html public "-//W3C//DTD HTML 4.0//EN">
<html>

<head>
    <title>Konverze fontu</title>
</head>
<body>
<a href="addfontttf.php">Přidat TrueType font</a>
<br>

<a href="addfontt1.php">Přidat Type1 font</a>
</body>
</html>
Konverze fontu TrueType:
<?php
/******************************************************************************/
/* Skript pro přidání TrueType a Type1 fonty pro FPDF                         */
/*                                                                            */
/* autor: Y. SUGERE                                                           */
/* verze: 1.0                                                                 */
/* datum: 28.4.2003                                                           */
/* požadované soubory: addfont.php, addfontt1.php, addfontttf.php             */
/* další potřebné programy: pfm2afm, ttf2pt1, fpdf                            */
/* Pro více informací čti readme.txt                                          */
/*                                                                            */
/* Tento soubor zpracuje TrueType font                                        */
/******************************************************************************/

require('makefont.php');

function EncodingList()
{
    // seznam všech dostupných kódování
    $d=dir('.');
    while($f=$d->read())
    {
        if(preg_match('/([a-z0-9_-]+)\\.map$/i',$f,$res))
            $enc[]=$res[1];
    }
    $d->close();
    sort($enc);
    echo '<select name="enc">';
    foreach($enc as $e)
        printf('<option %s>%s</option>',$e=='cp1252' ? 'selected' : '',$e);
    echo "</select>\n";
}

if(isset($_FILES['ttf'])){
    // nacist soubor s fonty
    $tmp=$_FILES['ttf']['tmp_name'];
    $ttf=$_FILES['ttf']['name'];
    $a=explode('.',$ttf);
    if(strtolower($a[1])!='ttf')
        die('File is not a .ttf');
    if($_FILES['ttf']['error']!=UPLOAD_ERR_OK)
        die('Upload failed (error code: '.$_FILES['ttf']['error'].')');
    if(!move_uploaded_file($tmp,$ttf))
        die('move_uploaded_file() failed');
    $fontname=$_POST['fontname'];
    if(empty($fontname))
        $fontname=$a[0];
    // AFM generace
    system("ttf2pt1.exe -a $ttf $fontname");
    // volání MakeFont
    MakeFont($ttf,"$fontname.afm",$_POST['enc']);
    copy("$fontname.php","../$fontname.php");
    unlink("$fontname.php");
    if(file_exists("$fontname.z"))
    {
        copy("$fontname.z","../$fontname.z");
        unlink("$fontname.z");
    }
    else
        copy($ttf,"../$ttf");
    unlink("$fontname.afm");
    unlink("$fontname.t1a");
    unlink($ttf);
    echo "<script language='javascript'>alert('Font zpracován');\n";
    echo "window.location.href='addfont.php';</script>";
    exit;
}

?>
<!doctype html public "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
    <title>Font upload</title>
</head>
<body>

<form action="addfontttf.php" method="post" enctype="multipart/form-data">
<table border="0" cellspacing="5" cellpadding="5" width="300">
    <tr>
        <th align="left" colspan="2">
            Vyberte si .ttf soubor:
        </th>
    </tr>

    <tr>
        <td align="left" colspan="2">
            <input type="file" name="ttf">
        </td>
    </tr>
    <tr>

        <td align="left">
            Jméno font:
        </td>
        <td align="left">
            <input type="text" name="fontname">
        </td>
    </tr>

    <tr>
        <td align="left">
            Kódování fontu:
        </td>
        <td align="left">
            <?php EncodingList(); ?>

        </td>
    </tr>
    <tr>
        <td align="center">
            <input type="reset" name="btnSub" value="Vyčistit">
        </td>

        <td align="center">
            <input type="submit" name="btnSub" value="Odeslat">
        </td>
    </tr>
</table>
</form>
</body>

</html>
Konverze fontu Type1:
<?php
/******************************************************************************/
/* Skript pro přidání TrueType a Type1 fonty pro FPDF                         */
/*                                                                            */
/* autor: Y. SUGERE                                                           */
/* verze: 1.0                                                                 */
/* datum: 28.4.2003                                                           */
/* požadované soubory: addfont.php, addfontt1.php, addfontttf.php             */
/* další potřebné programy: pfm2afm, ttf2pt1, fpdf                            */
/* Pro více informací čti readme.txt                                          */
/*                                                                            */
/* Tento soubor zpracuje Type1 font                                           */
/******************************************************************************/

require('makefont.php');

function EncodingList()
{
    // seznam všech dostupných kódování
    $d=dir('.');
    while($f=$d->read())
    {
        if(preg_match('/([a-z0-9_-]+)\\.map$/i',$f,$res))
            $enc[]=$res[1];
    }
    $d->close();
    sort($enc);
    echo '<select name="enc">';
    foreach($enc as $e)
        printf('<option %s>%s</option>',$e=='cp1252' ? 'selected' : '',$e);
    echo "</select>\n";
}

if(isset($_FILES['pfb'])){
    // nacist soubor s fonty
    $tmp=$_FILES['pfb']['tmp_name'];
    $pfb=$_FILES['pfb']['name'];
    $a=explode('.',$pfb);
    if(strtolower($a[1])!='pfb')
        die('File is not a .pfb');
    if($_FILES['pfb']['error']!=UPLOAD_ERR_OK)
        die('Upload failed (error code: '.$_FILES['pfb']['error'].')');
    if(!move_uploaded_file($tmp,$pfb))
        die('move_uploaded_file() failed');
    $fontname=$_POST['fontname'];
    if(empty($fontname))
        $fontname=$a[0];
    // načíst metrický soubor fontu
    $tmp=$_FILES['fm']['tmp_name'];
    $fm=$_FILES['fm']['name'];
    $a=explode('.',$fm);
    $fm_type=strtolower($a[1]);
    if($fm_type!='pfm' && $fm_type!='afm')
        die('Soubor neni .pfm nebo .afm');
    $fm="$fontname.$fm_type";
    if($_FILES['fm']['error']!=UPLOAD_ERR_OK)
        die('Chyba při uploadu (chyba číslo: '.$_FILES['fm']['error'].')');
    if(!move_uploaded_file($tmp,$fm))
        die('move_uploaded_file() failed');
    if($fm_type=='pfm')
    {
        // PFM->AFM konverze
        system("pfm2afm.exe -a $fm $fontname.afm");
        unlink($fm);
        $fm="$fontname.afm";
    }
    // volání MakeFont
    MakeFont($pfb,$fm,$_POST['enc']);
    copy("$fontname.php","../$fontname.php");
    unlink("$fontname.php");
    if(file_exists("$fontname.z"))
    {
        copy("$fontname.z","../$fontname.z");
        unlink("$fontname.z");
    }
    else
        copy($pfb,"../$pfb");
    unlink($fm);
    unlink($pfb);
    echo "<script language='javascript'>alert('Font processed');\n";
    echo "window.location.href='addfont.php';</script>";
}

?>
<!doctype html public "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
    <title>Font upload</title>
</head>
<body>

<form action="addfontt1.php" method="post" enctype="multipart/form-data">
<table border="0" cellspacing="5" cellpadding="5" width="300">
    <tr>
        <th align="left" colspan="2">
            Vyberte si .pfb soubor:
        </th>
    </tr>

    <tr>
        <td align="left" colspan="2">
            <input type="file" name="pfb">
        </td>
    </tr>
    <tr>

        <th align="left" colspan="2">
            Vyberte si .pfm nebo .afm soubor:
        </th>
    </tr>
    <tr>
        <td align="left" colspan="2">
            <input type="file" name="fm">

        </td>
    </tr>
    <tr>
        <td align="left">
            Jméno fontu:
        </td>
        <td align="left">

            <input type="text" name="fontname">
        </td>
    </tr>
    <tr>
        <td align="left">
            Kódování fontu:
        </td>

        <td align="left">
            <?php EncodingList(); ?>
        </td>
    </tr>
    <tr>

        <td align="center">
            <input type="reset" name="btnSub" value="Vyčistit">
        </td>
        <td align="center">
            <input type="submit" name="btnSub" value="Odeslat">
        </td>

    </tr>
</table>
</form>
</body>
</html>


Ukázka

fpdf-pridani-fontu.pdf

Download

fpdf-pridani-fontu.zip

Informace

Author: Yann Sugere
License: FPDF