php 如何使用laravel在DOMPDF中显示印地语字体?

von4xj4u  于 2023-02-28  发布在  PHP
关注(0)|答案(2)|浏览(172)

这是幼虫中的pdf刀片文件。在pdf文件中有?标记。

@section('css')
    <meta name="viewport" content="width=device-width, initial-scale=1" >
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="https://fonts.googleapis.com/css?family=Noto+Sans" rel="stylesheet">
    <style>
        @font-face {
            font-family: 'Noto Sans', sans-serif;
            font-style: normal;
            font-weight: 400;
        }
    </style>
@endsection
@section('js')
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
@endsection

       <div class="container">
            <h2>Leave Request Information</h2>
            <h3>Month - {{$month}} {{$year}}</h3>
            <br/>

            @if(isset($leavesRequest) && count($leavesRequest)>0)

                <table style="width:100%" border="1" cellspacing="0">
                    <thead>
                    <tr>
                        <th>S No.</th>
                        <th>अध्यापक कर्मचारी का नाम और पद</th>
                        <th>Name of school</th>
                        <th>Leave Type</th>
                        <th>Leave Status</th>
                        <th>Year</th>
                        <th>Month</th>
                        <th>Total Days</th>
                    </tr>
                    </thead>
                    <tbody>
                    <?php $i = 0; ?>
                    @foreach($leavesRequest as $status)
                        <?php ++$i; ?>
                        <tr>
                            <td style="text-align: center"><?php echo $i;?></td>
                            <td style="text-align: center"><?php echo $status->teacher->name;?></td>
                            <td style="text-align: center"><?php echo $status->school->name;?></td>
                            <td style="text-align: center">{{$status->leave_type}}</td>
                            <td style="text-align: center">{{$status->leave_status}}</td>
                            <td style="text-align: center">{{$status->leave_year}}</td>
                            <td style="text-align: center">{{$status->month_name}}</td>
                            <td style="text-align: center">{{$status->total_days}}</td>
                        </tr>
                    @endforeach
                    </tbody>
                </table>

            @else

                No data found

            @endif

        </div>

生成的PDF如下所示:

px9o7tmv

px9o7tmv1#

我看到两个问题:
1.在引用字体时,不要指定梵文子集。
Google Fonts提供的默认字体子集通常只包括拉丁字符(iso-8859-1)。这是出于性能原因。要包括梵文字符,您的字体参考应如下所示:

<link href="https://fonts.googleapis.com/css?family=Noto+Sans&subset=devanagari" rel="stylesheet">

1.您实际上并没有指定要使用的字体。
您附加到页面的唯一样式如下:

<style>
    @font-face {
        font-family: 'Noto Sans', sans-serif;
        font-style: normal;
        font-weight: 400;
    }
</style>

但是这个CSS用来引用一个字体文件,而不是告诉HTML渲染器(dompdf)使用该字体。您可以删除该代码。要在文档中实际使用该字体,您可以使用以下样式:

<style>
  * { font-family: Noto Sans, sans-serif; }
</style>

一些相关资源:

最后一个注意事项:我建议使用最新版本的dompdf(目前是0.7.0),因为字体支持随着每个版本而改进,当前版本中有一些已知的未解决的问题可能会影响文本的呈现(see issue #655)。

ha5z0ras

ha5z0ras2#

看来我们必须等到DOMPDF完全支持梵文/印地语/尼泊尔语转换,因为它是一个feature they're working on right now

相关问题