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}");
            }
        }
Exemple #2
0
        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"));
        }