Przejdź do treści stopki
KORZYSTANIE Z IRONPDF

.NET Merge PDF: Łączenie wielu plików za pomocą IronPDF

Problem zgodności, a nie tylko problem formatowania

Strona główna IronPDF Większość aplikacji FinTech przechowuje dane transakcji w bazie danych relacyjnej i generuje potwierdzenia na żądanie. Kiedy klient o nie poprosi, aplikacja ponownie zapytuje rekord i renderuje widok. Takie podejście ma zasadniczą wadę: wynikowy plik PDF lub "paragon" odzwierciedla aktualny stan danych, a nie to, co klient widział w momencie zakończenia transakcji.

Rekordy bazy danych mogą być korygowane, zmieniane lub aktualizowane w ramach normalnych procesów operacyjnych. Potwierdzenie po powtornym zapytaniu nie jest dokumentem historycznym; to aktualna migawka z przeszlym znacznikiem czasu. Gdy przetwarzacz platnosci spotyka sie z reklamacjami, gdy zespol zgodnosci neobanka odpowiada regulatorowi, gdy rejestr audytu platformy pożyczkowej zostaje wezwany do sądu, lub gdy wymiana kryptowalut musi wykazać integralność dokumentów dla egzaminatora KYC, potrzebny jest dokument, a nie zapytanie.

Dokument PDF zapisany w momencie rozliczenia, z hashowaniem w celu wykrywania manipulacji i zapisany w niezmiennej pamięci, jest właśnie tym dokumentem. Dzięki temu istniejące dokumenty PDF zachowają swoją aktualność przez lata. Niezależnie od tego, czy masz do czynienia z raportami finansowymi, czy prostym pierwszym plikiem PDF, generowanie dokumentów musi być ostateczne.

Obowiązki dotyczące prowadzenia dokumentacji wynikające z norm PCI-DSS, SOX i AML nie wymagają konkretnie dokumentów PDF generowanych programowo, ale wymagają dokumentacji, którą można wykazać i poddać audytowi. Renderowany, zaszyfrowany i opatrzony sygnaturą czasową plik PDF spełnia ten wymóg w sposób, w jaki sam wiersz bazy danych tego nie robi. Pozniej w tym artykule przyjrzymy się IronPDF przykładowi, jak ten proces może działać podczas tworzenia nowego dokumentu PDF.

Rozwiązanie w skrócie: Konwersja treści HTML do formatu PDF w języku C

Biblioteka IronPDF firmy Iron Software generuje potwierdzenie w formacie PDF dokładnie w momencie zakończenia transakcji, synchronicznie, w ramach procesu transakcyjnego. Bibliotekę IronPDF można zainstalować za pomocą menedżera pakietów NuGet lub konsoli menedżera pakietów w programie Visual Studio. Uzywajac .NET CLI, po prostu uruchom instalowanie pakietu IronPDF.

Potwierdzenie jest generowane na podstawie szablonu HTML lub pliku HTML, opatrzone identyfikatorem transakcji i sygnaturą czasową, hashowane i zapisywane w niezmiennej pamięci. Będzie to dokument ostateczny. Nie ma definicji SSRS do utrzymania, nie ma API dokumentów stron trzecich do wywołania i nie ma przeglądarki bezinterfejsowej typu sidecar. IronPDF działa w ramach procesu jako biblioteka NuGet do zadań związanych z plikami PDF.

Kluczowe korzyści z automatyzacji przepływu pracy z dokumentami:

  • Zachowanie formatowania na wszystkich rozmiarach stron.

  • Obsługa podpisów cyfrowych w celu zapewnienia integralności dokumentów.

  • Możliwość tworzenia obiektów PDF na podstawie strony internetowej lub ciągu znaków HTML.

  • Logo klientów i elementy identyfikacji wizualnej firmy Iron Software można łatwo wstawić

Jak działa proces od transakcji do paragonu

Scenariusz idealny

Płatność przebiega pomyślnie, a zapis transakcji jest zapisywany w bazie danych. Ten sam handler — przed zwróceniem odpowiedzi — wypełnia szablon potwierdzenia zawartości HTML szczegółami transakcji: identyfikatorem, sygnaturą czasową UTC, kwotą i walutą, identyfikatorami nadawcy i odbiorcy, zestawieniem opłat oraz treścią dynamiczną.

Renderer new ChromePdfRenderer (a konkretnie var renderer = new ChromePdfRenderer();) konwertuje zawartość internetową do formatu PDF. Powstała tablica bajtów PDF jest natychmiast hashowana przy użyciu algorytmu SHA-256.

