private Stream CreateWaiverStream(WaiverModel waiver) { var fullName = $"{waiver.FirstName} {waiver.LastName}"; var hasAllergies = !string.IsNullOrWhiteSpace(waiver.Allergies); var hasMedications = !string.IsNullOrWhiteSpace(waiver.Medications); var timeZoneInfo = TZConvert.GetTimeZoneInfo(DefaultTimeZone); var now = DateTimeOffset.UtcNow.ToOffset(timeZoneInfo.BaseUtcOffset); var addressAndCity = $"{waiver.StreetAddress}, {waiver.City}"; const int signatureWidth = 155; using (var doc = new PdfDocument()) { doc.LoadFromFile(Path.Join(_hostingEnvironment.WebRootPath, WaiversDirectory, WaiverFileName)); var form = (PdfFormWidget)doc.Form; var page = doc.Pages[0]; ((PdfTextBoxFieldWidget)form.FieldsWidget["FullName1"]).Text = fullName; ((PdfTextBoxFieldWidget)form.FieldsWidget["FullName2"]).Text = fullName; ((PdfTextBoxFieldWidget)form.FieldsWidget["FullName3"]).Text = fullName; ((PdfTextBoxFieldWidget)form.FieldsWidget["Address"]).Text = addressAndCity; ((PdfTextBoxFieldWidget)form.FieldsWidget["Allergies"]).Text = waiver.Allergies ?? string.Empty; ((PdfTextBoxFieldWidget)form.FieldsWidget["Country"]).Text = waiver.Country; ((PdfTextBoxFieldWidget)form.FieldsWidget["Email"]).Text = waiver.Email; ((PdfTextBoxFieldWidget)form.FieldsWidget["Medications"]).Text = waiver.Medications ?? string.Empty; ((PdfTextBoxFieldWidget)form.FieldsWidget["Phone"]).Text = waiver.Phone; ((PdfTextBoxFieldWidget)form.FieldsWidget["Province"]).Text = waiver.Province; ((PdfTextBoxFieldWidget)form.FieldsWidget["CertificationNumber"]).Text = waiver.CertificationNumber; ((PdfTextBoxFieldWidget)form.FieldsWidget["PostalCode"]).Text = waiver.PostalCode; ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Angina"]).Checked = waiver.Angina; ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Asthma"]).Checked = waiver.Asthma; ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Bronchitis"]).Checked = waiver.Bronchitis; ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Diabetes"]).Checked = waiver.Diabetes; ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Emphysema"]).Checked = waiver.Emphysema; ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Seizures"]).Checked = waiver.Seizures; ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["Stroke"]).Checked = waiver.Stroke; ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["HeartAttack"]).Checked = waiver.HeartAttack; ((PdfCheckBoxWidgetFieldWidget)form.FieldsWidget["HighBloodPressure"]).Checked = waiver.HighBloodPressure; ((PdfRadioButtonListFieldWidget)form.FieldsWidget["HasAllergies"]).SelectedValue = hasAllergies ? "Yes" : "No"; ((PdfRadioButtonListFieldWidget)form.FieldsWidget["HasMedications"]).SelectedValue = hasMedications ? "Yes" : "No"; ((PdfTextBoxFieldWidget)form.FieldsWidget["Date"]).Text = string.Format("{0:MMMM d}{1}, {0:yyyy}", now, GetOrdinal(now.Day)); foreach (var field in form.FieldsWidget.OfType <PdfTextBoxFieldWidget>()) { field.Flatten = true; } foreach (var field in form.FieldsWidget.OfType <PdfCheckBoxWidgetFieldWidget>()) { field.Flatten = true; } foreach (var field in form.FieldsWidget.OfType <PdfRadioButtonListFieldWidget>()) { field.ReadOnly = true; } var signature = CreatePdfImage(waiver.Signature); var ratio = signatureWidth / (float)signature.Width; page.Canvas.DrawImage(signature, 68, 667, signatureWidth, ratio * signature.Height); var memoryStream = new MemoryStream(); doc.SaveToStream(memoryStream); memoryStream.Position = 0; return(memoryStream); } }