7

我希望您能帮我解决这个问题,我是第一次处理 mPDF,我认为它很棒,但我想使用与我的网站相同类型的字体显示报告,在其文档中解释了如何实现这一目标,但它似乎仍然不适合我。到目前为止我所做的是:

  1. 将 google 的 Open Sans 的 URL 添加到我的文档中,该文档将在它之后生成,<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
    下载了“Open Sans”的 ttfs 文件/fonts/open-sans,并添加到 mPDF 目录的 ttfonts 文件夹中,如其文档中所述。


在它之后,我遵循这个清晰的文档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

4 回答 4

15

笔记

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

mPDF v6.x 示例

来源

1) 上传MyFont.ttf到2) 在 数组内部,添加您的:/mpdf/ttfonts
/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)然后,无论您在哪里执行自定义脚本,都可以my_custom_fonttt在 css 中使用:

<?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');
于 2014-07-14T15:46:20.620 回答
12

我已经解决了我的问题,字体的定义中应该没有空格,所以我在我的 css font-face 声明中替换为“opensans”和

$this->fontdata = array(
    "opensans" => array(
    'R' => 'OpenSans-Regular.ttf'
    )

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

于 2013-05-04T16:41:59.997 回答
1

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

它对我有用

于 2017-11-07T06:27:38.877 回答
0

Aaargh - 字体 php 文件在 FPDF 版本之间发生了变化。确保使用正确的。

于 2020-07-30T17:23:50.410 回答