using IronPdf
using System.Security.Cryptography;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.MarginTop = 15;

renderer.RenderingOptions.MarginBottom = 15;

string receiptHtml = $@"
    <h1>Transaction Receipt</h1>
    <p><strong>Transaction ID:</strong> {tx.Id}</p>
    <p><strong>Timestamp (UTC):</strong> {tx.CompletedAt:u}</p>
    <p><strong>Amount:</strong> {tx.Amount:F2} {tx.Currency}</p>
    <p><strong>Fee:</strong> {tx.Fee:F2} {tx.Currency}</p>
    <p><strong>From:</strong> {tx.SenderRef} &rarr; <strong>To:</strong> {tx.ReceiverRef}</p>
    <p><strong>Resulting Balance:</strong> {tx.ClosingBalance:F2} {tx.Currency}</p>";

var pdf = renderer.RenderHtmlAsPdf(receiptHtml);

string hash = Convert.ToHexString(SHA256.HashData(pdf.BinaryData));

await _db.StoreReceiptHashAsync(tx.Id, hash);

await _blobStorage.UploadImmutableAsync($"receipts/{tx.Id}.pdf", pdf.BinaryData);
using IronPdf
using System.Security.Cryptography;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.MarginTop = 15;

renderer.RenderingOptions.MarginBottom = 15;

string receiptHtml = $@"
    <h1>Transaction Receipt</h1>
    <p><strong>Transaction ID:</strong> {tx.Id}</p>
    <p><strong>Timestamp (UTC):</strong> {tx.CompletedAt:u}</p>
    <p><strong>Amount:</strong> {tx.Amount:F2} {tx.Currency}</p>
    <p><strong>Fee:</strong> {tx.Fee:F2} {tx.Currency}</p>
    <p><strong>From:</strong> {tx.SenderRef} &rarr; <strong>To:</strong> {tx.ReceiverRef}</p>
    <p><strong>Resulting Balance:</strong> {tx.ClosingBalance:F2} {tx.Currency}</p>";

var pdf = renderer.RenderHtmlAsPdf(receiptHtml);

string hash = Convert.ToHexString(SHA256.HashData(pdf.BinaryData));

await _db.StoreReceiptHashAsync(tx.Id, hash);

await _blobStorage.UploadImmutableAsync($"receipts/{tx.Id}.pdf", pdf.BinaryData);
Imports IronPdf
Imports System.Security.Cryptography

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.MarginTop = 15

renderer.RenderingOptions.MarginBottom = 15

Dim receiptHtml As String = $"
    <h1>Transaction Receipt</h1>
    <p><strong>Transaction ID:</strong> {tx.Id}</p>
    <p><strong>Timestamp (UTC):</strong> {tx.CompletedAt:u}</p>
    <p><strong>Amount:</strong> {tx.Amount:F2} {tx.Currency}</p>
    <p><strong>Fee:</strong> {tx.Fee:F2} {tx.Currency}</p>
    <p><strong>From:</strong> {tx.SenderRef} &rarr; <strong>To:</strong> {tx.ReceiverRef}</p>
    <p><strong>Resulting Balance:</strong> {tx.ClosingBalance:F2} {tx.Currency}</p>"

Dim pdf = renderer.RenderHtmlAsPdf(receiptHtml)

Dim hash As String = Convert.ToHexString(SHA256.HashData(pdf.BinaryData))

Await _db.StoreReceiptHashAsync(tx.Id, hash)

Await _blobStorage.UploadImmutableAsync($"receipts/{tx.Id}.pdf", pdf.BinaryData)
$vbLabelText   $csharpLabel

Przykładowy wygenerowany dokument PDF

Przykładowy wynik PDF IronPDF Nowy dokument PDF jest następnie zapisywany w niezmiennej pamięci. Niezależnie od tego, czy jest to Twój pierwszy plik PDF, czy też łączysz istniejące pliki PDF, proces pozostaje taki sam. Kopia jest wyświetlana w przeglądarce plików PDF dla klienta. Podczas prezentacji produktów Iron Software zespół często podkreśla, jak zaledwie kilka linii kodu pozwala obsługiwać dynamiczne raporty i zadania, takie jak konwersja HTML do PDF lub generowanie plików PDF.

