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