我有一个可正确显示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或任何其他库,我必须使发布的解决方案有效。
任何输入都会受到赞赏!