Ejemplo n.º 1
0
        public Stream CreatePdf()
        {
            Startup();

            AddDescription();
            AddPurpose();
            AddContactOwner();
            AddResolution();
            AddCoverage();
            AddProcessHistory();
            AddMaintenance();
            AddDistribution();
            AddFeatureTypes();
            AddAttributes();
            AddLinks();

            WriteToColumns();


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

            cb.BeginMarkedContentSequence(div);
            cb.EndMarkedContentSequence();


            doc.Close();
            output.Flush();
            output.Position = 0;


            return(output);
        }
Ejemplo n.º 2
0
// ---------------------------------------------------------------------------
// replace [StructureParser|ContentParser].startElement() from Java example
        public void StartElement(string name)
        {
            switch (name)
            {
            case "chapter":
                break;

            default:
                current = new PdfStructureElement(top, new PdfName(name));
                canvas.BeginMarkedContentSequence(current);
                break;
            }
        }
Ejemplo n.º 3
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());
            }
        }
Ejemplo n.º 4
0
 protected override void CheckStructElem(PdfWriter writer, int key, Object obj1)
 {
     if (obj1 is PdfStructureElement)
     {
         PdfStructureElement structElem = (PdfStructureElement)obj1;
         PdfName             role       = structElem.StructureType;
         if (PdfName.FIGURE.Equals(role) || PdfName.FORMULA.Equals(role) || PdfName.FORM.Equals(role))
         {
             PdfObject o = structElem.Get(PdfName.ALT);
             if (o is PdfString && o.ToString().Length > 0)
             {
             }
             else
             {
                 throw new PdfAConformanceException(obj1, MessageLocalization.GetComposedMessage("alt.entry.should.specify.alternate.description.for.1.element", role.ToString()));
             }
         }
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.  The Parameter
        /// property is typically used to configure the page.</param>
        //protected override void OnNavigatedTo(NavigationEventArgs e)
        //{
        //}

        private async void GeneratePDF_Click(object sender, RoutedEventArgs e)
        {
            Stream   image1     = typeof(ImageInsertion).GetTypeInfo().Assembly.GetManifestResourceStream("Syncfusion.SampleBrowser.UWP.Pdf.Pdf.Assets.CustomTag.jpg");
            PdfColor blackColor = new PdfColor(System.Drawing.Color.FromArgb(255, 0, 0, 0));


            PdfFont fontnormal = new PdfStandardFont(PdfFontFamily.TimesRoman, 10);
            PdfFont fontTitle  = new PdfStandardFont(PdfFontFamily.TimesRoman, 22, PdfFontStyle.Bold);
            PdfFont fontHead   = new PdfStandardFont(PdfFontFamily.TimesRoman, 10, PdfFontStyle.Bold);
            PdfFont fontHead2  = new PdfStandardFont(PdfFontFamily.TimesRoman, 16, PdfFontStyle.Bold);

            #region content string
            string pdfChapter = "We�ll begin with a conceptual overview of a simple PDF document. This chapter is designed to be a brief orientation before diving in and creating a real document from scratch \r\n \r\n A PDF file can be divided into four parts: a header, body, cross-reference table, and trailer. The header marks the file as a PDF, the body defines the visible document, the cross-reference table lists the location of everything in the file, and the trailer provides instructions for how to start reading the file.";
            string header     = "The header is simply a PDF version number and an arbitrary sequence of binary data.The binary data prevents na�ve applications from processing the PDF as a text file. This would result in a corrupted file, since a PDF typically consists of both plain text and binary data (e.g., a binary font file can be directly embedded in a PDF).";
            string body       = "The page tree serves as the root of the document. In the simplest case, it is just a list of the pages in the document. Each page is defined as an independent entity with metadata (e.g., page dimensions) and a reference to its resources and content, which are defined separately. Together, the page tree and page objects create the �paper� that composes the document.\r\n \r\n  Resources are objects that are required to render a page. For example, a single font is typically used across several pages, so storing the font information in an external resource is much more efficient. A content object defines the text and graphics that actually show up on the page. Together, content objects and resources define theappearance of an individual page. \r\n \r\n  Finally, the document�s catalog tells applications where to start reading the document. Often, this is just a pointer to the root page tree.";
            string resource   = "The third object is a resource defining a font configuration. \r\n \r\n The /Font key contains a whole dictionary, opposed to the name/value pairs we�ve seen previously (e.g., /Type /Page). The font we configured is called /F0, and the font face we selected is /Times-Roman. The /Subtype is the format of the font file, and /Type1 refers to the PostScript type 1 file format. The specification defines 14 �standard� fonts that all PDF applications should support.";
            string resource2  = "Any of these values can be used for the /BaseFont in a /Font dictionary. Nonstandard fonts can be embedded in a PDF document, but it is not easy to do manually. We will put off custom fonts until we can use iTextSharp�s high-level framework.";
            string crossRef   = "After the header and the body comes the cross-reference table. It records the byte location of each object in the body of the file. This enables random-access of the document, so when rendering a page, only the objects required for that page are read from the file. This makes PDFs much faster than their PostScript predecessors, which had to read in the entire file before processing it.";
            string trailer    = "Finally, we come to the last component of a PDF document. The trailer tells applications how to start reading the file. At minimum, it contains three things: \r\n 1. A reference to the catalog which links to the root of the document. \r\n 2. The location of the cross-reference table. \r\n 3. The size of the cross-reference table. \r\n \r\n Since a trailer is all you need to begin processing a document, PDFs are typically read back-to-front: first, the end of the file is found, and then you read backwards until you arrive at the beginning of the trailer. After that, you should have all the information you need to load any page in the PDF.";
            #endregion


            //Create a new PDF document.

            PdfDocument document = new PdfDocument();

            document.DocumentInformation.Title = "CustomTag";

            #region page1
            //Add a page to the document.

            PdfPage page1 = document.Pages.Add();

            //Load the image from the disk.

            PdfBitmap image = new PdfBitmap(image1);

            PdfStructureElement imageElement = new PdfStructureElement(PdfTagType.Figure);
            imageElement.AlternateText = "PDF Succintly image";
            //adding tag to the PDF image
            image.PdfTag = imageElement;
            //Draw the image
            page1.Graphics.DrawImage(image, 0, 0, page1.GetClientSize().Width, page1.GetClientSize().Height - 20);

            #endregion


            #region page2

            PdfPage page2 = document.Pages.Add();



            PdfStructureElement hTextElement1     = new PdfStructureElement(PdfTagType.Heading);
            PdfStructureElement headingFirstLevel = new PdfStructureElement(PdfTagType.HeadingLevel1);
            headingFirstLevel.Parent = hTextElement1;

            PdfTextElement headerElement1 = new PdfTextElement("Chapter 1 Conceptual Overview", fontTitle, PdfBrushes.Black);
            headerElement1.PdfTag = headingFirstLevel;
            headerElement1.Draw(page2, new PointF(100, 0));

            //Initialize the structure element with tag type paragraph.

            PdfStructureElement textElement1 = new PdfStructureElement(PdfTagType.Paragraph);
            textElement1.Parent     = headingFirstLevel;
            textElement1.ActualText = pdfChapter;

            PdfTextElement element1 = new PdfTextElement(pdfChapter, fontnormal);
            element1.PdfTag = textElement1;
            element1.Brush  = new PdfSolidBrush(blackColor);
            element1.Draw(page2, new RectangleF(0, 40, page2.GetClientSize().Width, 70));


            PdfStructureElement hTextElement2 = new PdfStructureElement(PdfTagType.HeadingLevel2);
            hTextElement2.Parent     = hTextElement1;
            hTextElement2.ActualText = "Header";

            PdfTextElement headerElement2 = new PdfTextElement("Header", fontHead2, PdfBrushes.Black);
            headerElement2.PdfTag = hTextElement1;
            headerElement2.Draw(page2, new PointF(0, 140));

            PdfStructureElement textElement2 = new PdfStructureElement(PdfTagType.Paragraph);
            textElement2.Parent     = hTextElement2;
            textElement2.ActualText = header;

            PdfTextElement element2 = new PdfTextElement(header, fontnormal);
            element2.PdfTag = textElement2;
            element2.Brush  = new PdfSolidBrush(blackColor);
            element2.Draw(page2, new RectangleF(0, 170, page2.GetClientSize().Width, 40));


            PdfStructureElement hTextElement3 = new PdfStructureElement(PdfTagType.HeadingLevel2);
            hTextElement3.Parent     = hTextElement1;
            hTextElement3.ActualText = "Body";

            PdfTextElement headerElement3 = new PdfTextElement("Body", fontHead2, PdfBrushes.Black);
            headerElement3.PdfTag = hTextElement1;
            headerElement3.Draw(page2, new PointF(0, 210));

            PdfStructureElement textElement3 = new PdfStructureElement(PdfTagType.Paragraph);
            textElement3.Parent     = hTextElement3;
            textElement3.ActualText = body;

            PdfTextElement element3 = new PdfTextElement(body, fontnormal);
            element3.PdfTag = textElement3;
            element3.Brush  = new PdfSolidBrush(blackColor);
            element3.Draw(page2, new RectangleF(0, 240, page2.GetClientSize().Width, 120));

            PdfStructureElement hTextElement6 = new PdfStructureElement(PdfTagType.HeadingLevel2);
            hTextElement6.Parent     = hTextElement1;
            hTextElement6.ActualText = "Cross-Reference Table";

            PdfTextElement headerElement5 = new PdfTextElement("Cross-Reference Table", fontHead2, PdfBrushes.Black);
            headerElement5.PdfTag = hTextElement6;
            headerElement5.Draw(page2, new PointF(0, 380));

            PdfStructureElement textElement6 = new PdfStructureElement(PdfTagType.Paragraph);
            textElement6.Parent     = hTextElement6;
            textElement6.ActualText = crossRef;

            PdfTextElement element6 = new PdfTextElement(crossRef, fontnormal);
            element6.PdfTag = textElement6;
            element6.Brush  = new PdfSolidBrush(blackColor);
            element6.Draw(page2, new RectangleF(0, 410, page2.GetClientSize().Width, 50));

            PdfStructureElement hTextElement7 = new PdfStructureElement(PdfTagType.HeadingLevel2);
            hTextElement7.Parent     = hTextElement1;
            hTextElement7.ActualText = "Trailer";

            PdfTextElement headerElement6 = new PdfTextElement("Trailer", fontHead2, PdfBrushes.Black);
            headerElement6.PdfTag = hTextElement7;
            headerElement6.Draw(page2, new PointF(0, 470));

            PdfStructureElement textElement7 = new PdfStructureElement(PdfTagType.Paragraph);
            textElement7.Parent     = hTextElement7;
            textElement7.ActualText = trailer;

            PdfTextElement element7 = new PdfTextElement(trailer, fontnormal);
            element7.PdfTag = textElement7;
            element7.Brush  = new PdfSolidBrush(blackColor);
            element7.Draw(page2, new RectangleF(0, 500, page2.GetClientSize().Width, 110));



            #endregion

            #region page3

            PdfPage page3 = document.Pages.Add();

            PdfStructureElement hTextElement4 = new PdfStructureElement(PdfTagType.HeadingLevel2);
            hTextElement4.Parent     = hTextElement1;
            hTextElement4.ActualText = "Resource";

            PdfTextElement headerElement4 = new PdfTextElement("Resource", fontHead2, PdfBrushes.Black);
            headerElement4.PdfTag = hTextElement1;
            headerElement4.Draw(page3, new PointF(0, 0));

            PdfStructureElement textElement4 = new PdfStructureElement(PdfTagType.Paragraph);
            textElement4.Parent     = hTextElement4;
            textElement4.ActualText = resource;

            PdfTextElement element4 = new PdfTextElement(resource, fontnormal);
            element4.PdfTag = textElement4;
            element4.Brush  = new PdfSolidBrush(blackColor);
            element4.Draw(page3, new RectangleF(0, 40, page2.GetClientSize().Width, 70));

            //Create a new PdfGrid.
            PdfGrid pdfGrid = new PdfGrid();

            PdfStructureElement element = new PdfStructureElement(PdfTagType.Table);

            //Adding tag to PDF grid.
            pdfGrid.PdfTag = element;

            //Add three columns.
            pdfGrid.Columns.Add(3);

            PdfGridRow[] headerRow     = pdfGrid.Headers.Add(3);
            PdfGridRow   pdfGridHeader = pdfGrid.Headers[0];
            pdfGridHeader.PdfTag = new PdfStructureElement(PdfTagType.TableRow);

            PdfGridCellStyle headerStyle = new PdfGridCellStyle();
            headerStyle.Font = new PdfStandardFont(PdfFontFamily.TimesRoman, 13);
            pdfGridHeader.ApplyStyle(headerStyle);

            pdfGridHeader.Cells[0].Value  = "Times Roman Family";
            pdfGridHeader.Cells[0].PdfTag = new PdfStructureElement(PdfTagType.TableHeader);

            pdfGridHeader.Cells[1].Value  = "Helvetica Family";
            pdfGridHeader.Cells[1].PdfTag = new PdfStructureElement(PdfTagType.TableHeader);
            pdfGridHeader.Cells[2].Value  = "Courier Family";
            pdfGridHeader.Cells[2].PdfTag = new PdfStructureElement(PdfTagType.TableHeader);


            PdfGridRow pdfGridRow1 = pdfGrid.Rows.Add();
            pdfGridRow1.PdfTag = new PdfStructureElement(PdfTagType.TableRow);

            pdfGridRow1.Cells[0].Value = "Times roman";

            pdfGridRow1.Cells[1].Value = "Helvetica";

            pdfGridRow1.Cells[2].Value = "Courier";

            pdfGridRow1.Cells[0].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);
            pdfGridRow1.Cells[1].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);
            pdfGridRow1.Cells[2].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);


            PdfGridRow pdfGridRow2 = pdfGrid.Rows.Add();
            pdfGridRow2.PdfTag = new PdfStructureElement(PdfTagType.TableRow);

            pdfGridRow2.Cells[0].Value = "Times-Bold";

            pdfGridRow2.Cells[1].Value = "Helvetica-Bold";

            pdfGridRow2.Cells[2].Value = "Courier-Bold";

            pdfGridRow2.Cells[0].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);
            pdfGridRow2.Cells[1].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);
            pdfGridRow2.Cells[2].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);

            PdfGridRow pdfGridRow3 = pdfGrid.Rows.Add();

            pdfGridRow3.PdfTag = new PdfStructureElement(PdfTagType.TableRow);

            pdfGridRow3.Cells[0].Value = "Times-Italic";

            pdfGridRow3.Cells[1].Value = "Helvetica-Oblique";

            pdfGridRow3.Cells[2].Value = "Courier-Oblique";

            pdfGridRow3.Cells[0].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);
            pdfGridRow3.Cells[1].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);
            pdfGridRow3.Cells[2].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);

            PdfGridRow pdfGridRow4 = pdfGrid.Rows.Add();

            pdfGridRow4.PdfTag = new PdfStructureElement(PdfTagType.TableRow);

            pdfGridRow4.Cells[0].Value = "Times-BoldItalic";

            pdfGridRow4.Cells[1].Value = "Helvetica-BoldOblique";

            pdfGridRow4.Cells[2].Value = "Courier-BoldOblique";

            pdfGridRow4.Cells[0].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);
            pdfGridRow4.Cells[1].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);
            pdfGridRow4.Cells[2].PdfTag = new PdfStructureElement(PdfTagType.TableDataCell);



            pdfGrid.BeginCellLayout += PdfGrid_BeginCellLayout;
            pdfGrid.Draw(page3, new PointF(20, 130));

            page3.Graphics.DrawRectangle(PdfPens.Black, new RectangleF(20, 120, 490, 90));



            #endregion


            //Save the document and dispose it.
            MemoryStream stream = new MemoryStream();
            await document.SaveAsync(stream);

            document.Close(true);
            Save(stream, "CustomtagSample.pdf");
        }
Ejemplo n.º 6
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;
                    }
                }
            }
        }
Ejemplo n.º 7
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();
            }
        }