7

我正在使用 PDFsharp lib 将图像转换为 pdf。我需要设置页边距和页面大小,所以我从这个论坛得到了一个技巧来设置页面大小和页边距。从这里我得到了我使用的代码,但在两个区域出现错误。这是我得到的代码。

page = document.AddPage();
//page.Size = PdfSharp.PageSize.A4;
XSize size = PageSizeConverter.ToSize(PdfSharp.PageSize.A4);
if(page.Orientation == PageOrientation.Landscape)
{
   page.Width  = size.Height;
   page.Height = size.Width;
}
else
{
   page.Width  = size.Width;
   page.Height = size.Height;
}

// default unit in points 1 inch = 72 points
page.TrimMargins.Top = 5;
page.TrimMargins.Right = 5;
page.TrimMargins.Bottom = 5;
page.TrimMargins.Left = 5;

我收到这条线的错误

XSize size = PageSizeConverter.ToSize(PdfSharp.PageSize.A4);

所以我需要将其更改为

System.Drawing.Size size = PageSizeConverter.ToSize(PdfSharp.PageSize.A4);

现在我的程序编译了,但是当我设置边距时,我收到一个名为 PdfSharp 的错误,它不包含 TrimMargins 的定义

这些下面的行不能编译为设置边距。

    pdfPage.TrimMargins.Top = 5;
    pdfPage.TrimMargins.Right = 5;
    pdfPage.TrimMargins.Bottom = 5;
    pdfPage.TrimMargins.Left = 5;

我正在使用 pdf sharp 库版本1.0.898.0

所以指导我如何设置边距。

这是我从图像文件生成pdf的完整代码

public static string GeneratePdfFromImage(string source)
        {
            string destinaton = source.Replace("gif", "pdf");
            PdfDocument doc = new PdfDocument();
            PdfPage pdfPage = new PdfPage();
            System.Drawing.Size size = PageSizeConverter.ToSize(PdfSharp.PageSize.A4);
            pdfPage.Orientation = PageOrientation.Portrait;

            pdfPage.Width = size.Width;
            pdfPage.Height = size.Height;
            pdfPage.TrimMargins.Top = 5;
            pdfPage.TrimMargins.Right = 5;
            pdfPage.TrimMargins.Bottom = 5;
            pdfPage.TrimMargins.Left = 5;

            doc.Pages.Add(pdfPage);

            XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[0]);
            XImage img = XImage.FromFile(source);

            try
            {
                xgr.DrawImage(img, 0, 0);
                doc.Save(destinaton);
                doc.Close();
            }
            catch (Exception ex)
            {
                destinaton = "";
            }

            return destinaton;
        }
4

1 回答 1

6

您不能使用 PDFsharp 设置边距 - 绘制项目时由您在页面上保留边距。

您复制的代码来自 MigraDoc。MigraDoc 包含在 PDFsharp 中,但在更高级别上工作,您不处理页面,而是处理部分,在这里您可以设置边距。

有关详细信息,请参阅 PDFsharp 和 MigraDoc 的网站:
http
: //pdfsharp.net/ 还有一个 PDFsharp 示例显示如何设置页面大小。

使用 PDFsharp 时,您可以在页面上的任何位置绘制图像,还可以指定图像的大小。

于 2013-04-12T12:47:17.383 回答