在mPDF生成的文档中使用字体

时间:2013-03-12 16:42:48

标签: php fonts font-face mpdf

我希望你帮我解决这个问题,我第一次使用mPDF,我认为这很棒,但是我希望用与我的网络相同的字体显示报告,文件解释了如何实现这一目标,但它似乎仍然不适合我。 我到现在所做的是:

  1. 将该网址从谷歌添加到我的文档中的Open Sans 在它之后生成,<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
  2. 然后我添加一个包含字体使用的样式表文件 <link rel="stylesheet" href="<?php echo base_url(); ?>assets/publicidad/css/reporte.css" type="text/css"> 在我已经添加的reporte.css中,我有一个使用'Open Sans'字体的定义

    body {     font-family:'Open Sans',Sans-Serif; } 它按预期显示字体。

  3. 我使用mPDF生成pdf,但是当我想要的时候效果很好 在文档中显示Open Sans,它没有显示所需的字体,我从http://www.fontsquirrel.com/fonts/open-sans下载了'Open Sans'的ttfs文件,并在其文档中添加了mPDF目录的ttfonts文件夹。

  4. 之后,我按照这个清晰的文档http://mpdf1.com/manual/index.php?tid=453,但到目前为止,我没有得到我的PDF文档中显示的所需字体,直到现在它还没有做到的部分说“4。使用字体特定的语言,你还需要编辑配置文件(config_cp.php);让我们想象Frutiger包含泰语所需的一整套字符:“但我不认为这是问题,因为我正在使用我放下的默认配置。

    function pdf_create($html, $filename, $stream = TRUE) {
                require_once(APPPATH . 'helpers/mpdf/mpdf.php');
                $mpdf = new mPDF();
                $mpdf->SetAutoFont();
                $mpdf->WriteHTML($html);
                if ($stream)
                {
                    $mpdf->Output($filename . '.pdf', 'D');
                }
                else
                {
                    $mpdf->Output('./uploads/temp/' . $filename . '.pdf', 'F');
    
                    return './uploads/temp/' . $filename . '.pdf';
                }
            }
    

    在我的控制器中我这样做。

    $html = $this->load->view('publicidad/reporte_x_curso', $data, true);
    $this->load->helper('mpdf');
    pdf_create($html, 'Reporte_por_cursos', true);
    

    (以上内容未被stackverflow编辑器识别)

    最后我到目前为止应该按照文档执行的操作是:

    $this->fontdata = array(
        "'Open Sans'" => array(
        'R' => 'OpenSans-Regular.ttf'
        )
    
    PD:我把单引号,因为我在我的html文档中添加了这种方式,但我也试过没有它们,但没有成功。 我希望你能提前帮助我。

4 个答案:

答案 0 :(得分:14)

注释

首先,不要使用 mpdf1.com 网站,它已关闭。使用 https://github.com/mpdf/mpdf 版本6和7

有不同的代码

mPDF v6.x

的示例

source

1)将 MyFont.ttf 上传到 /mpdf/ttfonts
2)在 /mpdf/config_fonts.php 中,在 $this->fontdata 数组中,添加您的:

"my_custom_font" => array( 
        'R' => 'MyFont.ttf',            // Regular - REQUIRED
        'I' => "MyFont-Oblique.ttf",    // Italic  - OPTIONAL
        'B' => "MyFont-Bold.ttf",       // Bold    - OPTIONAL
),


3)然后,无论您在何处执行自定义脚本,请在css中使用my_custom_fonttt

<?php

$mpdf=new mPDF();
$texttt= '
    <html><head><style>
    body { font-family: "my_custom_font"; }
    </style></head>
    <body>My SAMPLE TEXTTTTT</body>
    </html>';
$mpdf->WriteHTML("$texttt");
$mpdf->Output(dirname(__FILE__).'/new_created_file.pdf','F');

答案 1 :(得分:12)

我已经解决了我的问题,字体的定义中应该没有空格,所以我用“opensans”和

替换了我的css font-face声明
$this->fontdata = array(
    "opensans" => array(
    'R' => 'OpenSans-Regular.ttf'
    )

请注意字体类型('OpenSans-Regular.ttf')应位于mpdf文件夹的ttfonts文件夹中

答案 2 :(得分:1)

我遇到了同样的问题: 确保在定义字体名称时没有空格,请将其保留为小写。

它对我有用

答案 3 :(得分:0)

Aaargh-字体php文件在FPDF版本之间进行了更改。确保使用正确的密码。