Aby ułatwić korzystanie z interfejsu użytkownika (UI) i doświadczenia użytkownika (UX), na pulpicie nawigacyjnym mogą być widoczne klucze w niebieskich lub szarych kółkach, oznaczające zabezpieczone, zaszyfrowane pliki. Ikona w postaci strzałki w prawo przy linku do pobrania ułatwia użytkownikom nawigację.

Wypisany nagłówek lub stopka potwierdza pochodzenie dokumentu na każdej stronie:

var shortHash = hash[..12];

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = $@"
        <div style='font-size:9px; color:#666; text-align:center;'>
            Generated: {tx.CompletedAt:u} &nbsp;|&nbsp;
            TX: {tx.Id} &nbsp;|&nbsp;
            SHA-256: {shortHash}...
        </div>"
};
var shortHash = hash[..12];

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = $@"
        <div style='font-size:9px; color:#666; text-align:center;'>
            Generated: {tx.CompletedAt:u} &nbsp;|&nbsp;
            TX: {tx.Id} &nbsp;|&nbsp;
            SHA-256: {shortHash}...
        </div>"
};
HTML

Przykład stopki

Przykładowa stopka Każda strona potwierdzenia zawiera identyfikator transakcji, znacznik czasu generacji oraz skrócony hash, co wystarcza, aby specjalista ds. zgodności mógł przeprowadzić wyrywkową kontrolę integralności bez konieczności uzyskiwania dostępu do bazy danych.

Przypadki skrajne

Anulacje i zwroty. Nieudana lub anulowana transakcja nadal wymaga dokumentu. Wygeneruj oddzielny plik PDF dla zdarzenia odwrócenia, odwołując się do oryginalnego identyfikatora transakcji i skrótu paragonu. Paragon odwrotu stoi samodzielnie jako zapisa tego, co się wydarzyło; nie zastepuje ani nie modyfikuje oryginalu.

Transakcje wielowalutowe. Szablon HTML musi poprawnie obsługiwać umieszczanie symboli walut, separatorów dziesiętnych oraz ujawnianie kursów wymiany zgodnie z ustawieniami regionalnymi. Większość tego zadania realizują ciągi formatujące w języku C#: {amount.ToString("F2", CultureInfo.GetCultureInfo("de-DE"))} dla niemiećkich konwencji dziesiętnych, wyraźne umieszczanie symboli dla walut takich jak JPY, które nie używają miejsc po przecinku. Kurs wymiany walut i jego data powinny pojawić się jako osobna pozycja, a nie wynikać z kwot.

Znaczniki regulacyjne. Niektóre jurysdykcje wymagają umieszczenia określonego tekstu na niektórych typach dokumentów, np. "NIE JEST TO FAKTURA PODATKOWA", "NIEOFICJALNA KOPIA" lub sformułowania dotyczące ujawniania informacji specyficzne dla danej jurysdykcji. Są one czysto obsługiwane jako nakładka HTML w szablonie lub jako stylizowany pasek nagłówka, bez modyfikowania podstawowych danych transakcji.

Dlaczego ma to znaczenie poza kwestią zgodności

Interesariusze Co otrzymują
Zgodność z przepisami / Kwestie prawne Niezmienne, zaszyfrowane potwierdzenia, które w ciągu kilku minut spełniają wymagania audytowe, bez ponownego wyszukiwania, bez odtwarzania, bez wyjaśniania, dlaczego aktualny wpis w bazie danych różni się od tego, co widział klient
Obsługa klienta Dokładny dokument, który klient otrzymał w momencie transakcji, dzięki czemu rozstrzyganie sporów opiera się na faktach, a nie na interpretacji
Klienci Profesjonalny, opatrzony logo firmy paragon w skrzynce odbiorczej w ciągu kilku sekund od każdej transakcji, ten sam dokument, który firma przechowuje w swoich aktach
Inżynieria Jeden szablon HTML do utrzymania, renderowany w trakcie procesu bez zależności od usług zewnętrznych, bez konieczności monitorowania umowy API i bez konieczności śledzenia rozliczeń za poszczególne dokumenty
Finanse / Księgowość Wyjście archiwalne w formacie PDF/A do długoterminowego przechowywania, zgodne z polityką przechowywania dokumentów i spełniające wymagania dotyczące prowadzenia dokumentacji finansowej bez konieczności stosowania oddzielnego procesu archiwizacji

