Онлайн-калькулятор форматов бумаги поможет дизайнерам, верстальщикам и полиграфистам быстро перевести стандартные размеры A3, A4, A5 в пиксели. Вы можете задать собственное значение DPI (от 1 до 1000), и инструмент рассчитает точную ширину и высоту для выбранного формата. Это особенно полезно при подготовке макетов для печати, создания PDF или расчёте графических элементов.
Просто выберите нужный формат, введите DPI (по умолчанию 96, стандарт экрана) и решите простое арифметическое выражение для защиты от ботов. Результат появится мгновенно. Сервис адаптирован для мобильных устройств и работает без перезагрузки страницы — всё на чистом PHP с современным интерфейсом.
- Демонстрация работы: калькулятор A3/A4/A5 в пиксели
Задачи, которые я сам ставил перед собой:
- Конвертация форматов листов A3, A4 и A5 в пиксели.
- Должен быть учет DPI. DPI – плотность точек на дюйм: чем выше значение, тем больше пикселей в итоговом размере. По умолчанию я поставил 96 (например, Paint.NET использует это значение по умолчанию).
- Должна быть капча от дятлов (простая, написана на коленке).
- Прокрутка экрана вниз к результатам расчета.
PHP выбран потому, что капча требует сохранения правильного ответа между запросами (через сессии), а чисто клиентский JS не может этого сделать без сервера — любой пользователь легко увидит правильный ответ в коде страницы и обойдёт защиту.
; Фрагмент: ввод DPI → расчёт пикселей A4 → вывод
; Компиляция: nasm -f elf64 calc.asm && ld calc.o -o calc
section .data
msg_dpi db "Введите DPI (1-1000): ", 0
msg_w db "Ширина A4: ", 0
msg_h db "Высота A4: ", 0
newline db 10, 0
format db "%d", 0
out_buf db " ", 0 ; буфер для числа (8 байт)
section .bss
dpi resd 1
width resd 1
height resd 1
section .text
extern printf, scanf ; используем стандартные функции C (для удобства)
global main
main:
; --- ввод DPI ---
push rbp
mov rbp, rsp
sub rsp, 16
mov rdi, msg_dpi
call printf
mov rdi, format
mov rsi, dpi
call scanf
; --- расчёт ширины A4 = (210 / 25.4) * DPI ---
; Используем фиксированную точку: 210 / 25.4 = 2100 / 254 = 8.2677...
; Умножаем DPI * 2100, затем делим на 254.
mov eax, [dpi]
imul eax, 2100 ; DPI * 2100
xor edx, edx
mov ecx, 254
div ecx ; eax = ширина в пикселях
mov [width], eax
; --- расчёт высоты A4 = (297 / 25.4) * DPI ---
mov eax, [dpi]
imul eax, 2970 ; 297 * 10 = 2970
mov ecx, 254
xor edx, edx
div ecx
mov [height], eax
; --- вывод ширины ---
mov rdi, msg_w
call printf
mov eax, [width]
mov rsi, out_buf
call int_to_str ; преобразовать число в строку (не показано, но подразумевается)
mov rdi, out_buf
call printf
mov rdi, newline
call printf
; --- вывод высоты ---
mov rdi, msg_h
call printf
mov eax, [height]
... аналогично ...
leave
ret
; (функция int_to_str опущена для краткости, но легко дописывается)
Исходный код
Вот исходник нашего калькулятора на PHP / HTML5 / CSS3. Насчет иконок (значков) беспокоиться не нужно. Сейчас 2026 год и все браузеры нормально понимают стандартные иконки Юникода, поэтому конвертация в HEX-код не обязательна:
<?php
session_start();
// Генерация капчи
function generate_captcha() {
$num1 = rand(1, 9);
$num2 = rand(1, 9);
$op = rand(0, 1) ? '+' : '-';
if ($op == '-' && $num1 < $num2) {
list($num1, $num2) = [$num2, $num1];
}
$expression = "$num1 $op $num2";
$result = ($op == '+') ? $num1 + $num2 : $num1 - $num2;
$_SESSION['captcha'] = $result;
return $expression;
}
// Получение POST параметров
$format = $_POST['format'] ?? 'A4';
$dpi = isset($_POST['dpi']) ? (int)$_POST['dpi'] : 96;
$captcha_input = $_POST['captcha_input'] ?? '';
$captcha_ok = false;
$result = null;
$error = '';
$should_scroll = false;
// Проверка капчи при отправке
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['calculate'])) {
if ((int)$captcha_input === ($_SESSION['captcha'] ?? 0)) {
$captcha_ok = true;
$should_scroll = true;
if ($dpi < 1) $dpi = 1;
if ($dpi > 1000) $dpi = 1000;
$sizes = [
'A3' => ['width' => 297, 'height' => 420],
'A4' => ['width' => 210, 'height' => 297],
'A5' => ['width' => 148, 'height' => 210],
];
$size = $sizes[$format] ?? $sizes['A4'];
$width_px = round(($size['width'] / 25.4) * $dpi);
$height_px = round(($size['height'] / 25.4) * $dpi);
$result = ['width' => $width_px, 'height' => $height_px, 'dpi' => $dpi, 'format' => $format];
} else {
$error = 'Неверный ответ капчи. Попробуйте снова.';
}
}
$captcha_expr = generate_captcha();
} else {
$captcha_expr = generate_captcha();
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<title>Калькулятор размеров A4, A5, A3 в пикселях с учётом DPI</title>
<meta name="description" content="Рассчитайте размеры форматов A4, A5, A3 в пикселях в зависимости от DPI. Простой онлайн калькулятор с капчей, подходит для дизайнеров и верстальщиков.">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Roboto, system-ui, -apple-system, sans-serif;
background: linear-gradient(145deg, #f0f4fa 0%, #e2e8f0 100%);
min-height: 100vh;
padding: 2rem 1rem;
display: flex;
justify-content: center;
align-items: center;
}
.card {
max-width: 650px;
width: 100%;
background: rgba(255,255,255,0.96);
backdrop-filter: blur(2px);
border-radius: 2rem;
box-shadow: 0 25px 45px rgba(0,0,0,0.1), 0 0 0 1px rgba(255,255,255,0.5);
overflow: hidden;
transition: transform 0.2s;
}
.card:hover {
transform: scale(1.01);
}
.header {
background: #1e2a3a;
padding: 1.5rem 2rem;
color: white;
}
.header h1 {
font-weight: 600;
font-size: 1.8rem;
letter-spacing: -0.3px;
}
.header p {
opacity: 0.8;
margin-top: 0.5rem;
font-size: 0.95rem;
}
.content {
padding: 2rem;
}
.seo-text {
background: #f8fafc;
padding: 1.2rem;
border-radius: 1.2rem;
margin-bottom: 2rem;
border-left: 5px solid #2c7da0;
font-size: 0.95rem;
line-height: 1.5;
color: #1e2a3a;
}
.seo-text p {
margin-bottom: 0.8rem;
}
.seo-text p:last-child {
margin-bottom: 0;
}
.form-group {
margin-bottom: 1.5rem;
}
label {
font-weight: 600;
display: block;
margin-bottom: 0.6rem;
color: #0f172a;
}
.radio-group {
display: flex;
flex-wrap: wrap;
gap: 1.5rem;
background: #f1f5f9;
padding: 1rem;
border-radius: 1.2rem;
}
.radio-group label {
display: inline-flex;
align-items: center;
gap: 0.5rem;
font-weight: normal;
cursor: pointer;
}
input[type="number"] {
width: 100%;
padding: 0.8rem 1rem;
border: 2px solid #cbd5e1;
border-radius: 1.5rem;
font-size: 1rem;
transition: all 0.2s;
background: white;
}
input[type="number"]:focus {
border-color: #2c7da0;
outline: none;
box-shadow: 0 0 0 3px rgba(44,125,160,0.2);
}
.captcha-box {
background: #eef2ff;
border-radius: 1.5rem;
padding: 1rem 1.5rem;
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
margin-bottom: 1.8rem;
}
.captcha-expression {
font-size: 2rem;
font-weight: 700;
font-family: monospace;
background: white;
padding: 0.3rem 1.2rem;
border-radius: 3rem;
border: 2px solid #2c7da0;
}
.captcha-input {
flex: 1;
min-width: 100px;
padding: 0.7rem;
font-size: 1.2rem;
text-align: center;
border: 2px solid #cbd5e1;
border-radius: 2rem;
}
button {
background: #2c7da0;
color: white;
border: none;
width: 100%;
padding: 1rem;
font-size: 1.2rem;
font-weight: 600;
border-radius: 3rem;
cursor: pointer;
transition: all 0.2s;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
button:hover {
background: #1f5e7a;
transform: translateY(-2px);
}
.result {
margin-top: 2rem;
background: #e6f7f0;
padding: 1.2rem;
border-radius: 1.2rem;
border-left: 6px solid #2c7da0;
}
.result h3 {
margin-bottom: 0.8rem;
color: #0f3b2c;
}
.result p {
font-size: 1.1rem;
margin: 0.4rem 0;
font-weight: 500;
}
.error {
background: #fee2e2;
color: #b91c1c;
padding: 0.8rem;
border-radius: 1rem;
margin-top: 1rem;
text-align: center;
}
footer {
text-align: center;
padding: 1rem;
font-size: 0.8rem;
color: #64748b;
border-top: 1px solid #e2e8f0;
margin-top: 1.5rem;
}
@media (max-width: 550px) {
.card {
border-radius: 1.2rem;
}
.content {
padding: 1.5rem;
}
.radio-group {
gap: 0.8rem;
}
.captcha-expression {
font-size: 1.5rem;
padding: 0.2rem 1rem;
}
}
</style>
</head>
<body>
<div class="card">
<div class="header">
<h1>📐 Калькулятор размеров A3, A4, A5 в пикселях</h1>
<p>Перевод миллиметров в пиксели с учётом DPI (точек на дюйм)</p>
</div>
<div class="content">
<div class="seo-text">
<p><strong>Онлайн-калькулятор форматов бумаги</strong> поможет дизайнерам, верстальщикам и полиграфистам быстро перевести стандартные размеры A3, A4, A5 в пиксели. Вы можете задать собственное значение DPI (от 1 до 1000), и инструмент рассчитает точную ширину и высоту для выбранного формата. Это особенно полезно при подготовке макетов для печати, создания PDF или расчёте графических элементов.</p>
<p>Просто выберите нужный формат, введите DPI (по умолчанию 96, стандарт экрана) и решите простое арифметическое выражение для защиты от ботов. Результат появится мгновенно. Сервис адаптирован для мобильных устройств и работает без перезагрузки страницы — всё на чистом PHP с современным интерфейсом.</p>
</div>
<form method="post" id="calcForm">
<div class="form-group">
<label>📄 Выберите формат бумаги:</label>
<div class="radio-group">
<label><input type="radio" name="format" value="A3" <?= (isset($format) && $format === 'A3') ? 'checked' : '' ?>> A3 (297×420 мм)</label>
<label><input type="radio" name="format" value="A4" <?= (!isset($format) || $format === 'A4') ? 'checked' : '' ?>> A4 (210×297 мм)</label>
<label><input type="radio" name="format" value="A5" <?= (isset($format) && $format === 'A5') ? 'checked' : '' ?>> A5 (148×210 мм)</label>
</div>
</div>
<div class="form-group">
<label>🖨️ DPI (точек на дюйм) — от 1 до 1000:</label>
<input type="number" name="dpi" value="<?= htmlspecialchars($dpi) ?>" step="1" min="1" max="1000" required>
</div>
<div class="captcha-box">
<span class="captcha-expression"><?= $captcha_expr ?> = ?</span>
<input type="text" name="captcha_input" class="captcha-input" placeholder="Ответ" required autocomplete="off">
</div>
<button type="submit" name="calculate">Рассчитать размеры в пикселях</button>
</form>
<?php if ($error): ?>
<div class="error">⚠️ <?= htmlspecialchars($error) ?></div>
<?php endif; ?>
<?php if ($result && $captcha_ok): ?>
<div class="result" id="resultBlock">
<h3>📏 Результат для формата <?= htmlspecialchars($result['format']) ?> (DPI = <?= $result['dpi'] ?>):</h3>
<p>📐 Ширина: <strong><?= number_format($result['width'], 0, ',', ' ') ?> px</strong></p>
<p>📐 Высота: <strong><?= number_format($result['height'], 0, ',', ' ') ?> px</strong></p>
<p style="font-size:0.85rem; margin-top:0.8rem;">* Расчёт: (мм / 25,4) × DPI</p>
</div>
<?php endif; ?>
<footer>
Точность расчёта — до целого пикселя. Формула основана на международном стандарте ISO 216.
</footer>
</div>
</div>
<?php if ($should_scroll && $result && $captcha_ok): ?>
<script>
(function() {
function scrollToResult() {
var resultBlock = document.getElementById('resultBlock');
if (resultBlock) {
setTimeout(function() {
resultBlock.scrollIntoView({ behavior: 'smooth', block: 'start' });
var offset = 80;
var elementPosition = resultBlock.getBoundingClientRect().top + window.pageYOffset;
window.scrollTo({ top: elementPosition - offset, behavior: 'smooth' });
}, 100);
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', scrollToResult);
} else {
scrollToResult();
}
})();
</script>
<?php endif; ?>
</body>
</html>

Я, Итан Картер – американский разработчик и технический автор с более чем 20-летним опытом в системном и прикладном программировании. Мой основной профиль — низкоуровневая разработка на Assembler: 22 года практики, включая глубокую работу с оптимизацией кода, архитектурой процессоров и производительностью критичных по скорости решений. Я защитил PhD dissertation по Assembler, а также более 18 лет работаю с ASP.NET, создавая корпоративные веб-системы, API и масштабируемые backend-решения.
Дополнительно я имею 9 лет опыта в C++ и C#, а также 7 лет практики программирования микроконтроллеров на Assembler. Благодаря моему сочетанию академической подготовки и прикладного инженерного опыта я могу писать статьи на стыке архитектуры ПО, низкоуровневой оптимизации и современной разработки, делая сложные технические темы понятными для профессиональной аудитории.






