Exemplo n.º 1
0
// ---------------------------------------------------------------------------
        public byte[] CreatePdf()
        {
            using (MemoryStream ms = new MemoryStream()) {
                using (document = new Document(PageSize.A5)) {
                    // step 2
                    writer = PdfWriter.GetInstance(document, ms);
                    writer.SetTagged();
                    // step 3
                    document.Open();
                    // step 4
                    PdfStructureTreeRoot root = writer.StructureTreeRoot;
                    root.MapRole(new PdfName("chapter"), PdfName.SECT);
                    root.MapRole(new PdfName("title"), PdfName.H);
                    root.MapRole(new PdfName("para"), PdfName.P);
                    top = new PdfStructureElement(
                        root, new PdfName("chapter")
                        );

                    canvas = writer.DirectContent;
                    column = new ColumnText(canvas);
                    column.SetSimpleColumn(36, 36, 384, 569);
                    font = new Font(
                        BaseFont.CreateFont(
                            "c:/windows/fonts/arial.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED
                            ), 12
                        );

                    using (XmlReader xr = XmlReader.Create(RESOURCE)) {
                        xr.MoveToContent();
                        while (xr.Read())
                        {
                            switch (xr.NodeType)
                            {
                            case XmlNodeType.Element:
                                StartElement(xr.Name);
                                break;

                            case XmlNodeType.Text:
                                buf.Append(Regex.Replace(xr.Value.Trim(), "\n", " "));
                                break;

                            case XmlNodeType.EndElement:
                                EndElement(xr.Name);
                                break;
                            }
                        }
                    }
                }
                return(ms.ToArray());
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Dispatches PrepareForSave to the objects that need it.
        /// </summary>
        internal override void PrepareForSave()
        {
            var pages = _pages;

            //We need the pages when saving but they are available only when CanModify yet when Pages is populated, the ability to modify may become possible even when !CanModify.
            //By using a local copy of PdfPages, we can switch to an unexposed copy during !CanModify.
            if (!Owner.CanModify && _pages == null)
            {
                pages = (PdfPages)Elements.GetValue(Keys.Pages, VCF.CreateIndirect);
                if (Owner.IsImported)
                {
                    pages.FlattenPageTree();
                }
            }

            // Prepare pages.
            if (pages != null)
            {
                pages.PrepareForSave();
            }

            // Create outline objects.
            if (_outline != null && _outline.Outlines.Count > 0)
            {
                if (Elements[Keys.PageMode] == null)
                {
                    PageMode = PdfPageMode.UseOutlines;
                }
                _outline.PrepareForSave();
            }

            // Clean up structure tree root.
            PdfStructureTreeRoot str = Elements.GetObject(Keys.StructTreeRoot) as PdfStructureTreeRoot;

            if (str != null)
            {
                str.PrepareForSave();
            }
        }
Exemplo n.º 3
0
// ---------------------------------------------------------------------------
        public void Write(Stream stream)
        {
            // step 1
            using (Document document = new Document()) {
                // step 2
                PdfWriter writer = PdfWriter.GetInstance(document, stream);
                writer.SetTagged();
                writer.UserProperties = true;
                // step 3
                document.Open();
                // step 4
                PdfStructureTreeRoot tree = writer.StructureTreeRoot;
                PdfStructureElement  top  = new PdfStructureElement(
                    tree, new PdfName("Directors")
                    );

                Dictionary <int, PdfStructureElement> directors =
                    new Dictionary <int, PdfStructureElement>();

                int                 id;
                Director            director;
                PdfStructureElement e;
                DbProviderFactory   dbp = AdoDB.Provider;
                using (var c = dbp.CreateConnection()) {
                    c.ConnectionString = AdoDB.CS;
                    using (DbCommand cmd = c.CreateCommand()) {
                        cmd.CommandText = SELECTDIRECTORS;
                        c.Open();
                        using (var r = cmd.ExecuteReader()) {
                            while (r.Read())
                            {
                                id       = Convert.ToInt32(r["id"]);
                                director = PojoFactory.GetDirector(r);
                                e        = new PdfStructureElement(top, new PdfName("director" + id));
                                PdfDictionary userproperties = new PdfDictionary();
                                userproperties.Put(PdfName.O, PdfName.USERPROPERTIES);
                                PdfArray      properties = new PdfArray();
                                PdfDictionary property1  = new PdfDictionary();
                                property1.Put(PdfName.N, new PdfString("Name"));
                                property1.Put(PdfName.V, new PdfString(director.Name));
                                properties.Add(property1);
                                PdfDictionary property2 = new PdfDictionary();
                                property2.Put(PdfName.N, new PdfString("Given name"));
                                property2.Put(PdfName.V, new PdfString(director.GivenName));
                                properties.Add(property2);
                                PdfDictionary property3 = new PdfDictionary();
                                property3.Put(PdfName.N, new PdfString("Posters"));
                                property3.Put(PdfName.V, new PdfNumber(Convert.ToInt32(r["c"])));
                                properties.Add(property3);
                                userproperties.Put(PdfName.P, properties);
                                e.Put(PdfName.A, userproperties);
                                directors.Add(id, e);
                            }
                        }
                    }
                }

                Dictionary <Movie, int> map = new Dictionary <Movie, int>();
                for (int i = 1; i < 8; i++)
                {
                    foreach (Movie movie in PojoFactory.GetMovies(i))
                    {
                        map.Add(movie, i);
                    }
                }

                PdfContentByte canvas = writer.DirectContent;
                Image          img;
                float          x        = 11.5f;
                float          y        = 769.7f;
                string         RESOURCE = Utility.ResourcePosters;
                foreach (var entry in map.Keys)
                {
                    img = Image.GetInstance(Path.Combine(RESOURCE, entry.Imdb + ".jpg"));
                    img.ScaleToFit(1000, 60);
                    img.SetAbsolutePosition(x + (45 - img.ScaledWidth) / 2, y);
                    canvas.BeginMarkedContentSequence(directors[map[entry]]);
                    canvas.AddImage(img);
                    canvas.EndMarkedContentSequence();
                    x += 48;
                    if (x > 578)
                    {
                        x  = 11.5f;
                        y -= 84.2f;
                    }
                }
            }
        }
Exemplo n.º 4
0
// ===========================================================================
        public void Write(Stream stream)
        {
            // step 1
            using (Document document = new Document()) {
                // step 2
                PdfWriter writer = PdfWriter.GetInstance(document, stream);
                writer.SetTagged();
                // step 3
                document.Open();
                // step 4
                PdfContentByte cb = writer.DirectContent;
                BaseFont       bf = BaseFont.CreateFont(
                    BaseFont.HELVETICA,
                    BaseFont.CP1252, BaseFont.NOT_EMBEDDED
                    );
                BaseFont bf2 = BaseFont.CreateFont(
                    "c:/windows/fonts/msgothic.ttc,1",
                    BaseFont.IDENTITY_H, BaseFont.EMBEDDED
                    );

                PdfStructureTreeRoot root = writer.StructureTreeRoot;
                PdfStructureElement  div  = new PdfStructureElement(
                    root, new PdfName("Div")
                    );
                PdfDictionary dict;

                cb.BeginMarkedContentSequence(div);

                cb.BeginText();
                cb.MoveText(36, 788);
                cb.SetFontAndSize(bf, 12);
                cb.SetLeading(18);
                cb.ShowText("These are some famous movies by Stanley Kubrick: ");
                dict = new PdfDictionary();
                dict.Put(PdfName.E, new PdfString("Doctor"));
                cb.BeginMarkedContentSequence(new PdfName("Span"), dict, true);
                cb.NewlineShowText("Dr.");
                cb.EndMarkedContentSequence();
                cb.ShowText(
                    " Strangelove or: How I Learned to Stop Worrying and Love the Bomb."
                    );
                dict = new PdfDictionary();
                dict.Put(PdfName.E, new PdfString("Eyes Wide Shut."));
                cb.BeginMarkedContentSequence(new PdfName("Span"), dict, true);
                cb.NewlineShowText("EWS");
                cb.EndMarkedContentSequence();
                cb.EndText();
                dict = new PdfDictionary();
                dict.Put(PdfName.LANG, new PdfString("en-us"));
                dict.Put(new PdfName("Alt"), new PdfString("2001: A Space Odyssey."));
                cb.BeginMarkedContentSequence(new PdfName("Span"), dict, true);
                Image img = Image.GetInstance(Path.Combine(
                                                  Utility.ResourcePosters, "0062622.jpg"
                                                  ));
                img.ScaleToFit(1000, 100);
                img.SetAbsolutePosition(36, 640);
                cb.AddImage(img);
                cb.EndMarkedContentSequence();

                cb.BeginText();
                cb.MoveText(36, 620);
                cb.SetFontAndSize(bf, 12);
                cb.ShowText("This is a movie by Akira Kurosawa: ");
                dict = new PdfDictionary();
                dict.Put(PdfName.ACTUALTEXT, new PdfString("Seven Samurai."));
                cb.BeginMarkedContentSequence(new PdfName("Span"), dict, true);
                cb.SetFontAndSize(bf2, 12);
                cb.ShowText("\u4e03\u4eba\u306e\u4f8d");
                cb.EndMarkedContentSequence();
                cb.EndText();

                cb.EndMarkedContentSequence();
            }
        }