从WebView生成的PDF不包含所有内容

时间:2019-03-25 10:46:37

标签: c# xamarin xamarin.android pdf-generation

我有一个可正确显示HTML内容的Web视图。加载大量信息时,Web视图仍可正确显示,但是生成的PDF会停止添加内容,而只会添加空格。

如果在生成PDF之前滚动浏览Web视图,则PDF的后半部分将包含在文档中,而第一部分将被忽略,并导致空白。

view.Measure(
View.MeasureSpec.MakeMeasureSpec( ViewGroup.LayoutParams.WrapContent,MeasureSpecMode.Unspecified), 
 View.MeasureSpec.MakeMeasureSpec(ViewGroup.LayoutParams.WrapContent, MeasureSpecMode.Unspecified));
            view.Layout(0, 0, view.MeasuredWidth, view.MeasuredHeight);


            var printAttributesBuilder = new PrintAttributes.Builder();
            printAttributesBuilder.SetColorMode(PrintColorMode.Color);
            printAttributesBuilder.SetMediaSize(PrintAttributes.MediaSize.IsoA4);
            printAttributesBuilder.SetDuplexMode(DuplexMode.None);
            printAttributesBuilder.SetMinMargins(PrintAttributes.Margins.NoMargins);


            PdfDocument document = new PrintedPdfDocument(view.Context, printAttributesBuilder.Build());


            PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(view.MeasuredWidth, view.MeasuredHeight, 1).Create();


            PdfDocument.Page page = document.StartPage(pageInfo);


            view.Draw(page.Canvas);


            document.FinishPage(page);


            byte[] docBytes = null;


            using (MemoryStream memoryStream = new MemoryStream())
            {
                try
                {
                    document.WriteTo(memoryStream);


                    docBytes = memoryStream.ToArray();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }


            return docBytes;

还有

WebView.EnableSlowWholeDocumentDraw();

我认为PDF的大小是正确的,以某种方式只能停止添加内容。剩余的空白与缺少的内容所占用的空间大致相同。我尝试使用PrintManager,并基于相同的HTML生成了30页的PDF。 但是我不想使用PrintManager或任何其他库,我必须使发布的解决方案有效。

任何输入都会受到赞赏!

0 个答案:

没有答案