private static void FillZauberkundiger(Zauberkundiger zauberkundiger, PdfAcroForm form) { var fields = form.Fields; FillBase(fields, zauberkundiger); fields["Klasse"].Value = new PdfString("Zauberkundiger"); fields["BasisZauberwurf"].Value = new PdfString(zauberkundiger.Zauberstufe.ToString()); //Sternzeichen muss noch gesetzt werden. var i = 0; foreach (var zauber in zauberkundiger.Zauberbuch) { if (i < 8) { i++; fields[$"Zauber{i}"].Value = new PdfString($"{zauber.Name} (S. {zauber.Seite})"); } fields[$"Name{i}"].Value = new PdfString($"{zauber.Name}"); fields[$"Seite{i}"].Value = new PdfString($"{zauber.Seite}"); fields[$"LaunenDerMagie{i}"].Value = new PdfString($"{string.Join(", ", zauber.LaunenDerMagie)}"); fields[$"Manifestation{i}"].Value = new PdfString($"{zauber.Manifestation.Beschreibung}"); fields[$"Beschreibung{i}"].Value = new PdfString($"{zauber.Beschreibung}"); } }
public void ErzeugeZauberkundigerBogenTest() { var zauberkundiger = new Zauberkundiger(1, 1, 1, Gesinnung.Rechtschaffen); using var zauberkundigerPdf = PdfCreator.ErzeugeZauberkundigerBogen(zauberkundiger); using var f = File.Create("zauberer_test.pdf"); zauberkundigerPdf.CopyTo(f); f.Flush(); }
public static MemoryStream ErzeugeZauberkundigerBogen(Zauberkundiger zauberkundiger) { var assembly = typeof(PdfCreator).Assembly; using var zauberkundigerBogen = assembly.GetManifestResourceStream("DccCharCreator.pdf.Resources.DCC_Zauberer_ausfüllbar.pdf"); using var pdf = PdfReader.Open(zauberkundigerBogen); SetNeedAppearances(pdf); FillZauberkundiger(zauberkundiger, pdf.AcroForm); var leereSeiten = 4 - (zauberkundiger.Zauberbuch.Count / 4); for (var i = 0; i < leereSeiten; i++) { var position = pdf.Pages.Count - 1; var page = pdf.Pages[position]; PdfDictionary resource = page.Elements.GetDictionary("/Resources"); if (resource != null) { PdfDictionary objects = resource.Elements.GetDictionary("/XObject"); if (objects != null) { foreach (string itemKey in objects.Elements.Keys) { PdfItem item = objects.Elements[itemKey]; PdfReference reference = item as PdfReference; if (reference != null) { PdfDictionary xObject = reference.Value as PdfDictionary; if (xObject != null && xObject.Elements.GetString("/Subtype") == "/Image") { pdf.Internals.RemoveObject((PdfObject)reference.Value); // remove image from internal document table objects.Elements.Remove(itemKey); // remove image from page resource } } } } } pdf.Pages.RemoveAt(position); } var stream = new MemoryStream(); pdf.Save(stream, false); pdf.Dispose(); return(stream); }
public IActionResult Pdf(int seed, int character, Klasse klasse, int stufe, Gesinnung gesinnung) { MemoryStream ms = null; switch (klasse) { case Klasse.Dieb: var dieb = new Dieb(seed, character, stufe, gesinnung); ms = PdfCreator.ErzeugeDiebBogen(dieb); break; case Klasse.Elf: var elf = new Elf(seed, character, stufe, gesinnung); ms = PdfCreator.ErzeugeElfBogen(elf); break; case Klasse.Halbling: var halbling = new Halbling(seed, character, stufe, gesinnung); ms = PdfCreator.ErzeugeHalblingBogen(halbling); break; case Klasse.Kleriker: var kleriker = new Kleriker(seed, character, stufe, gesinnung); ms = PdfCreator.ErzeugeKlerikerBogen(kleriker); break; case Klasse.Krieger: var krieger = new Krieger(seed, character, stufe, gesinnung); ms = PdfCreator.ErzeugeKriegerBogen(krieger); break; case Klasse.Zauberkundiger: var zauberkundiger = new Zauberkundiger(seed, character, stufe, gesinnung); ms = PdfCreator.ErzeugeZauberkundigerBogen(zauberkundiger); break; case Klasse.Zwerg: var zwerg = new Zwerg(seed, character, stufe, gesinnung); ms = PdfCreator.ErzeugeZwergBogen(zwerg); break; } ; return(File(ms, "application/pdf", $"Charakterbogen_{klasse}_{seed}_{character}.pdf")); }