Python & Django как указать локальные шрифты?

Пикод

Новичок
Пользователь
Май 21, 2021
7
0
1
Добрый день! Столкнулся с проблемой локальных шрифтов. Есть страница pdf_os.html там шрифты прописаны в тег style но мне надо статистический указать шрифты чтоб и на сервере оно работало. Попробовал сверху html страницы прописать {% load static %} и в основной main.css добавил @font-face { font-family: 'Arial'; src: local('Arial'), url('../static/main/fonts/arial.ttf') format("truetype"); } но это не помогло. Еще попробовал втутри тега style прописать @font-face { font-family: 'Arial'; src: local('Arial'), url('{% static 'main/fonts/arial.ttf' %} format("truetype")'); } это тоже немогло.Подскажите где я ошибся или как решить по другому


HTML:
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Общий список</title>
    <link href="main/css/main.css" rel="stylesheet">
    <style>
        @media print{
                    @font-face {
                        font-family: 'Arial';
                        src: url('C:\Users\SVT4\PycharmProjects\tmc-webap\itwebtmc\main\static\main\fonts\arial.ttf') format("truetype");
                    }
                    @font-face {
                        font-family: 'DejaMono';
                        src: url('C:\Users\SVT4\PycharmProjects\tmc-webap\itwebtmc\main\static\main\fonts\DejaVuSansMono.ttf') format("truetype");
                    }
                    @font-face {
                                font-family: 'DejaMono';
                                src: url('C:\Users\SVT4\PycharmProjects\tmc-webap\itwebtmc\main\static\main\fonts\DejaVuSerif-Bold.ttf') format("truetype");
                                font-weight: bold;
                    }
                    body {
                        font-family: 'Arial';
                        font-family: 'DejaMono';
                    }
        }
        @page {
            size: a4 portrait;
            @frame header_frame {           /* Static Frame */
                -pdf-frame-content: header_content;
                left: 50pt; width: 512pt; top: 50pt; height: 40pt;
            }
            @frame content_frame {          /* Content Frame */
                left: 50pt; width: 512pt; top: 90pt; height: 632pt;
            }
            @frame footer_frame {           /* Another static Frame */
                -pdf-frame-content: footer_content;
                left: 50pt; width: 512pt; top: 810pt; height: 20pt;
            }
        }
        table {
             table-layout: auto
        }
    </style>
</head>

<body>
    <!-- Content for Static Frame 'header_frame' -->
    <div id="header_content">
        <h3 style="text-align: center;">Общий список</h3>
    </div>

    <!-- Content for Static Frame 'footer_frame' -->
    <div id="footer_content">(c) - page <pdf:pagenumber>
        of <pdf:pagecount>
    </div>

    <!-- HTML Content -->
      <table style="white-space:nowrap;width:100%;" border="1" cellspacing="0" cellpadding="4">
           <tr>
                <th>Названия</th>
                <th>Инв.номер</th>
                <th>Серийный номер</th>
                <th>Дата принятие</th>
               <th>Дата списание</th>
           </tr>
           {% for el in spiocpdf %}
           <tr>
                <td  class="block" style="width:30%">{{ el.rmname }}</td>
                <td class="block" style="width:30%">{{ el.invertaric_num }}</td>
                <td class="block" style="width:70%">{{ el.seria_numeric }}</td>
                <td class="block" style="width:30%">{{ el.data_start_id }}</td>
                <td class="block" style="width:50%">{{ el.post_data }}</td>
           </tr>
           {% endfor %}
      </table>



</body>
</html>
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Подскажите где я ошибся или как решить по другому
Скорее всего вы ошиблись при указании путей к файлам шрифтов.
Попробуйте в шаблоне pdf_os.html указать {% load static %} чтобы загружались файлы из папки static
HTML:
{% load static %}
<!doctype html>
Подключите файл со стилями
HTML:
<link href="{% static 'main/css/main.css' %}" rel="stylesheet">
а файле со стилями main.css укажите шрифты и относительные пути к ним
CSS:
@font-face {
    font-family: 'Arial';
    src: url('../fonts/arial.ttf') format("truetype");
}
@font-face {
    font-family: 'DejaMono';
    src: url('../fonts/DejaVuSansMono.ttf') format("truetype");
}

body {
    font-family: 'Arial';
    font-family: 'DejaMono';
}
 

Пикод

Новичок
Пользователь
Май 21, 2021
7
0
1
Скорее всего вы ошиблись при указании путей к файлам шрифтов.
Попробуйте в шаблоне pdf_os.html указать {% load static %} чтобы загружались файлы из папки static
HTML:
{% load static %}
<!doctype html>
Подключите файл со стилями
HTML:
<link href="{% static 'main/css/main.css' %}" rel="stylesheet">
а файле со стилями main.css укажите шрифты и относительные пути к ним
CSS:
@font-face {
    font-family: 'Arial';
    src: url('../fonts/arial.ttf') format("truetype");
}
@font-face {
    font-family: 'DejaMono';
    src: url('../fonts/DejaVuSansMono.ttf') format("truetype");
}

body {
    font-family: 'Arial';
    font-family: 'DejaMono';
}

Добрый день! спасибо за ответ но это не работает почему то.Попробовал внутри style прописать @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); тоже не помогло не видит
 

Форум IT Специалистов