Итак, я делаю небольшое приложение с электроном, и оно должно иметь возможность распечатывать определенные виды. Часть из них, на самом деле.
Хотя это мой первый раз, когда я печатаю электронным способом, сама печать работает просто отлично, когда я использую размер бумаги по умолчанию А4 и в основном контролирую видимость элементов только с помощью css media query.
Однако мне нужно распечатать изображение штрих-кода, сгенерированное приложением, с некоторой дополнительной информацией, и физический размер этикетки составляет 84 мм * 36 мм. У меня есть этот нестандартный размер в windows. (В настоящее время только "печать" с помощью foxit в PDF, потому что мне было достаточно тратить бумагу ...)
Проблема в том, что без некрасивого / навязчивого css "взлома" и тому подобного он сохраняет "печать" "содержимое, как если бы сторона длиной 36 мм была верхней, поэтому в основном поворачивается на 90 °. Кроме того, я заметил, что он продолжает добавлять границы / поля / отступы / что угодно выше и ниже содержимого примерно на 1/5 высоты.
Результат (на данный момент) выглядит так:
![enter image description here](https://i.stack.imgur.com/zSSz4.png)
(над штрих-кодом не должно быть пустого места!)
Если я установлю ориентацию на альбомную в настройках принтера, единственное отличие будет вся страница поворачивается, а содержимое все еще находится в неправильной ориентации.
Я пытался установить поля, отступы, ширину, высоту и т. д. c с помощью css @media print {} запросов, также пытался изменить размер страницы и ориентацию с помощью @page {}, но единственное, что сработало, - это если я принудительно поверну содержимое с помощью css (закомментировано во фрагменте ниже). Однако из-за упомянутой «невидимой» границы / поля / whoknows он обрезается сверху. Я также попытался изменить bootstrap. css только для того, чтобы убедиться, что это то, что переопределяет мой, но единственный результат, который я получил, - это то, что я смог правильно ориентироваться, установив @page {size: 84mm 36mm; }, хотя в этом случае содержимое было огромным (напечатано на 7 страницах) и с упомянутой границей или чем-то подобным, убирая 3/5 страницы ... Кроме того, этот принудительный размер страницы неприменим с другим вариантом печати. Это должно быть на обычной бумаге формата А4.
Я знаю, у webcontents print () есть опции, такие как margin, но, похоже, это не работает вообще. (Я пробовал также верхний и нижний колонтитулы, чтобы внести некоторые более очевидные изменения, но не увидел вообще никакого верхнего или нижнего колонтитула в результате.)
На данный момент у меня заканчиваются идеи, и я действительно расстроен , Ребята, вы испытали что-нибудь подобное раньше? У вас есть идеи или лучшие практики, которые могут помочь?
Не знаю, поможет ли это, но вот соответствующие HTML и CSS фрагменты:
<div class="row col-12">
<div class="row col-6">
<div class="col-2 print-text">2</div>
<div class="col-3 print-text" *ngIf="employee">{{}}</div>
<div class="col-3 print-text" *ngIf="employee">{{}}</div>
<div class="col-2"></div>
<div class="col-2 print-text">{{}}/{{}}</div>
</div>
<div class="row col-6"></div>
<div class="row col-6">
<div class="col-4 print-text" *ngIf="employee">{{}}</div>
<div class="col-1"></div>
<div class="col-4 print-text">{{}}</div>
<div class="col-1"></div>
<div class="col-2 print-text">{{}}</div>
</div>
<div class="row col-6"></div>
<div class="row col-12" id="bc-image">
<ngx-barcode bc-element-type="img" bc-format="{{}}" [bc-value]="barcodeValue" [bc-display-value]="true" bc-width="3" bc-height="60" bc-font-size="14"></ngx-barcode>
</div>
<div class="row col-6">
<div class="col-8"></div>
<div class="col-4 print-text">***</div>
</div>
<div class="row col-6"></div>
</div>
</div>
****************************************************
@media print {
@page {
size: 84mm 36mm;
}
#barcode {
/*-ms-transform:rotate(90deg);
-o-transform:rotate(90deg);
transform:rotate(90deg);*/
font-weight: bold;
font-size: 30px;
}
.no-print {
display: none;
}
.row {
margin: 0 auto;
}
.col-1 {
max-width: 8.333333%;
}
.col-2 {
max-width: 16.666667%;
}
.col-3 {
max-width: 25%;
}
.col-4 {
max-width: 33.333333%;
}
.col-6 {
max-width: 100%;
}
.col-8 {
max-width: 66.666667%;
}
.col-12 {
max-width: 100%;
}
}