IronPDF kullanarak Çevrimiçi Başvuru Formlarını PDF Özetlerine Dönüştürme
Manuel Bilet ve Etiket Oluşturmanın Sorunu
Yirmi kişilik özel bir akşam yemeği için Figma veya Canva'da bilet tasarlamak ve manuel olarak dışa aktarmak yönetilebilir. Beş farklı bilet seviyesi olan 3.000 kişi katılımcılı bir teknoloji konferansı için, bu bir süreç değil, bir sorumluluktur.
Genel biletleme platformları dağıtım sorununu çözer ancak diğer her şeyi sınırlar. Markalama seçenekleri bir logo yükleme ve renk seçici ile sınırlıdır. VIP geçişleri, konuşmacı etiketleri ve personel kimlik bilgileri için özel yerleşimler farklı araçlardan ayrı dışa aktarmalar gerektirir. Bir kurumsal zirve, bir kayıt kaydı ile bağlanan ve oturuma özel bir QR kodu içeren bir akşam yemeği oturma etiketi gerektiğinde, çoğu platformun bir cevabı yoktur.
Her bilet üzerinde benzersiz, taranabilir bir kimlik olmadan, check-in bir darboğaza dönüşür. Kapıdaki isim kontrolü veya basılı liste, herkesi yavaşlatır ve sahtekarlık için fırsatlar yaratır, benzersiz bir kodlama içermeyen bir PDF görsel incelemeyi geçer ve ancak başka biri aynı biletle eşzamanlı olarak giriş yapmaya çalışınca fark edilir.
Katılımcılar ayrıca profesyonel bir etkinlik belgesi ile gövdeye gömülü bir rezervasyon referansı içeren düz metin bir onay arasındaki farkı fark eder. Bir müzik festivali, bir kar amacı gütmeyen gala, bir kurumsal zirve, her biri etkinliğin markasını yansıtan materyaller bekler, üçüncü taraf bir sistemin varsayılan şablonunu değil.
Çözüm: .NET Uygulamanız İçerisinde Kişiselleştirilmiş C# PDF Biletler
IronPDF, .NET uygulamalarının, katılımcı verileri ile doldurulmuş ve gömülü QR kod görüntüleriyle HTML ve CSS şablonlarından markalı PDF biletleri ve etiketleri oluşturmasına olanak tanır. Her kayıt sahibinin ayrıntıları aynı şablonu doldurur, her katılımcı için benzersiz bilet ID'si veya check-in URL'si kodlayan bir QR kod üretilir, ChromePdfRenderer, HTML'den PDF'ye süreci yönetir ve uygulama biletleri e-posta ile teslim eder veya kayıt portalında indirme için kullanılabilir hale getirir.
Üçüncü taraf biletleme API ücretleri yok, tasarım aracı dışa aktarmaları yok ve kayıt onayı ile bilet teslimi arasında manuel adımlar yok. Render işlemi mevcut .NET uygulaması içinde çalışır, PDF işlemeyi için bir C# NuGet kütüphanesi (IronPDF), IronQR için bir başka kütüphane ve boru hattı kendine yetkindir.
Pratikte Nasıl Çalışır?
1. Kayıt Kapandıktan Sonra Tetikleyici Çalışır
Bir BackgroundService, bir Hangfire tekrarlı iş veya kayıt sistemi tarafından çağrılan bir webhook uç noktası, bilet oluşturmayı tetikler, her kayıt onaylandıktan hemen sonra ya da etkinlik tarihinden önce bir toplu işlem çalışmasında. İş, her onaylanmış katılımcı için kayıt veritabanını sorgular: isim, e-posta, bilet türü, atanmış oturumlardan, koltuk veya masa numarası ve benzersiz bir bilet ID'si.
2. Katılımcıya Göre Üretilen QR Kodlu PDF Oluştur
Her katılımcı ya bilet ID'sini ya da tam bir check-in URL'sini kodlayan bir QR kodu alır, örneğin, https://event.example.com/checkin/`{ticketId}`. Kod, kolay doğrudan HTML şablonuna gömme için bir base64 string olarak dönüştürülmüş bir PNG olarak render edilir, dosya sistemine yazma gereksinimi olmadan:
using IronQr;
using IronPdf;
// Generate QR code encoding the attendee's check-in URL
var qrCode = QrWriter.Write($"https://event.example.com/checkin/{attendee.TicketId}");
var qrImage = qrCode.Save();
// Convert to base64 for HTML embedding
string qrBase64 = Convert.ToBase64String(qrImage.ExportBytes());
string qrDataUri = $"data:image/png;base64,{qrBase64}";
// Populate HTML ticket template with attendee data and embedded QR code
string ticketHtml = $@"
<div style='font-family:sans-serif; border:2px solid #1a1a2e; padding:32px; max-width:600px;'>
<img src='/assets/event-logo.png' height='48' alt='Event Logo'/>
<h1 style='color:#1a1a2e;'>{attendee.FullName}</h1>
<p><strong>Ticket Type:</strong> {attendee.TicketType}</p>
<p><strong>Session:</strong> {attendee.AssignedSession}</p>
<p><strong>Seat:</strong> {attendee.SeatNumber} | <strong>ID:</strong> {attendee.TicketId}</p>
<img src='{qrDataUri}' width='160' height='160' alt='Entry QR Code'/>
<p style='font-size:11px; color:#666;'>Scan at entry. One use only.</p>
</div>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A5;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
PdfDocument ticket = renderer.RenderHtmlAsPdf(ticketHtml);
using IronQr;
using IronPdf;
// Generate QR code encoding the attendee's check-in URL
var qrCode = QrWriter.Write($"https://event.example.com/checkin/{attendee.TicketId}");
var qrImage = qrCode.Save();
// Convert to base64 for HTML embedding
string qrBase64 = Convert.ToBase64String(qrImage.ExportBytes());
string qrDataUri = $"data:image/png;base64,{qrBase64}";
// Populate HTML ticket template with attendee data and embedded QR code
string ticketHtml = $@"
<div style='font-family:sans-serif; border:2px solid #1a1a2e; padding:32px; max-width:600px;'>
<img src='/assets/event-logo.png' height='48' alt='Event Logo'/>
<h1 style='color:#1a1a2e;'>{attendee.FullName}</h1>
<p><strong>Ticket Type:</strong> {attendee.TicketType}</p>
<p><strong>Session:</strong> {attendee.AssignedSession}</p>
<p><strong>Seat:</strong> {attendee.SeatNumber} | <strong>ID:</strong> {attendee.TicketId}</p>
<img src='{qrDataUri}' width='160' height='160' alt='Entry QR Code'/>
<p style='font-size:11px; color:#666;'>Scan at entry. One use only.</p>
</div>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A5;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
PdfDocument ticket = renderer.RenderHtmlAsPdf(ticketHtml);
Imports IronQr
Imports IronPdf
' Generate QR code encoding the attendee's check-in URL
Dim qrCode = QrWriter.Write($"https://event.example.com/checkin/{attendee.TicketId}")
Dim qrImage = qrCode.Save()
' Convert to base64 for HTML embedding
Dim qrBase64 As String = Convert.ToBase64String(qrImage.ExportBytes())
Dim qrDataUri As String = $"data:image/png;base64,{qrBase64}"
' Populate HTML ticket template with attendee data and embedded QR code
Dim ticketHtml As String = $"
<div style='font-family:sans-serif; border:2px solid #1a1a2e; padding:32px; max-width:600px;'>
<img src='/assets/event-logo.png' height='48' alt='Event Logo'/>
<h1 style='color:#1a1a2e;'>{attendee.FullName}</h1>
<p><strong>Ticket Type:</strong> {attendee.TicketType}</p>
<p><strong>Session:</strong> {attendee.AssignedSession}</p>
<p><strong>Seat:</strong> {attendee.SeatNumber} | <strong>ID:</strong> {attendee.TicketId}</p>
<img src='{qrDataUri}' width='160' height='160' alt='Entry QR Code'/>
<p style='font-size:11px; color:#666;'>Scan at entry. One use only.</p>
</div>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A5
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
Dim ticket As PdfDocument = renderer.RenderHtmlAsPdf(ticketHtml)
Örnek Çıktı
Base64 veri URI'si, QR görüntüsünü doğrudan HTML'ye gömer, böylece PDF içeriği, uygulamanın nerede dağıtıldığına bakılmaksızın doğru bir şekilde render edilir, render zamanında bir dosya yolu veya CDN'nin ulaşılabilirliğine bağımlılık yok.
3. PDF Belgesi E-posta ile Gönderilir ve Portal İndirimi için Saklanır
Render edilmiş PdfDocument, bir MemoryStream'e doğrudan e-posta eki olarak aktarılır ve portal erişimi ve yerinde yeniden basım için bir blob depolama alanına yedeklenir:
using System.Net.Mail;
using System.IO;
var pdfBytes = ticket.BinaryData;
// Store for portal download and on-site reprint
await _blobStorage.UploadAsync(
$"tickets/{attendee.TicketId}.pdf",
new BinaryData(pdfBytes)
);
// Email ticket to attendee
using var stream = new MemoryStream(pdfBytes);
using var attachment = new Attachment(stream,
$"Ticket-{attendee.TicketId}.pdf", "application/pdf");
var message = new MailMessage("tickets@yourevent.com", attendee.Email)
{
Subject = $"Your Ticket — {eventName}",
Body = $"Hi {attendee.FirstName}, your ticket is attached. See you there."
};
message.Attachments.Add(attachment);
using var smtp = new SmtpClient("smtp.yourprovider.com");
await smtp.SendMailAsync(message);
using System.Net.Mail;
using System.IO;
var pdfBytes = ticket.BinaryData;
// Store for portal download and on-site reprint
await _blobStorage.UploadAsync(
$"tickets/{attendee.TicketId}.pdf",
new BinaryData(pdfBytes)
);
// Email ticket to attendee
using var stream = new MemoryStream(pdfBytes);
using var attachment = new Attachment(stream,
$"Ticket-{attendee.TicketId}.pdf", "application/pdf");
var message = new MailMessage("tickets@yourevent.com", attendee.Email)
{
Subject = $"Your Ticket — {eventName}",
Body = $"Hi {attendee.FirstName}, your ticket is attached. See you there."
};
message.Attachments.Add(attachment);
using var smtp = new SmtpClient("smtp.yourprovider.com");
await smtp.SendMailAsync(message);
Imports System.Net.Mail
Imports System.IO
Imports System.Threading.Tasks
Dim pdfBytes = ticket.BinaryData
' Store for portal download and on-site reprint
Await _blobStorage.UploadAsync(
$"tickets/{attendee.TicketId}.pdf",
New BinaryData(pdfBytes)
)
' Email ticket to attendee
Using stream As New MemoryStream(pdfBytes)
Using attachment As New Attachment(stream, $"Ticket-{attendee.TicketId}.pdf", "application/pdf")
Dim message As New MailMessage("tickets@yourevent.com", attendee.Email) With {
.Subject = $"Your Ticket — {eventName}",
.Body = $"Hi {attendee.FirstName}, your ticket is attached. See you there."
}
message.Attachments.Add(attachment)
Using smtp As New SmtpClient("smtp.yourprovider.com")
Await smtp.SendMailAsync(message)
End Using
End Using
End Using
Ekli bilet örnek e-posta
Binlerce katılımcı olan etkinliklerde, iş, katılımcı listesini bölümlere ayırır ve paralel olarak toplu işler, her bir iş parçacığı için bir ChromePdfRenderer örneği çalıştırır, etkinlik tarihinden çok önce çalıştırmayı tamamlamak için.
Gerçek Dünya Faydaları
Ölçekleme. IronPDF, her bileti milisaniyeler içinde render eder. Paralel hale getirilmiş ve mevcut çekirdekler arasında bölünmüş 3.000 katılımcılık bir toplu çalıştırma, dakikalar içinde tamamlanır, saatler içinde değil ve etkinlikten bir gün önce panik içinde değil.
Marka tutarlılığı. Her bilet ve etiket aynı etkinlik markası, sponsor logoları ve tipografiyi taşır. VIP geçişleri, konuşmacı etiketleri ve genel giriş biletleri, çünkü aynı tasarım sisteminden geliyormuş gibi görünür, takımın bakımını yaptığı aynı HTML içerik ve CSS ile.
Sahtekarlık önleme. Her QR kodu, belirli bir kayıt kaydına bağlı benzersiz bir bilet ID'si kodlar. Kapı personeli taradığında, sistem veritabanıyla doğrular. Çoğaltılmış bir PDF, sistemin hemen işaretlediği bir kopya tarama üretir.
Hızlı check-in. Bir QR kodunu taramak ve bir kayıt kaydına karşı doğrulamak bir saniyeden az sürer. İsim aramaları yok, basılı listeler yok, yavaş manuel doğrulama yok. Giriş kuyrukları daha hızlı hareket eder ve personel, her girişi manuel olarak yönetmek yerine istisnaları yönetebilir.
Şablon esnekliği. Farklı etkinlik rolleri farklı düzenler, lounge erişim detaylarıyla VIP geçişleri, program vurguları ile konuşmacı etiketleri, sahne arkası göstergeleri ile personel kimlik bilgileri alır. Tek bir oluşturma boru hattı, birden çok HTML şablonu, tek bir dağıtım.
Bilet başına maliyet yok. Boru hattı, işlem içinde çalışır. Bir biletleme satıcısına yapılan hiçbir API çağrısı yok, kullanımı izleme yok, ve kayıt sayısıyla birlikte büyüyen belgeler bazında ücret yok.
Kapanış
Bilet ve etiket oluşturma, mevcut platformlar tarafından çözüldü görünen sorunlardan biridir, ancak etkinliğin gerçek özelleştirme gereksinimleri olduğunda, büyük bir katılımcı listesi veya platformun desteklemediği entegrasyon ihtiyaçları olduğunda. .NET uygulaması içinde boru hattı oluşturmak, ekibe düzen, veri, teslimat zamanlaması ve maliyet üzerinde tam kontrol sağlar.
IronPDF, C# içinde PDF üretiminin tam yaşam döngüsünü yönetir, HTML şablonlarının piksel mükemmel bir şekilde render edilmesi, bunların kaydedilmesi, dijital imzaların ve şifrelemenin uygulanması, belgelerin akışı ve manipülasyonu gibi önemli özellikler sunar, tümü ironpdf.com adresinden. Eğer bir kayıt sistemi oluşturuyor veya harici bir biletleme bağımlılığını değiştiriyorsanız, tam kütüphane, kendi etkinlik verilerinize karşı test etmek için mevcuttur, IronPDF'yi ücretsiz deneme ile ücretsiz deneyebilirsiniz.




