Jak dodać tło i nakładkę na pierwszy plan w plikach PDF w Javie
IronPDF for Java udostępnia metody addBackgroundPdf i addForegroundPdf, które umieszczają dodatkową zawartość PDF za istniejącymi stronami lub na ich wierzchu. Te metody obejmują pełen zakres praktycznych scenariuszy nakładkowych: nagłówki, wypełnienia kolorystyczne, znaki wodne, stemplowanie zatwierdzenia i wskaźniki rewizji. Biblioteka renderuje HTML do PDF wewnętrznie, więc każda prawidłowa wyrażenie CSS (gradienty, obrazy, typografia) może stać się warstwą tła lub pierwszego planu bez ręcznej manipulacji strumieniem PDF.
Dodaj IronPDF do swojego projektu, deklarując zależność w pom.xml za pośrednictwem Maven Central, a następnie aktywuj klucz licencyjny przed wykonaniem jakichkolwiek wywołań API.
Szybki start: Dodawanie tła i pierwszego planu do plików PDF
```java :title=Quickstart //:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/quickstart.java import com.ironsoftware.IronPDF.*; import com.ironsoftware.IronPDF.edit.PageSelection; import java.nio.file.Paths;
// Wczytaj docelowy plik PDF PDFDocument pdf = PDFDocument.fromFile(Paths.get("document.pdf"));
// Renderuj tło z HTML i zastosuj je do wszystkich stron PdfDocument background = PdfDocument.renderHtmlAsPdf("
"); pdf.addBackgroundPDF(background);// Renderuj nakładkę na pierwszym planie i zastosuj ją do wszystkich stron PdfDocument foreground = PdfDocument.renderHtmlAsPdf(""); pdf.addForegroundPDF(foreground);
pdf.saveAs(Paths.get("output.pdf"));
<div class="hsg-featured-snippet">
<h3>Minimalny proces (5 kroków)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">Zainstaluj bibliotekę IronPDF Java przez Maven</a></li>
<li>Wczytaj docelowy plik PDF za pomocą <code>PdfDocument.fromFile()</code></li>
<li>Renderuj lub importuj tło albo pierwszy plan PDF</li>
<li>Wywołaj <code>addBackgroundPdf</code>, aby umieścić zawartość za istniejącymi stronami</li>
<li>Wywołaj <code>addForegroundPdf</code>, aby nałożyć zawartość na istniejące strony</li>
</ol>
</div>
## Jak dodać tło do pliku PDF?
Aby dodać tło do istniejącego pliku PDF, wywołaj `addBackgroundPdf` na instancji `PdfDocument` i przekaż drugą instancję `PdfDocument` jako źródło tła. Metoda komponuje tło pod każdą stroną docelowego dokumentu. Przed uruchomieniem kodu [skonfiguruj IronPDF z kluczem licencyjnym](https://ironpdf.com/java/get-started/license-keys/), aby aktywować bibliotekę.
```java
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/add-background.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
// Activate the license
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Wczytaj docelowy plik PDF
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Render a background from an HTML color definition
PdfDocument background = PdfDocument.renderHtmlAsPdf("<body style='background-color: cyan;'></body>");
// Apply the background to all pages
pdf.addBackgroundPDF(background);
pdf.saveAs(Paths.get("addBackground.pdf"));
Wywołanie renderHtmlAsPdf konwertuje dowolny poprawny kod HTML i CSS na stronę PDF, którą IronPDF umieszcza za istniejącą treścią. Możesz użyć niestandardowych stylów CSS w tutorialu HTML do PDF, aby uzyskać gradientowe wypełnienia, powtarzające się wzory lub tła oparte na obrazach. Silnik renderujący HTML przetwarza nowoczesne właściwości CSS, więc projekty działające w przeglądarce bezpośrednio tłumaczą się na warstwę tła.
<body style='margin:0; padding:0;'> w szablonie tła HTML, aby wyeliminować domyślne marginesy przeglądarki i upewnić się, że kolor lub obraz wypełnia całą stronę.Jak wygląda wynikowy plik PDF z tłem?
Dlaczego używać HTML do tworzenia teł PDF?
Dodając tło, nakłada się obraz lub stronę dokumentu za istniejącą zawartością, umożliwiając nagłówki, wypełnienia kolorem, znaki wodne i dekoracyjne elementy projektu. Nakładanie na pierwszy plan umieszcza zawartość na górze, co czyni ją użyteczną do adnotacji, stempli i wskaźników zatwierdzenia.
Podejście oparte na HTML oferuje kilka konkretnych zalet w porównaniu do importu obrazów:
- Dokładna kontrola CSS: Użyj dowolnego koloru CSS, gradientu, obrazu lub rozmieszczenia, aby zdefiniować projekt tła.
- Dopasowanie do rozmiaru strony: Tła renderowane z HTML dostosowują się automatycznie do wymiarów docelowego pdf.
- Dynamiczne generowanie: Buduj tła programistycznie z danych, preferencji użytkownika lub logiki szablonu.
- Lekka wyjście: Tła zdefiniowane przez CSS są mniejsze niż obrazy rastrowe przy równorzędnej jakości wizualnej.
Funkcjonalność ta nadaje się do tworzenia formularzy z nagłówkami firmowymi lub dodawania niestandardowych znaków wodnych do dokumentów prawnych i finansowych.
Jak dodać tło do określonych stron?
Metoda addBackgroundPdf akceptuje opcjonalny argument PageSelection, który ogranicza operację do określonych przez użytkownika stron. Użyj PageSelection.firstPage(), PageSelection.lastPage(), PageSelection.singlePage(int index) lub PageSelection.pageRange(int start, int end), aby wybrać dowolny podzbiór stron. Pełna dokumentacja PageSelection jest dostępna w Dokumentacji API IronPDF for Java.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/add-background-specific-page.java
import com.ironsoftware.IronPDF.*;
import com.ironsoftware.IronPDF.edit.PageSelection;
import java.nio.file.Paths;
// Wczytaj docelowy plik PDF
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Load a background from an existing PDF file
PdfDocument background = PdfDocument.fromFile(Paths.get("background.pdf"));
// Apply only the first page of the background PDF to the first page of the target
pdf.addBackgroundPdf(background, 0, PageSelection.firstPage());
pdf.saveAs(Paths.get("addBackgroundToSpecificPage.pdf"));
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/add-background-specific-page.java
import com.ironsoftware.IronPDF.*;
import com.ironsoftware.IronPDF.edit.PageSelection;
import java.nio.file.Paths;
// Wczytaj docelowy plik PDF
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Load a background from an existing PDF file
PdfDocument background = PdfDocument.fromFile(Paths.get("background.pdf"));
// Apply only the first page of the background PDF to the first page of the target
pdf.addBackgroundPdf(background, 0, PageSelection.firstPage());
pdf.saveAs(Paths.get("addBackgroundToSpecificPage.pdf"));
Drugi argument (0) to backgroundPdfPageIndex, indeks zaczynający się od zera, który wybiera stronę pliku PDF w tle, która ma służyć jako źródło. Gdy twoja szablonowa tło zawiera wiele projektów stron, ten parametr pozwala na zastosowanie różnych projektów do różnych sekcji docelowego dokumentu. Połącz selektywne tła z przykładami dzielenia i scalania PDF, aby zbudować workflow montażu dokumentu wieloetapowego.
Kiedy należy stosować tła do określonych stron?
Selektywne zastosowanie tła obejmuje szereg powszechnych scenariuszy dokumentów:
- Strony tytułowe: Oznacz pierwszą stronę pełnowymiarowym projektem, podczas gdy strony główne pozostają czyste.
- Podziały rozdziałów: Zastosuj tła sekcji do pierwszej strony każdego rozdziału.
- Uwierzytelnianie prawne: Dodaj oficjalny nagłówek tylko do stron wymagających formalnej certyfikacji.
- Sekcje poufne: Zabarwij lub oznakuj określone strony, aby wskazać treść ograniczoną.
- Przygotowanie do druku: Zastosuj tła z zachowaniem marginesów bezpiecznych do stron przeznaczonych do druku fizycznego.
Po zastosowaniu obrazów tła w wysokiej rozdzielczości, rozważ kompresję wyjściowego PDF, aby utrzymać rozmiary plików na poziomie zarządzalnym w celu dystrybucji lub archiwizacji.
Jak dodać nakładkę pierwszego planu do PDF?
Metoda addForegroundPdf nakłada warstwę PDF na istniejącą zawartość strony. Renderowany pierwszy plan pojawia się nad całą istniejącą treścią tekstową, obrazami i grafikami na każdej docelowej stronie. Ta metoda to standardowe podejście dla znaków wodnych, stempli zatwierdzenia i wskaźników rewizji, które muszą pozostać widoczne niezależnie od treści poniżej. Aby uzyskać działające przykłady kodu, zobacz przykłady teł i pierwszych planów w Java.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/add-foreground.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
// Activate the license
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Wczytaj docelowy plik PDF
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Render a diagonal text stamp as the foreground layer
PdfDocument foreground = PdfDocument.renderHtmlAsPdf(
"<h1 style='transform: rotate(-45deg); opacity: 0.5;'>Foreground Example</h1>"
);
// Apply the foreground to all pages
pdf.addForegroundPDF(foreground);
pdf.saveAs(Paths.get("overlayForeground.pdf"));
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/add-foreground.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
// Activate the license
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Wczytaj docelowy plik PDF
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Render a diagonal text stamp as the foreground layer
PdfDocument foreground = PdfDocument.renderHtmlAsPdf(
"<h1 style='transform: rotate(-45deg); opacity: 0.5;'>Foreground Example</h1>"
);
// Apply the foreground to all pages
pdf.addForegroundPDF(foreground);
pdf.saveAs(Paths.get("overlayForeground.pdf"));
Właściwość CSS opacity kontroluje przezroczystość, dzięki czemu stempel na pierwszym planie nie zasłania całkowicie treści znajdującej się pod spodem. Właściwość transform: rotate() stosuje orientację ukośną, która jest standardem dla znaków wodnych "projekt" i "poufne". Biblioteka zarządza całością kompozycji wewnętrznie; nie jest wymagana ręczna manipulacja strumieniem PDF.
renderHtmlAsPdf. Każdy kod CSS, który działa w nowoczesnej przeglądarce (w tym @font-face, flexbox i zmienne CSS), da identyczny wynik w warstwie pierwszoplanowej.Jak wygląda wynik w pierwszym planie?
Dłączego warto używać nakładek na pierwszym planie zamiast tła?
Nakładki pierwszego planu pełnią inną rolę niż tła i są właściwym wyborem, gdy dodana treść musi pojawić się na górze istniejącego materiału strony:
- Stemple szkicowe i poufne: Umieść widoczny, ale przeźroczysty tekst w poprzek stron bez usuwania istniejącej treści.
- Adnotacje zatwierdzeń i recenzji: Nakładaj wskaźniki akceptacji lub notki recenzenta na ukończone dokumenty.
- Identyfikatory bezpieczeństwa: Dodaj kody śledzące lub unikalne identyfikatory dokumentów, które znajdują się nad całą treścią strony.
- Wskaźniki wygaśnięcia: Oznacz dokumenty wrażliwe na czas widocznymi powiadomieniami, które pojawiają się nad tabelami danych lub wykresami.
- Znaki certyfikacyjne: Stosuj logo lub pieczęcie nad ukończoną treścią w sposób, który nie może być zasłaniany przez istniejące elementy strony.
Nakładki pierwszego planu dobrze działają przy wypełnianiu formularzy PDF w Java, gdy trzeba umieścić wskaźniki stanu lub stempli zatwierdzeń nad ukończonymi danymi formularzy.
Jak dodać pierwszy plan do określonych stron?
Metoda addForegroundPdf przyjmuje argument PageSelection w taki sam sposób jak addBackgroundPdf. Użyj PageSelection.pageRange(int start, int end), aby ograniczyć obszar pierwszego planu do ciągłego zakresu, lub przekaż List<Integer>, aby wybrać strony niesekwencyjne.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/add-foreground-page-range.java
import com.ironsoftware.IronPDF.*;
import com.ironsoftware.IronPDF.edit.PageSelection;
import java.nio.file.Paths;
// Wczytaj docelowy plik PDF
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Render the foreground overlay
PdfDocument foreground = PdfDocument.renderHtmlAsPdf(
"<h1 style='transform: rotate(-45deg); opacity: 0.5;'>Foreground Example</h1>"
);
// Apply the foreground to pages 2 through 8 (zero-based index: 1 to 7)
pdf.addForegroundPdf(foreground, PageSelection.pageRange(2, 8));
pdf.saveAs(Paths.get("overlayForeground.pdf"));
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/add-foreground-page-range.java
import com.ironsoftware.IronPDF.*;
import com.ironsoftware.IronPDF.edit.PageSelection;
import java.nio.file.Paths;
// Wczytaj docelowy plik PDF
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Render the foreground overlay
PdfDocument foreground = PdfDocument.renderHtmlAsPdf(
"<h1 style='transform: rotate(-45deg); opacity: 0.5;'>Foreground Example</h1>"
);
// Apply the foreground to pages 2 through 8 (zero-based index: 1 to 7)
pdf.addForegroundPdf(foreground, PageSelection.pageRange(2, 8));
pdf.saveAs(Paths.get("overlayForeground.pdf"));
pageRange jest indeksem zaczynającym się od 1 w niektórych przeciążeniach i od 0 w innych, w zależności od tego, które przeciążenie wywołujesz. Sprawdź Dokumentację API IronPDF Java dla określonej sygnatury przeciążenia, aby potwierdzić konwencję indeksowania w swojej wersji.Kiedy należy używać zakresów stron dla pierwszych planów?
Selektywne zastosowanie pierwszego planu na stronach jest przydatne w kilku scenariuszach produkcyjnych:
- Sekcje dokumentu: Oznacz nakładkę "DRAFT" tylko na stronach aneksu lub uzupełniających.
- Śledzenie wersji: Oznacz nowe strony pieczęcią rewizyjną, pozostawiając niezmienione strony nienaruszone.
- Selektywna poufność: Zastosuj nałożenie "POUFNE" tylko na strony zawierające wrażliwe dane finansowe lub medyczne.
- Wielojęzyczne dokumenty: Umieść powiadomienia dotyczące języka na odpowiednich stronach dokumentu dwujęzycznego.
- Zarządzanie umowami: Dodaj nakładkę "BRAK" do wygasłych stron umowy bez modyfikacji całego dokumentu.
Jakie są to wspólne wzorce wyboru stron?
Poniższe wzorce obejmują większość selektywnych scenariuszy nakładkowych:
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/page-selection-patterns.java
import com.ironsoftware.IronPDF.*;
import com.ironsoftware.IronPDF.edit.PageSelection;
import java.util.ArrayList;
import java.util.List;
import java.nio.file.Paths;
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
PdfDocument foreground = PdfDocument.renderHtmlAsPdf("<h1 style='opacity: 0.4;'>DRAFT</h1>");
PdfDocument background1 = PdfDocument.fromFile(Paths.get("cover-background.pdf"));
PdfDocument background2 = PdfDocument.fromFile(Paths.get("end-background.pdf"));
// Apply foreground to all even-numbered pages (zero-based)
List<Integer> evenPages = new ArrayList<>();
for (int i = 1; i < pdf.getPageCount(); i += 2) {
evenPages.add(i);
}
pdf.addForegroundPdf(foreground, PageSelection.pageRange(evenPages));
// Apply different backgrounds to the first and last pages
pdf.addBackgroundPdf(background1, 0, PageSelection.firstPage());
pdf.addBackgroundPdf(background2, 0, PageSelection.lastPage());
// Apply foreground to all pages except the first and last
if (pdf.getPageCount() > 2) {
pdf.addForegroundPdf(foreground, PageSelection.pageRange(1, pdf.getPageCount() - 2));
}
pdf.saveAs(Paths.get("selective-overlay.pdf"));
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/background-foreground/page-selection-patterns.java
import com.ironsoftware.IronPDF.*;
import com.ironsoftware.IronPDF.edit.PageSelection;
import java.util.ArrayList;
import java.util.List;
import java.nio.file.Paths;
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
PdfDocument foreground = PdfDocument.renderHtmlAsPdf("<h1 style='opacity: 0.4;'>DRAFT</h1>");
PdfDocument background1 = PdfDocument.fromFile(Paths.get("cover-background.pdf"));
PdfDocument background2 = PdfDocument.fromFile(Paths.get("end-background.pdf"));
// Apply foreground to all even-numbered pages (zero-based)
List<Integer> evenPages = new ArrayList<>();
for (int i = 1; i < pdf.getPageCount(); i += 2) {
evenPages.add(i);
}
pdf.addForegroundPdf(foreground, PageSelection.pageRange(evenPages));
// Apply different backgrounds to the first and last pages
pdf.addBackgroundPdf(background1, 0, PageSelection.firstPage());
pdf.addBackgroundPdf(background2, 0, PageSelection.lastPage());
// Apply foreground to all pages except the first and last
if (pdf.getPageCount() > 2) {
pdf.addForegroundPdf(foreground, PageSelection.pageRange(1, pdf.getPageCount() - 2));
}
pdf.saveAs(Paths.get("selective-overlay.pdf"));
addBackgroundPdf i addForegroundPdf w tym samym PdfDocument, aby zbudować szablony warstwowe. Na przykład, zastosuj wypełnienie kolorem marki jako tło, a następnie dodaj znak wodny poufności jako pierwszy plan w pojedynczym przepływie.Jakie metody udostępnia klasa PageSelection?
Klasa PageSelection kontroluje, które strony otrzymują warstwę tła lub pierwszego planu. Wszystkie wbudowane metody fabryczne zwracają obiekt PageSelection akceptowany zarówno przez addBackgroundPdf, jak i addForegroundPdf.
| Metoda | Opis |
|---|---|
firstPage() | Celuje w pierwszą stronę PDF |
lastPage() | Celuje w ostatnią stronę PDF |
singlePage(int index) | Celuje w jedną stronę według indeksu zerowego |
pageRange(int start, int end) | Celuje w ciągły zakres stron (włączająco) |
pageRange(List | Celuje w niesequentialną listę stron |
allPages() | Celuje we wszystkie strony (domyślnie, gdy nie podano wyboru) |
Jak wybrać odpowiednią metodę PageSelection?
Wybór metody zależy od struktury dokumentu i zakresu nakładki:
firstPage(): Strony tytułowe, strony z nagłówkiem oraz elementy graficzne wprowadzenia.lastPage(): Bloki podpisów, informacje na końcu dokumentu i podsumowania końcowe.singlePage(): Certyfikaty, formularze lub poszczególne strony wymagające szczególnego traktowania.pageRange(start, end): Rozdziały, dodatki lub dowolna ciągła sekcja dokumentu.pageRange(List): Wybory niesekwencyjne, takie jak wszystkie strony nieparzyste lub ręcznie określony zestaw.
Aby uzyskać pełną dokumentację parametrów i sygnatury przeciążeń metod, zobacz Dokumentację API IronPDF.
Jakie są następne kroki w dodawaniu teł i pierwszych planów do PDF?
Metody addBackgroundPdf i addForegroundPdf obejmują pełen zakres scenariuszy nakładania warstw na pliki PDF, od prostych wypełnień kolorem i znaków wodnych po procesy tworzenia dokumentów z wykorzystaniem wielu szablonów. Połącz je z PageSelection, aby zastosować różne projekty dla poszczególnych sekcji, lub połącz je z innymi metodami PdfDocument, aby zbudować gotowe do produkcji potoki dokumentów. Aby uzyskać dodatkowe techniki nakładek, takie jak pieczęć tekstu i obrazów, zapoznaj się z przewodnikiem dotyczącym pieczęci tekstu i obrazów lub przykładami adnotacji dla Java.
Aby korzystać z tych funkcji w swoim projekcie, rozpocznij darmowy okres próbny IronPDF for Java lub zobacz opcje licencyjne do komercyjnego wdrożenia. IronPDF jest dostępny przez Maven Central i obsługuje Java 8 i nowsze na Windows, Linux i macOS.
Gotowy, aby zobaczyć, co jeszcze potrafi IronPDF? Zapoznaj się z kompletnym HTML do PDF tutorialem dla Java dla pełnego omówienia opcji renderowania, manipulacji i eksportu.
Często Zadawane Pytania
Jak dodać tło do istniejącego pliku PDF w Javie?
Załaduj docelowy plik PDF za pomocą PdfDocument.fromFile(), utwórz PDF tła używając PdfDocument.renderHtmlAsPdf() z twoim HTML/CSS, a następnie wywołaj pdf.addBackgroundPdf(background) aby zmontować go za wszystkimi stronami. Najpierw aktywuj bibliotekę za pomocą License.setLicenseKey().
Jaka jest różnica między addBackgroundPdf a addForegroundPdf?
addBackgroundPdf umieszcza warstwę źródłową PDF za istniejącą zawartością stron, co czyni ją odpowiednią do nagłówków, wypełnień kolorowych i szablonów projektowych. addForegroundPdf umieszcza warstwę na istniejącej zawartości, co czyni ją odpowiednią do znaków wodnych, pieczęci roboczych, wskaźników zatwierdzenia i powiadomień o poufności.
Czy mogę zastosować tło lub przód tylko do konkretnych stron?
Tak. Zarówno addBackgroundPdf jak i addForegroundPdf akceptują opcjonalny argument PageSelection. Użyj PageSelection.firstPage(), PageSelection.lastPage(), PageSelection.singlePage(int index) lub PageSelection.pageRange(int start, int end) aby wybrać podzbiór stron.
Jak stworzyć tło PDF używając HTML i CSS?
Wywołaj PdfDocument.renderHtmlAsPdf() i przekaż swój łańcuch HTML. IronPDF obsługuje nowoczesny CSS, w tym gradienty, obrazy tła, niestandardowe czcionki i przezroczystość. Renderowana strona skaluje się, aby automatycznie dopasować się do wymiarów docelowego dokumentu.
Co kontroluje parametr backgroundPdfPageIndex?
Drugi argument całkowity do addBackgroundPdf to indeks strony bazowany na zerze w PDF-ie tła, który ma być użyty jako źródło. Kiedy twój szablon tła ma wiele projektów stron, przekaż różne wartości indeksu, aby zastosować różne projekty do różnych sekcji docelowego dokumentu.
Czy potrzebna jest licencja, aby dodawać tła i nakładki przednie w Java?
Tak. Ustaw ważny klucz licencyjny za pomocą License.setLicenseKey() przed jakimkolwiek wywołaniem API. Darmowe licencje próbne są dostępne na ironpdf.com do oceny. Biblioteka wymaga odpowiedniego licencjonowania do użytku produkcyjnego.


