🚀 Natywne kody EAN na PDF – automatyzacja magazynu i bezpieczny KSeF (gotowy kod CSS)
sugestia
Nowe
Sugeruję dodanie natywnej opcji generowania kodów EAN bezpośrednio na dokumentach PDF (wraz z przełącznikiem w API).
Dlaczego to ważne?
Automatyzacja: Pozwala na błyskawiczne przyjęcia towaru i obsługę magazynową (skanowanie wydruków).
Bezpieczeństwo KSeF: Obecnie można to osiągnąć tylko przez "własne szablony", co generuje ryzyko niezgodności z KSeF. Natywna funkcja eliminuje ten problem.
API: Umożliwi generowanie gotowych etykiet/faktur dla zewnętrznych systemów bez konieczności renderowania ich w przeglądarce.
Implementacja: Funkcja jest bardzo łatwa do wdrożenia, ponieważ silnik PDF Fakturowni już to obsługuje. Przetestowałem rozwiązanie, które działa idealnie i jest zoptymalizowane pod czytniki kodów.
Poniżej gotowy, przetestowany snippet CSS, który wystarczy wdrożyć systemowo (rozwiązuje problemy z renderowaniem pasków, trzeba tylko dostosować marginesy i rozmiary):
🚀 Natywne kody EAN na PDF – automatyzacja magazynu i bezpieczny KSeF (gotowy kod CSS) sugestia Nowe
Sugeruję dodanie natywnej opcji generowania kodów EAN bezpośrednio na dokumentach PDF (wraz z przełącznikiem w API).
Dlaczego to ważne?
Automatyzacja: Pozwala na błyskawiczne przyjęcia towaru i obsługę magazynową (skanowanie wydruków).
Bezpieczeństwo KSeF: Obecnie można to osiągnąć tylko przez "własne szablony", co generuje ryzyko niezgodności z KSeF. Natywna funkcja eliminuje ten problem.
API: Umożliwi generowanie gotowych etykiet/faktur dla zewnętrznych systemów bez konieczności renderowania ich w przeglądarce.
Implementacja: Funkcja jest bardzo łatwa do wdrożenia, ponieważ silnik PDF Fakturowni już to obsługuje. Przetestowałem rozwiązanie, które działa idealnie i jest zoptymalizowane pod czytniki kodów.
Poniżej gotowy, przetestowany snippet CSS, który wystarczy wdrożyć systemowo (rozwiązuje problemy z renderowaniem pasków, trzeba tylko dostosować marginesy i rozmiary):
@media print {
/* --- POPRAWIONY KOD EAN --- */
/* 1. Wymuszenie widoczności i kolorów */
.ean_code.hidden {
display: block !important;
}
* {
-webkit-print-color-adjust: exact !important;
print-color-adjust: exact !important;
color-adjust: exact !important;
}
/* 2. Zabezpieczenie kolumny nazwy */
td.name_col, td.text_left {
overflow: visible !important;
white-space: normal !important;
}
/* --- FIX: OPTYMALIZACJA EAN --- */
/* KONTENER */
.ean_code {
display: inline-block !important;
background-color: transparent !important; /* Zmienione na transp, żeby nie robić tła */
text-align: left !important;
float: left;
zoom: 0.6; /* Lekka korekta: 0.5 bywa czasem za małe dla czytników starszego typu, 0.6 jest bezpieczniejsze */
margin-top: 5px;
width: auto !important;
max-width: none !important;
transform-origin: left top;
}
/* TABELA - KLUCZOWA ZMIANA: FIXED LAYOUT */
.ean_code table.barby-barcode {
border-collapse: collapse !important;
border-spacing: 0 !important;
/* To zapobiega rozciąganiu tabeli przez silnik PDF */
table-layout: fixed !important;
width: auto !important;
height: 35px !important; /* Nieco wyższy, po zoomie będzie ok */
border: 0 !important;
}
/* KOMÓRKI - BAZA */
.ean_code table.barby-barcode td.barby-cell {
padding: 0 !important;
margin: 0 !important;
border: 0 !important; /* Resetujemy border bazowy */
height: 35px !important;
/* FIX: Ustawiamy szerokość na 0 lub minimalną,
aby szerokość wynikała TYLKO z ramki (border) */
width: 0.1pt !important;
min-width: 0 !important;
}
/* CZARNE PASKI - LOGIKA RAMKI */
.ean_code table.barby-barcode td.barby-cell.on {
/* Używamy TYLKO ramki, bez tła, żeby uniknąć "rozlewania" koloru */
background-color: transparent !important;
/* Zmniejszone z 1.5pt na 1.2pt dla lepszej precyzji */
border-left: 1.2pt solid #000000 !important;
visibility: visible !important;
}
/* BIAŁE PASKI */
.ean_code table.barby-barcode td.barby-cell.off {
background-color: transparent !important;
/* Biała ramka musi mieć IDENTYCZNĄ szerokość co czarna, aby zachować proporcje kodu EAN */
border-left: 1.2pt solid #FFFFFF !important;
}
.ean_code table.barby-barcode:empty { display: none; }
}