MigraDoc:我可以画出一条横过一个部分的线条吗?

时间:2018-02-26 14:35:20

标签: c# winforms pdfsharp migradoc

我正在使用PDFsharp / MigraDoc创建MigraDoc文档发票,以便使用热敏打印机进行打印。我基本上使用了MigraDoc,因为我只需要带有文本和图像的段落。现在的情况是,在某些情况下,我必须指出该法案是以交叉方式取消的。我担心我无法使用MigraDoc,而是使用PDFsharp。 我可以将它们混合并仍然将其打印为MigraDoc文档吗?

更新 显然,没有办法将PDFsharp文档翻译成MigraDoc文档。 因为我需要同时使用它们,所以我必须以另一种方式构建MigraDoc并将其转换为PDFsharp格式。一旦我完成了这项工作,我需要使用PDFSharp的库进行预览和打印,而目前我还无法使用它...

我在[设计]中添加了一个PagePreview(我正在使用WinForms),但我不知道如何使用de PDFSharp文档填充它...

代码段:

//Render a pdf
        PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(false);
        pdfRenderer.Document = document;
        pdfRenderer.RenderDocument();

        //Draw some lines
        var page = pdfRenderer.PdfDocument.Pages[0];

        PageInfo pageInfo = pdfRenderer.DocumentRenderer.FormattedDocument.GetPageInfo(1);
        page.Width = pageInfo.Width;
        page.Height = pageInfo.Height;
        page.Orientation = pageInfo.Orientation;

        XGraphics gfx = XGraphics.FromPdfPage(page);
        {
            gfx.DrawLine(XPens.Black, 15, page.Height / 2, page.Width -15, 2 * page.Height / 3);
            gfx.DrawLine(XPens.Black, page.Width - 15, page.Height / 2, 15, 2 * page.Height / 3);
        }

        string filename = "Invoice.pdf";
        pdfRenderer.PdfDocument.Save(filename);

        //this.pagePreview1 ...

文档 MigraDoc 文档。最后,我有正确形成的 Invoice.pdf 。现在,如何在PdfSharp.Forms.PagePreview 中显示此pdf我已添加到我的表单中?

之后,我该如何打印?

2 个答案:

答案 0 :(得分:1)

您只能将MigraDoc和PDFsharp混合用于创建PDF文件。

由于您创建了PDF发票,因此将它们混合在一起创建带十字的页面没有问题。

以下是使用自己的XGraphics对象从MigraDoc中绘制页面的示例代码: http://forum.pdfsharp.net/viewtopic.php?f=8&t=3172

在该循环中调用pdfRenderer.DocumentRenderer.RenderPage(gfx, i);后,您可以使用gfx对象在页面上绘制线条或其他对象。

答案 1 :(得分:1)

要回答更新的问题:我会尝试制作“仅限MigraDoc”的方法。

我会用十字架创建一个图像 - 否则图像应该是透明的 我会将此图像添加到页脚,我会给它一个绝对位置和绝对大小,以便它填满整个页面。

通过将其作为页脚的一部分,MigraDoc将在每个页面上重复图像。

光栅图像中的对角线不会非常平滑,但如果使用十字形足够大的图像(1000x1000像素或2000x2000像素左右),热敏打印机应该没问题。