PoradyWłącz wyjście PDF/A za pomocą jednej opcji renderowania — renderer.RenderingOptions.PdfArchiveFormat = IronPdf.Rendering.PdfArchiveFormat.PDF_A_3B — aby tworzyć dokumenty archiwalne zgodne z normą ISO, dopuszczalne do długoterminowego przechowywania dokumentacji finansowej.

Zakończenie

Różnica między 'przechowujemy dane transakcji' a 'mamy audytowalny zapis' jest mniejsza niż się wydaje; to jedno kroki renderowania dodać do przepływu zatwierdzania transakcji. Ten krok pozwala uzyskać dokument o pochodzeniu, którego sam wiersz w bazie danych nie jest w stanie zapewnić: sygnaturę czasową, której nie można cofnąć, skrót wykrywający manipulacje oraz fizyczny artefakt, który wygląda tak samo niezależnie od tego, czy otwiera go klient, czy żąda go audytor.

IronPDF zapewnia zespołom .NET pełną kontrolę nad tym etapem, od renderowania potwierdzenia HTML po umieszczanie stempla w stopce, haszowanie danych wyjściowych i przesyłanie strumieniowe do niezmiennej pamięci masowej — wszystko to za pomocą jednej biblioteki dostępnej na stronie ironpdf.com. Jeśli tworzysz lub wzmacniasz potok transakcyjny, rozpocznij bezpłatny 30-dniowy okres próbny i sprawdź, czy generowane potwierdzenia są zgodne z Twoimi wymaganiami, zanim wprowadzisz rozwiązanie do produkcji.

Często Zadawane Pytania

Do czego służy IronPDF w aplikacjach FinTech?

IronPDF jest używane w aplikacjach FinTech do tworzenia śledzonych, znakowanych czasem paragonów PDF i zapisów transakcji, co zapewnia zgodność i ułatwia prowadzenie dokumentacji.

Jak IronPDF pomaga w zgodności w transakcjach finansowych?

IronPDF pomaga w zgodności przez umożliwienie tworzenia dokładnych i bezpiecznych paragonów PDF, które zawierają niezbędne szczegóły transakcji, co jest kluczowe dla celów audytu i regulacji.

Czy IronPDF może generować paragony PDF ze znakowaniem czasu?

Tak, IronPDF może generować paragony PDF ze znakowaniem czasu, zapewniając niezawodny sposób dokumentowania czasów transakcji i prowadzenia dokładnej dokumentacji.

Czy możliwe jest dostosowanie układów PDF dla paragonów z IronPDF?

IronPDF pozwala programistom dostosowywać układy PDF, co ułatwia formatowanie paragonów, aby spełniały specyficzne potrzeby biznesowe i wymagania dotyczące identyfikacji wizualnej.

Jak IronPDF zapewnia bezpieczeństwo zapisów transakcji?

IronPDF zapewnia bezpieczeństwo zapisów transakcji, umożliwiając tworzenie PDF z szyfrowaniem, podpisami cyfrowymi i innymi funkcjami zabezpieczeń, by chronić poufne informacje.

Jakie są korzyści z używania IronPDF do dokumentacji transakcji punktu sprzedaży?

Użycie IronPDF do dokumentacji transakcji punktu sprzedaży przynosi korzyści firmom, zapewniając niezawodne, śledzone paragony, które wzmacniają zaufanie klientów i ułatwiają zarządzanie zapisami finansowymi.

Czy IronPDF obsługuje integrację z innymi systemami finansowymi?

IronPDF można zintegrować z innymi systemami finansowymi, co umożliwia płynny przepływ danych i zwiększa efektywność operacji finansowych poprzez automatyzację generowania PDF.

Jak IronPDF może poprawić raportowanie finansowe w aplikacjach FinTech?

IronPDF poprawia raportowanie finansowe poprzez tworzenie szczegółowych i spójnych dokumentów PDF, które są łatwe do przeglądania i udostępniania, umożliwiając lepszą analizę finansową i podejmowanie decyzji.

Co sprawia, że IronPDF jest odpowiednie do użycia w branży FinTech?

IronPDF jest odpowiednie dla branży FinTech z powodu jego zdolności do generowania bezpiecznych, zgodnych i konfigurowalnych dokumentów PDF, które są niezbędne do zarządzania transakcjami finansowymi i zapisami.

Czy IronPDF może zautomatyzować generowanie zapisów transakcji?

Tak, IronPDF może zautomatyzować generowanie zapisów transakcji, redukując nakład ręcznej pracy i minimalizując błędy, jednocześnie zapewniając spójne dokumentowanie we wszystkich transakcjach.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie