OSDN Git Service

印刷時に行がはみ出た場合、二ページ目がうまく印刷できないことがあった
authortest <test@yahoo.co.jp>
Tue, 22 Dec 2020 11:58:14 +0000 (20:58 +0900)
committertest <test@yahoo.co.jp>
Tue, 22 Dec 2020 11:58:14 +0000 (20:58 +0900)
Core/PrintableView.cs
Core/ViewBase.cs
UWP/FooEditEngine.UWP/Print/DocumentSource.cs
UWP/Test/MainPage.xaml.cs

index 5d808cc..3bc167e 100644 (file)
@@ -54,7 +54,8 @@ namespace FooEditEngine
             }
 
             //レイアウト行を印刷する
-            Rectangle contentArea = new Rectangle(pos.X, pos.Y, this.PageBound.Width, this.render.TextArea.Height);
+            double alignedPage = (int)(this.render.TextArea.Height / this.render.emSize.Height) * this.render.emSize.Height;
+            Rectangle contentArea = new Rectangle(pos.X, pos.Y, this.PageBound.Width, alignedPage);
             this.render.BeginClipRect(contentArea);
 
             Size lineNumberSize = new Size(this.render.LineNemberWidth, this.render.TextArea.Height);
index fe037cd..4fad84e 100644 (file)
@@ -85,9 +85,9 @@ namespace FooEditEngine
         public ViewBase(Document doc, ITextRender r,Padding padding)
         {
             this._Padding = padding;
+            this.render = r;
             this.Document = doc;
             this._LayoutLines.SpilitString = new SpilitStringEventHandler(LayoutLines_SpilitStringByChar);
-            this.render = r;
             this.render.ChangedRenderResource += new ChangedRenderResourceEventHandler(render_ChangedRenderResource);
             this.render.ChangedRightToLeft += render_ChangedRightToLeft;
             this.SrcChanged += new EventHandler((s, e) => { });
index ca23082..fb905b5 100644 (file)
@@ -226,6 +226,18 @@ namespace FooEditEngine.UWP
             }
         }
 
+        public LineBreakMethod LineBreak
+        {
+            get;
+            set;
+        }
+
+        public int LineBreakCount
+        {
+            get;
+            set;
+        }
+
         [DisplayPrintOptionResourceID("SyntaxHilight")]
         public SyntaxHilightApplibility EnableHilight
         {
@@ -264,6 +276,8 @@ namespace FooEditEngine.UWP
             this.doc.DrawLineNumber = this.ShowLineNumber == LineNumberVisiblity.Visible;
             this.doc.LayoutLines.Hilighter = this.EnableHilight == SyntaxHilightApplibility.Apply ? this.hilighter : null;
             PrintableView view = this.factory.CreateView(this.doc, pagedesc, render, this.Header, this.Fotter);
+            this.doc.LineBreak = this.LineBreak;
+            this.doc.LineBreakCharCount = this.LineBreakCount;
 
             bool result = false;
             int currentPage = 0;
@@ -302,6 +316,8 @@ namespace FooEditEngine.UWP
             this.doc.DrawLineNumber = this.ShowLineNumber == LineNumberVisiblity.Visible;
             this.doc.LayoutLines.Hilighter = this.EnableHilight == SyntaxHilightApplibility.Apply ? this.hilighter : null;
             this.previewView = this.factory.CreateView(this.doc, pagedesc, this.previewRender, this.Header, this.Fotter);
+            this.doc.LineBreak = this.LineBreak;
+            this.doc.LineBreakCharCount = this.LineBreakCount;
 
             int maxPage = 1;
             while (!this.previewView.TryPageDown())
index ffdd845..7b8e645 100644 (file)
@@ -102,6 +102,8 @@ namespace Test
                 source.Literal = new Windows.UI.Color() { R = 128, A = 255, B = 128, G = 0 };
                 source.Comment = new Windows.UI.Color() { R = 255, A = 255, B = 0, G = 0 };
                 source.Url = new Windows.UI.Color() { R = 0, A = 255, B = 255, G = 0 };
+                source.LineBreak = doc.LineBreak;
+                source.LineBreakCount = doc.LineBreakCharCount;
 
                 PrintTask task = null;
                 task = args.Request.CreatePrintTask("test", (e) =>