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

den*_*bot 6 php fonts font-face mpdf

我希望你能帮助我解决这个问题,我第一次使用mPDF,我觉得这很棒,但是我希望用与我的网站相同类型的字体显示报告,在其文档中解释如何要做到这一点,但它似乎仍然不适合我.我到现在所做的是:

  1. 将网址从谷歌添加到我的文档中,然后生成该文档<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"> 我已经添加的字体Inside 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';
            }
        }
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我这样做.

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

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

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

$this->fontdata = array(
    "'Open Sans'" => array(
    'R' => 'OpenSans-Regular.ttf'
    )
Run Code Online (Sandbox Code Playgroud)

PD:我把单引号,因为我在我的html文档中添加了这种方式,但我也试过没有它们,没有成功.我希望你能提前帮助我.

T.T*_*dua 14

笔记:

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

示例(v7):

(来源)
1)上传MyFont.ttf到2)in ,里面的 数组,添加你的:/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
),
Run Code Online (Sandbox Code Playgroud)


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');
Run Code Online (Sandbox Code Playgroud)

  • 虽然此链接可能会回答这个问题,但最好在此处包含答案的基本部分并提供参考链接.如果链接的页面发生更改,则仅链接的答案可能会无效. (5认同)
  • 这正是发生了什么:在此服务器上找不到请求的URL /manual/index.php.31/03/2016好的电话@Howdy_McGee,感谢tazo在2014年更新您的答案 (4认同)

den*_*bot 12

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

$this->fontdata = array(
    "opensans" => array(
    'R' => 'OpenSans-Regular.ttf'
    )
Run Code Online (Sandbox Code Playgroud)

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