Как оправдать текст в HTML? (Netsuite AdvancedPDF) - PullRequest
0 голосов
/ 07 октября 2019

Я создаю расширенный PDF на арабском языке. своего рода письмо только с арабским текстом. Это не оправдание. я попытался использовать style="text-align: justify; text-justify: inter-word;" в <td>, а также в <span>, но все еще бесполезно.

Может кто-нибудь дать мне идею, если можно оправдать арабский язык или нет? Мой фрагмент скрипта:

<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<!-- <pdf dir="rtl" lang="ar"> -->
<pdf>

  <head>
    <!-- arabic Font -->
    <link name="majalla" type="font" subtype="opentype"
      src="https://5486702.app.netsuite.com/core/media/media.nl?id=8627&amp;c=5486702&amp;h=3e47c429eda24f454f39&amp;_xt=.ttf"
      bytes="6" />
    <style type="text/css">
      body {
        font-family: majalla;
        font-size: 18pt;
      }
    </style>
  </head>

  <body font-famly="ariel" header="nlheader" header-height="14%" footer="nlfooter" footer-height="20pt"
    padding="0.5in 0.7in 0.5in 0.7in" size="Letter">
    <table width="100%" table-layout="fixed">
      <tr margin-top="10px">
        <td align="right" lang="Ar">
          <#if record.custbody7?has_content>
            <p align="right"><span align="right" style="text-align: justify; text-justify: inter-word;">${record.custbody7}</span>
              <#else>
                <p align="right" style="text-indent: 35px;"><span align="right">أفيدكم بأنه لا مانع لدينا من قيامكم
                    بتنفيذ المشروع أعلاه وذلك لمدة </span>
                  <span align="right" style="text-align: justify; text-justify: inter-word;">(
                    ${record.custbody_duration?string?replace('0','٠')?replace('1','١')?replace('2','٢')?replace('3','٣')?replace('4','٤')?replace('5','٥')?replace('6','٦')?replace('7','٧')?replace('8','٨')?replace('9','٩')}
                    )</span> <!-- duration -->
                  <span align="right" style="text-align: justify; text-justify: inter-word;"> تبدأ من تاريخ </span>
                  <span align="right" style="text-align: justify; text-justify: inter-word;">${record.custbody_start_date?string?replace('0','٠')?replace('1','١')?replace('2','٢')?replace('3','٣')?replace('4','٤')?replace('5','٥')?replace('6','٦')?replace('7','٧')?replace('8','٨')?replace('9','٩')}
                    م ، </span> <!-- start date -->
          </#if>
          <span align="right" style="text-align: justify; text-justify: inter-word;">ومن ثم ترفع المطالبات للإدارة المالية بتقديم جميع المستندات المؤيدة للصرف علًما بأن أصل
            هذا التعميد لدى الإدارة المالية في مكتب برنامج خدمة ضيوف الرحمن. </span>
          </p>
        </td>
      </tr>
    </table>
  </body>
</pdf>

1 Ответ

2 голосов
/ 07 октября 2019

В нескольких местах вы используете <span align="right">. Здесь есть три проблемы:

1.) span является встроенным элементом - бесполезно использовать выравнивание текста во встроенном элементе. Используйте div вместо span. Это блочный элемент, и его ширина по умолчанию равна полной ширине родительского элемента, поэтому выравнивание текста будет иметь эффект.

2.) align="right" не является допустимым атрибутом HTML. Если вы хотите добавить выравнивание к элементу, например div, вам нужно использовать <div style="text-align: right;">. Или (лучше) применить класс к DIV и установить правило CSS для этого класса, которое содержит желаемое выравнивание текста. Если вы хотите, чтобы ваш текст был выровнен, используйте <div style="text-align: justify;">.

3.) Для языков, которые пишутся справа налево, вы не только используете выравнивание по правому краю, но также добавляете параметр направления текста, такой как direction: rtl;(«справа налево»), так что в целом это будет <div style="text-align: justify; direction: rtl;"> или (лучше) правило CSS для класса, содержащего те настройки, которые вы применяете к своим HTML-тегам.

...