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() + "'"); } }
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(); }
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; }