Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

CSS настройка печати страницы на сайте!

Ден Але Ученик (60), на голосовании 2 дня назад
Всем привет!
Настроил под себя через css страницу печати.
Предпечать корректно отображается на ПК и мобильных устройствах андроид, но вот на айфонах рамка осталась и нижний колонтитул информацией, хотя в стилях css я эти моменты убрал.

Подскажи пожалуйста, может кто то с подобной проблемой встречался и знает как убрать эту рамку и нижний колонтитул на айфонах??? (По идее у страницы вообще не должно быть рамок и полей, margin и padding = 0).
Голосование за лучший ответ
alternativeGod Гуру (4164) 1 месяц назад
На iPhone (и на iOS в целом) рендеринг страницы для печати обрабатывается не только стилями CSS, но и встроенными настройками печати Safari. Однако вы можете попробовать следующие подходы:

1. Обнуление полей через CSS
Убедитесь, что вы используете правильные CSS-свойства для обнуления полей:

Копировать код
@page {
size: auto; /* Использует размер по содержимому */
margin: 0; /* Убирает поля страницы */
}

body {
margin: 0;
padding: 0;
box-sizing: border-box;
}

2. Убрать колонтитулы и рамки
Браузеры iOS могут добавлять собственные колонтитулы (с названием страницы, URL или датой). Это системное поведение, и CSS не может полностью контролировать его. Но есть способы:

Для Safari: Safari добавляет колонтитулы и рамки, которые не могут быть удалены CSS. Единственное решение — предложить пользователям сохранить страницу как PDF перед печатью через кнопку "Поделиться" (свойство "Save as PDF" на iOS автоматически убирает эти элементы).

3. Попробовать обертку и специфические медиазапросы
Добавьте следующие медиазапросы, чтобы адаптировать стили под iOS:

Копировать код
@media print {
body {
-webkit-print-color-adjust: exact; /* Для точной передачи цветов */
print-color-adjust: exact; /* Альтернативный вариант */
}

* {
-webkit-margin-before: 0 !important;
-webkit-margin-after: 0 !important;
-webkit-margin-start: 0 !important;
-webkit-margin-end: 0 !important;
margin: 0 !important;
padding: 0 !important;
border: 0 !important;
}
}

4. Обходное решение: печать через JavaScript
Вы можете сделать собственный HTML для печати и полностью контролировать, что отображается:

Копировать код
<script>
function printPage() {
const printContent = document.getElementById('print-area').innerHTML;
const originalContent = document.body.innerHTML;

document.body.innerHTML = printContent;
window.print();
document.body.innerHTML = originalContent;
}
</script>
Вместо стандартной печати Safari, это позволяет рендерить только то, что находится в указанной области (print-area).

5. Проверка iOS специфики
Попробуйте дополнительно настроить:

Убедитесь, что print media queries правильно обрабатываются.
Тестируйте в разных браузерах на iOS (например, Chrome и Firefox могут работать иначе, чем Safari).

6. Альтернативное решение через PDF
Если вам нужно полностью избавиться от системных колонтитулов, генерируйте PDF через сторонние библиотеки, такие как jsPDF или html2pdf.js:

Копировать код
const { jsPDF } = window.jspdf;

function generatePDF() {
const pdf = new jsPDF();
pdf.text("Hello, world!", 10, 10);
pdf.save("download.pdf");
}
AaacoB Aaac Мудрец (11912) 1 месяц назад
ты мне хоть 1 чела покажи, кто с айфона печатает!
Похожие вопросы