PDFSharp - 第二页为空
PDFSharp - Second page is empty
出于某种原因,当我尝试创建包含多个页面的文档时,第一页没问题,但其他所有页面都是空白的。
public PdfDocument toPdf()
{
// Create new PDF document
PdfDocument document = new PdfDocument();
XGraphics gfx;
PdfPage page;
foreach (var p in pages)
{
// Create new page
page = document.AddPage();
page.Width = XUnit.FromMillimeter(width);
page.Height = XUnit.FromMillimeter(height);
gfx = XGraphics.FromPdfPage(page, XGraphicsUnit.Millimeter);
p.drawItems(gfx);
}
return document;
}
有什么线索吗?
尝试正确处理图形对象,如下所示:
public PdfDocument toPdf()
{
// Create new PDF document
PdfDocument document = new PdfDocument();
PdfPage page;
foreach (var p in pages)
{
// Create new page
page = document.AddPage();
page.Width = XUnit.FromMillimeter(width);
page.Height = XUnit.FromMillimeter(height);
using (var gfx = XGraphics.FromPdfPage(page, XGraphicsUnit.Millimeter))
{
p.drawItems(gfx);
}
}
return document;
}
作为一般规则:所有实现 IDisposable
的对象都必须通过调用 Dispose
来释放。 using
语句隐式执行此操作。
由于您要返回文档,调用者有责任处理该文档。
附带说明:有些人会告诉您 Dispose
将在 Finalizer
中调用,因此您不需要调用它。此参数无效,因为:
a) 并不是每个人都能正确实施 IDisposable
,并且
b) 典型的对象,尤其是图形对象和 IO 对象(例如文件锁),需要在以这种方式重新使用之前进行处理。
如果这没有帮助,请确保您没有空白页:-)
据我所知,当您设置非默认单位(在您的情况下为毫米)时,XGraphics
存在问题。
可能第二页不是空的,但内容在"viewport"之外。
如果我猜对了,那么第一页也不对。
在 PDFsharp 论坛上查看此案例:
http://forum.pdfsharp.net/viewtopic.php?p=9642#p9642
出于某种原因,当我尝试创建包含多个页面的文档时,第一页没问题,但其他所有页面都是空白的。
public PdfDocument toPdf()
{
// Create new PDF document
PdfDocument document = new PdfDocument();
XGraphics gfx;
PdfPage page;
foreach (var p in pages)
{
// Create new page
page = document.AddPage();
page.Width = XUnit.FromMillimeter(width);
page.Height = XUnit.FromMillimeter(height);
gfx = XGraphics.FromPdfPage(page, XGraphicsUnit.Millimeter);
p.drawItems(gfx);
}
return document;
}
有什么线索吗?
尝试正确处理图形对象,如下所示:
public PdfDocument toPdf()
{
// Create new PDF document
PdfDocument document = new PdfDocument();
PdfPage page;
foreach (var p in pages)
{
// Create new page
page = document.AddPage();
page.Width = XUnit.FromMillimeter(width);
page.Height = XUnit.FromMillimeter(height);
using (var gfx = XGraphics.FromPdfPage(page, XGraphicsUnit.Millimeter))
{
p.drawItems(gfx);
}
}
return document;
}
作为一般规则:所有实现 IDisposable
的对象都必须通过调用 Dispose
来释放。 using
语句隐式执行此操作。
由于您要返回文档,调用者有责任处理该文档。
附带说明:有些人会告诉您 Dispose
将在 Finalizer
中调用,因此您不需要调用它。此参数无效,因为:
a) 并不是每个人都能正确实施 IDisposable
,并且
b) 典型的对象,尤其是图形对象和 IO 对象(例如文件锁),需要在以这种方式重新使用之前进行处理。
如果这没有帮助,请确保您没有空白页:-)
据我所知,当您设置非默认单位(在您的情况下为毫米)时,XGraphics
存在问题。
可能第二页不是空的,但内容在"viewport"之外。
如果我猜对了,那么第一页也不对。
在 PDFsharp 论坛上查看此案例:
http://forum.pdfsharp.net/viewtopic.php?p=9642#p9642