【问题标题】:Unable to print with MigraDoc/PDFsharp无法使用 MigraDoc/PDFsharp 打印
【发布时间】:2018-02-21 11:32:39
【问题描述】:

我将 NuGet 包添加到我的项目中:

PDFsharp + MigraDoc

版本:1.50.4790-beta5a(预发布)

添加了引用:

MigraDoc.DocumentObjectModel

MigraDoc.Rendering

MigraDoc.RtfRendering

PdfSharp

PdfSharp.Charting

我正在使用 VS2013,目标是 .NET Framework 4.5。

没有 MigraDocPrintDocument 类/命名空间,也没有 Printing.MigraDocPrintDocument...

我还尝试将 PagePreview 控件添加到我的表单(我正在开发 Windows.Forms 应用程序),但没有此类控件,我也无法将此类项目添加到我的工具箱中dll/包。

我已经使 PDF 文档非常简单,但现在我被困在最后一步,我看不到光明。需要打印到热敏打印机上。

我的代码的简短 sn-p:

public void PrintMigraDoc(Bitmap ImagenBMP, string nombre, string apellido, string documento, string nacimiento, string nacionalidad, string grupo)
{
    //Save image in greyscale
    Bitmap bmp = GrayScale(ImagenBMP);
    bmp.Save("foto_grey.bmp");
    
    //Create document
    Document document = new Document();
    //Custom Normal Style
    Style style = document.Styles["Normal"];
    style.Font.Name = "Calibri";
    style.Font.Size = 6;

    //Sections & Page Properties
    Section section = document.AddSection();
    Unit width, height;
    width = Unit.FromMillimeter(60);
    height = Unit.FromMillimeter(100);
    section.PageSetup.PageWidth = width;
    section.PageSetup.PageHeight = height;
    section.PageSetup.LeftMargin = 5;
    section.PageSetup.RightMargin = 5;
    section.PageSetup.TopMargin = 5;

    //Fecha
    Paragraph paragraph = section.AddParagraph(DateTime.Today.ToString("dddd") + ", " + DateTime.Today.ToString("dd MMMM yyyy"));
    //Foto
    paragraph = section.AddParagraph();
    MigraDoc.DocumentObjectModel.Shapes.Image imagen = section.AddImage("foto_grey.bmp");
    imagen.Width = "2.5cm";
    imagen.LockAspectRatio = true;
    imagen.Left = MigraDoc.DocumentObjectModel.Shapes.ShapePosition.Center;

    paragraph = section.AddParagraph();

    //Datos en Tabla
    this.table = section.AddTable();
    this.table.Borders.Width = 0.25;
    this.table.Borders.Left.Width = 0.5;
    this.table.Borders.Right.Width = 0.5;
    this.table.Rows.LeftIndent = 0;
    this.table.RightPadding = 0;
    //Columnas
    MigraDoc.DocumentObjectModel.Tables.Column column = this.table.AddColumn();
    column = this.table.AddColumn();
    //Filas
    MigraDoc.DocumentObjectModel.Tables.Row row = table.AddRow();
    //Nombre
    paragraph = row.Cells[0].AddParagraph("Name: ");
    paragraph.AddFormattedText(nombre, TextFormat.Bold);
    row.Cells[0].MergeRight = 1;
    //Apellido
    row = table.AddRow();
    paragraph = row.Cells[0].AddParagraph("Surename: ");
    paragraph.AddFormattedText(apellido, TextFormat.Bold);
    row.Cells[0].MergeRight = 1;
    //Documento
    row = table.AddRow();
    paragraph = row.Cells[0].AddParagraph("Document: ");
    paragraph.AddFormattedText(documento, TextFormat.Bold);
    row.Cells[0].MergeRight = 1;
    //Apellido
    row = table.AddRow();
    paragraph = row.Cells[0].AddParagraph("Birth Date: ");
    paragraph.AddFormattedText(nacimiento, TextFormat.Bold);
    paragraph = row.Cells[1].AddParagraph("Nationality: ");
    paragraph.AddFormattedText(nacionalidad, TextFormat.Bold);

                    
    PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(false);
    pdfRenderer.Document = document;
    pdfRenderer.RenderDocument();
    string filename = "Invoice.pdf";
    pdfRenderer.PdfDocument.Save(filename);

        

    // Creates a PrintDocument that simplyfies printing of MigraDoc documents
    //MigraDocPrintDocument printDocument = new MigraDocPrintDocument();
       
}

【问题讨论】:

    标签: c# visual-studio pdf migradoc


    【解决方案1】:

    要获得预览,请尝试PDFsharp-MigraDoc-WPF 或PDFsharp-MigraDoc-GDI。

    查看Document Viewer 示例:
    http://www.pdfsharp.net/wiki/DocumentViewer-sample.ashx

    您可以在这里下载完整的示例代码:
    https://sourceforge.net/projects/pdfsharp/files/pdfsharp/PDFsharp%201.50%20%28beta%203%29/

    如果您想打印,请从早期版本中获取打印类。另见:
    http://forum.pdfsharp.net/viewtopic.php?f=8&t=3202
    您将需要 GDI 构建进行打印。

    【讨论】:

    • 谢谢!该帖子的链接解决了我的打印问题。 使用 GDI+ 并将 MigraDocPrintDocument.cs 添加到我的项目中。现在我将寻找您建议的文档查看器。但主要问题已解决,因此我会将您的答案标记为正确。再次感谢。
    • DocumentViewer 易于使用。它是 GDI 库中的一个控件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多