Esempio n. 1
0
 private void LayoutStaticContent(Flow.Flow flow, Region region,
                                  AreaContainer area)
 {
     if (flow is StaticContent)
     {
         ((StaticContent)flow).Layout(area, region);
     }
     else
     {
         FonetDriver.ActiveDriver.FireFonetError(region.GetName()
             + " only supports static-content flows currently. "
             + "Cannot use flow named '"
             + flow.GetFlowName() + "'");
     }
 }
Esempio n. 2
0
        internal void Parse(PixelFarm.Drawing.Pdf.MyPdfDocument doc)
        {
            //TEST CODE ONLY ***

            var root_maker = Root.GetMaker();
            //
            var layout_master_set_maker = LayoutMasterSet.GetMaker();
            var simplpe_page_master     = SimplePageMaster.GetMaker();
            var region_body             = RegionBody.GetMaker();
            var region_before           = RegionBefore.GetMaker();
            var region_after            = RegionAfter.GetMaker();

            //
            var pageSeq_maker = PageSequence.GetMaker();
            var flow_maker    = Flow.Flow.GetMaker();
            var block_maker   = Flow.Block.GetMaker();


            string nsuri = "http://www.w3.org/1999/XSL/Format";

            streamRenderer.StartRenderer();

            //1. root
            Root rootObj = CreateAndAppend <Root>(null,
                                                  root_maker,
                                                  nsuri,
                                                  "root",
                                                  CreateAttributes());
            //2.
            LayoutMasterSet masterSet = CreateAndAppend(rootObj, layout_master_set_maker, nsuri,
                                                        "layout-master-set",
                                                        CreateAttributes());
            {
                SimplePageMaster simpleMaster = CreateAndAppend(
                    masterSet, simplpe_page_master, nsuri,
                    "simple-page-master",
                    CreateAttributes(
                        new AttrKeyValue("master-name", "simple"),
                        new AttrKeyValue("page-height", "29.7cm"),
                        new AttrKeyValue("margin-top", "1cm"),
                        new AttrKeyValue("margin-bottom", "2cm"),
                        new AttrKeyValue("margin-left", "2.5cm"),
                        new AttrKeyValue("margin-right", "2.5cm")
                        ));
                RegionBody rgnBody = CreateAndAppend(simpleMaster, region_body, nsuri, "region-body",
                                                     CreateAttributes(new AttrKeyValue("margin-top", "3cm")));
                RegionBefore rgnBefore = CreateAndAppend(simpleMaster, region_before, nsuri, "region-before",
                                                         CreateAttributes(new AttrKeyValue("extent", "3cm")));
                RegionAfter rgnAfter = CreateAndAppend(simpleMaster, region_after, nsuri, "region-after",
                                                       CreateAttributes(new AttrKeyValue("extent", "1.5cm")));
                simpleMaster.End();
            }

            List <PixelFarm.Drawing.Pdf.MyPdfPage> pages = doc.Pages;
            int page_count = pages.Count;

            for (int i = 0; i < page_count; ++i)
            {
                PixelFarm.Drawing.Pdf.MyPdfPage   p      = pages[i];
                PixelFarm.Drawing.Pdf.MyPdfCanvas canvas = p.Canvas;

                PageSequence page_seq = CreateAndAppend(rootObj, pageSeq_maker, nsuri, "page-sequence",
                                                        CreateAttributes(new AttrKeyValue("master-reference", "simple")));

                Flow.Flow flow_obj = CreateAndAppend(page_seq, flow_maker, nsuri, "flow",
                                                     CreateAttributes(new AttrKeyValue("flow-name", "xsl-region-body")));

                Flow.Block block_obj = CreateAndAppend(
                    flow_obj, block_maker, nsuri, "block",
                    CreateAttributes(new AttrKeyValue("font-size", "18pt"),
                                     new AttrKeyValue("color", "black"),
                                     new AttrKeyValue("text-align", "center")
                                     ));

                //very simple
                List <PixelFarm.Drawing.Pdf.MyPdfTextBlock> textElems = canvas.TextElems;
                //first sample ,

                int elem_count = textElems.Count;
                for (int n = 0; n < elem_count; ++n)
                {
                    PixelFarm.Drawing.Pdf.MyPdfTextBlock textBlock = textElems[n];
                    string txt = textBlock.Text;
                    //
                    char[] charBuff = txt.ToCharArray();
                    block_obj.AddCharacters(charBuff, 0, charBuff.Length);
                }

                streamRenderer.Render(page_seq);
            }
            FonetDriver.ActiveDriver.FireFonetInfo("Parsing of document complete, stopping renderer");
            streamRenderer.StopRenderer();
        }
Esempio n. 3
0
 public void AddFlow(Flow.Flow flow)
 {
     if (_flowMap.ContainsKey(flow.GetFlowName()))
     {
         throw new FonetException("flow-names must be unique within an fo:page-sequence");
     }
     if (!this.layoutMasterSet.regionNameExists(flow.GetFlowName()))
     {
         FonetDriver.ActiveDriver.FireFonetError(
             "region-name '" + flow.GetFlowName() + "' doesn't exist in the layout-master-set.");
     }
     _flowMap.Add(flow.GetFlowName(), flow);
     IsFlowSet = true;
 }