在 PHP 中使用 mPDF 生成 PDF 时乌尔都语字体中缺少字符“Á”

问题描述 投票:0回答:1

在生成包含乌尔都语文本的 PDF 时,我面临着 PHP 中的 mPDF 库的独特挑战。导致问题的特定字符是“-”(Heh),该字符在生成的 PDF 中似乎缺失或无法正确呈现。乌尔都语内容选择的字体是 Jameel Noori Nastaleeq。

以下是问题的更详细细分:

1)字体配置:

我已将字体设置为 Jameel Noori Nastaleeq,该字体以准确渲染乌尔都语文本而闻名。

2)HTML内容生成:

HTML 内容的结构是为了显示乌尔都语文本,包括有问题的字符“Á”。其他乌尔都语字符渲染正确。

3)渲染问题:

尽管努力调整字体和样式,“-”字符始终无法在生成的 PDF 中正确显示。

4)寻求解决方案:

我正在向社区寻求关于 mPDF 中这一特定字符渲染问题的潜在原因的见解,尤其是在使用乌尔都语字体时。

5)替代方法:

如果有人遇到类似的问题或对替代方法或潜在的解决方法有建议,我将非常感谢您的专业知识。 我感谢为解决此问题提供的任何帮助或指导。感谢您的时间和支持!

<?php
require_once 'vendor/autoload.php'; // Adjust the path accordingly

// Function to generate PDF using mPDF
function generatePDF($data) {
    $mpdf = new \Mpdf\Mpdf();

    $mpdf->SetFont("Jameel Noori Nastaleeq");

   // Load HTML content
   $html = "<html dir='rtl' lang='ur'><head><style>
   body {
    font-family: 'Jameel Noori Nastaleeq', 'Noto Nastaliq Urdu', 'Nafees Nastaleeq', 'Urdu Naskh Asiatype', 'Tahoma', sans-serif;
  }

   /* Add or modify styles for better layout */
   .info-container {
       border: 1px solid #ccc;
       padding: 10px;
       margin: 20px auto;
       max-width: 600px; /* Adjust as needed */
   }
   
   .info-label {
       font-weight: bold;
       display: inline-block; /* Display labels inline */
       width: 150px; /* Adjust label width as needed */
       margin: 0;
   }
   
   .info-value {
       display: inline-block; /* Display values inline */
       margin: 0;
   }
   
   </style></head><body>";
   


$html .= "<div class='info-container'>";
$html .= "<p class='info-label'>والد کا پیشہ:</p><p class='info-value'>{$data['father_occupation']}</p>";
$html .= "<p class='info-label'>کیا والدین حیات ہیں؟:</p><p class='info-value'>" . ($data['are_parents_alive'] == 1 ? 'ہاں' : 'نہیں') . "</p>";
$html .= "</div>";

$html .= "</body></html>";

$mpdf->mirrorMargins = true;
$mpdf->SetDisplayMode('fullpage');
    // Load HTML to mPDF
    $mpdf->WriteHTML($html);

    // Output PDF to the bdataser
    $mpdf->Output($data['name'] . '_' . date('Y-m-d') . '.pdf', 'D');

}

include('db.php');

// Check if ID is provided in the URL
if (isset($_GET['id'])) {
    $id = $_GET['id'];

    // Fetch data for the specified ID
    $result = $conn->query("SELECT * FROM users_data WHERE id=$id");

    if ($result->num_rows == 1) {
        // Fetch the row as an associative array
        $fetched_data_for_id = $result->fetch_assoc();

        // Call the generatePDF function with the fetched data
        generatePDF($fetched_data_for_id);
    } else {
        echo "No data found for the specified ID.";
    }
} else {
    echo "No ID specified.";
}
?>

enter image description here

php mpdf php-8.2 urdu
1个回答
0
投票

您似乎想要更改 mPDF 配置中的字体设置,以解决乌尔都语字体中缺少字符的问题。为此,您需要进行以下修改:

  1. 删除线:
    $mpdf->SetFont("Jameel Noori Nastaleeq");
  1. 将 HTML 或样式表中现有的 CSS 规则替换为:
body {
    font-family: freeserif;
}

通过执行此操作,您将更新字体设置以在正文中使用“freeserif”字体,而不是“Jameel Noori Nastaleeq”。此更改应该有助于解决丢失字符的问题。

确保在进行这些修改后重新生成 PDF,看看问题是否仍然存在。如果您遇到任何其他问题,请随时提供更多详细信息以获得更多帮助。

© www.soinside.com 2019 - 2024. All rights reserved.