Задать вопрос
  • Как сконвертировать файл в формате excel в pdf?

    Adamos, вот ссылка:
    https://mpdf.github.io/reference/mpdf-functions/ov...
    Я изначально предполагал, что у этого способа изначально много ограничений ( и вы даже разъяснили некоторые из них) и попытался учесть их, но всё равно не сработало.
    Написано
  • Как сконвертировать файл в формате excel в pdf?

    runapa, у меня там все стили были инлайновые. То, что mPDF не умеет правильно рассчитывать ширину ячеек, я выяснил дебагом; у него там есть опция "показывать проблемы с таблицами", я её включил и сразу вывалилась ошибка. Оказалось, что вёрстку такого типа:
    <table width="100%"><tr><td>какой-то контент</td><td>ещё какой-то контент</td></tr></table>

    mPDF не может - у него получается, что доступная ширина ячейки ноль, при вычитании размера контента получается отрицательное число и поэтому он сваливается в свой fallback-режим и пытается как-то по-своему подогнать.
    А вот если задать ширину ячейкам ( предполагаю, что через тоже может сработать), то всё приходит в норму.

    Вообще, из доки видно, что автор придерживается позиции "хоть какой-то результат лучше, чем никакого". Отсюда и мои проблемы.
    Написано
  • Как сконвертировать файл в формате excel в pdf?

    Adamos, в документации заявлено, что он умеет в плейсхолдеры. Делаешь PDF документ с плейсхолдерами типа #XXXXX# , потом импортируешь в mPDF и делаешь замены. Но у меня не сработало, а копаться я не стал.
    Написано
  • Как сконвертировать файл в формате excel в pdf?

    runapa, Adamos, да, я уже копнул глубже и увидел, что mPDF не умеет, например. нормально рассчитывать ширину ячеек таблицы. Для меня всё равно удобнее собрать HTML и скормить ему, чем возиться с PDF напрямую ( "создай прямоугольник тут, помести в него вот это.." ).
    Документация предлагала ещё использовать документ PDF как шаблон, но тоже не прокатило; я взял HTML страницу, в браузере распечатал её в PDF, но mPDF не смог в полученном документе найти мои плесхолдеры
    Написано
  • В цикле for много кнопок как сделать .addEventListener('click', к каждой кнопке?

    Dazle_Prg, вы в интернете столько всего найти можете.. Один из крупных недостатков Рунета - редко проставляют дату публикации. Поэтому запросто можно найти древние материалы, которые уже неактуальны, и древние инструкции, которые уже не работают.
    Написано
  • Каким образом правильно сделать скрипт?

    Денег на разработку у фирмы нет,

    Тем не менее, у фирмы есть деньги на оплату 40+ часов ежемесячно для 4х человек минимум. Допустим, вы работаете на захудалую фирму в Мухосранске и получаете 50 тыс. рублей на руки ежемесячно. Нехитрый подсчёт показывает, что затраты фирмы только на Вашу работу с этим сервисом ~24к рублей ежемесячно, почти 300к рублей ежегодно.
    А там ещё три сотрудника задействованы
    Написано
  • Каким образом правильно сделать скрипт?

    это не готовое решение, а просто наброски:
    я бы делал так:
    1) ночью автоматически выкачивал CSV. Пусть там 10 миллионов строк, неважно.
    2) грузил в БД - я хорошо знаю только MySQL, поэтому MySQL. Хотя, по моему опыту, такие объёмы она не любит. ( Не любит - в смысле отвечать начинает не за секунды, а за минуты) ) Может, спасло бы партицирование.
    3) наваять поверх этого веб-морду, с постраничной навигацией, с предустановленными выборками, с фоновой генерацией какой-то аналитики - тривиальная задача.

    Может, там попутно можно нормализовать данные, сэкономить дисковое пространство
    Написано
  • Как сконвертировать файл в формате excel в pdf?

    AlexVWill, этот сервис расположен в США. Получается трансграничная передача данных. В современных реалиях лучше такого избегать
    Написано
  • Как сконвертировать файл в формате excel в pdf?

    Adamos , я недавно пробовал mPDF, и как-то не получилось "аккуратно вывести", вёрстка ощутимо поехала.
    Исходный HTML - это письмо. Не знаете, что могло пойти не так?
    Написано
  • Как в 1СБитрикс убрать маркетинг (слева) для группы пользователей?

    Андрей Корехов, эту кнопку добавляет модуль sale. Надо просто сортировку своего обработчика событий поставить больше дефолтной:
    AddEventHandler("main", "OnBuildGlobalMenu", "hideB24", 200);
    function hideB24(&$aGlobalMenu, &$aModuleMenu)
    {
        unset($globalMenu['global_menu_crm_site_master']);
    }
    Написано
  • Почему после импорта базы из .sql файлов таблицу с 13Гб раздуло до 55Гб?

    innodb_buffer_pool_size равное 80% от памяти доступной на сервере

    - доступной с учётом остального софта. (пояснение для топикстартера на всякий случай)
    Написано
  • Как получить выбранные параметры смарт фильтра?

    Я получаю товары в классе, где еще arFilter null, потом подключаю шаблон, где подключается фильтр

    Msondre, очевидно, надо поменять очерёдность исполнения кода - сначала вызов компонента фильтра, потом ваш код.
    Как это можно применить при получении товаров?

    смержить с основным фильтром, например:
    <?php
    $filter = [
        'IBLOCK_ID' => 1, // ID инфоблока товаров 
        '=ACTIVE' => 'Y',
    ];
    $res = CIBlockElement::GetList([], array_merge($GLOBALS['arFilter'], $filter));
    while ($row = $res->Fetch()) {
        print_r($row);
    }

    Этот код написан "на коленке". Посмотрите внутренности компонента bitrix:catalog.section , там неплохой образец битриксового кода
    Написано
  • Выпадающее меню из элементов раздела инфоблока?

    Если создать меню в ручную все хорошо работает.

    Yura0103 вот этот момент поясните, пожалуйста. В какой файл и в каком виде вы вписывали пункты вручную?
    Написано
  • Как точно работает скрипт на RoadRunner?

    Vamp, оффтопик, но хотелось бы услышать Ваше мнение:
    документация PHP говорит:
    This reset includes performing a rollback on any active transactions, closing all temporary tables, and unlocking all locked tables.

    Я не уверен, как это понимать. Пример: вот у меня есть скрипт, который подключился к базе, открыл транзакцию и заснул на 30 секунд. Через 10 секунд после его запуска стартовал другой скрипт, который использует ту же тройку "логин, пароль, база" и выполняет mysqli_change_user(). Транзакция из первого скрипта будет закрыта?
    Написано
  • Почему перестала работать ЮКасса?

    Solation, а логи веб-сервера есть? Как я понял, техподдержка Юкассы говорит, что они послали уведомление на ваш сайт, на /pay.php , в ответ получили 200 OK, и поэтому считают, что всё шоколадно.
    Если логи доступны, и в них нет запросов от Юкассы - значит, "200 OK" отвечает что-то перед веб-сервером. Например, какая-нибудь идиотская защита от ботов.
    Если логи доступны, и в них есть запросы от Юкассы - в первых же строках /pay.php вставляете код логирования и смотрите. Если ваша вставка запросы не фиксирует - значит, логи веб-сервера немного не те, что надо, то есть схема такая:
    1) фронтующий веб-сервер, который заодно и логи пишет,
    2) какая-то дрянь,
    3) веб-сервер, который передаёт запросы в PHP, или сразу PHP-FPM

    И есть ещё маловероятный сценарий, когда в хостинге Jino что-то капитально скривилось, и на запросы Юкассы отвечает вообще левый сайт. Но тогда, вероятно, были бы ошибки HTTPS у Юкассы. Но если она их игнорирует, то...
    Просто в моей практике был случай, когда по HTTPS сайт открывался нормально, а по HTTP открывался левый сайт на том же shared хостинге.
    Написано
  • Как правильно реализовать обновление порядка (поле order) в бд?

    касательно вопроса тестов: тут надо понять, к чему относятся тесты? Если к курсу целиком ( то есть они идут всегда после всех модулей), то можно же использовать синтетические колонки; например, для курса с courseId = 1 делать
    (SELECT '1m' AS preorder, order, .... FROM `modules` ...)
    UNION
    (SELECT '1q' AS preorder, order,.... FROM `questions` ...)
    ORDER BY preorder ASC, order ASC

    Если же тесты относятся к модулю ( и должны идти "модуль, затем его тесты, следующий модуль.. ), то сортировка будет строиться немного иначе, но идея та же.
    Либо есть более грубый приём: порядок модулей делается, например, кратным 100, а порядок тестов для него задаётся внутри соответствующего диапазона ( например, для второго модуля это будет 201...299).

    Вообще, хочу сказать, что массу вещей проще решить на клиенте, чем возиться с этим в чистом SQL
    Написано
  • Как правильно реализовать обновление порядка (поле order) в бд?

    как я понял задачу и вопрос GeminiX:
    1) к курсу можно добавить модуль; он всегда добавляется в конец списка модулей курса.
    2) из курса можно удалить модуль.
    3) проблемы конкурентной вставки модулей в один курс не существует (во всяком случае, о ней ни слова).
    4) менять порядок модулей в курсе нельзя ( или такая возможность не предусмотрена).

    Требуется:
    для каждого курса извлекать модули в упорядоченном виде.

    Тогда:
    1) проблемы конкурентной вставки модулей для разных курсов не существует: если модуль для курса А получил порядок N+1, и модуль для курса Б получил тот же порядок N+1, в рамках каждого курса всё упорядочено как надо.
    2) при удалении модуля из курса не нужно ничего пересчитывать. Да, теперь значения в order идут с пропусками, но взаимное расположение модулей сохранено.

    То есть достаточно развязать в голове "значение order === позиция в списке строк", и проблема исчезает.
    Написано
  • Почему не работает в консоли setTimeout?

    мне кажется дело не в этом , когда я меняю значение setTimeout на 5ms , то все тогда работает , ставлю 50ms и уже ничего

    Ivan72929, вероятно, опечатка и речь про секунды, а не миллисекунды?
    У меня сработало и на 5 секунд, как в приведённом коде, и на 50 секунд ( хотя пришлось подождать)
    Написано