【问题标题】:Using PDFsharp and MigraDoc only for printing(not creating PDF)仅使用 PDFsharp 和 MigraDoc 进行打印(不创建 PDF)
【发布时间】:2016-10-03 11:09:11
【问题描述】:

我想使用 C# 打印一些格式化的文本。文字是这样的:

嗨,我是一个多行 部分格式化文本。我想打印使用 C#(winforms)。我可能包含一些 unicode 文本,例如 مرا به هیچ بدادی و من هنوز بر آنم/ که از وجود تو مویی به عالمی نفروشم 等等......

我尝试了 C#System.Drawing 打印,但是非常辛苦而且非常混乱,所以我搜索并找到了PDFsharp,它可以绘制多种样式的文本并从中创建 PDF。它在第一页中说:

PDFsharp 是一个开源 .NET 库,可以轻松地从任何 .NET 语言动态创建和处理 PDF 文档。相同的绘图例程可用于创建 PDF 文档、在屏幕上绘图、或将输出发送到任何打印机

但我不明白怎么做? 我不想创建 PDF 文件并打印它。我也不想创建一个我不使用的pagePreview

有没有办法直接从XGraphics 或其他地方打印?怎么样?

有没有更好的替代品(而且免费,因为我破产了 :( ) 到 PDFsharp?

(一个简单的“helloworld”示例会非常好)

【问题讨论】:

    标签: c# winforms pdfsharp migradoc


    【解决方案1】:

    您可以从 Graphics 对象创建 XGraphics 对象:

    XGraphics gfx = XGraphics.FromGraphics(graphics, size);
    

    因此,如果您有一个用于打印机的 Graphics 对象,则可以使用 PDFsharp 代码进行打印。

    不确定它是否对您有帮助,因为 Graphics 对象可以直接用于打印。
    如果您需要 PDF 和打印或 PDF 和屏幕预览,则使用 XGraphics 很有意义。

    【讨论】:

    • 非常感谢。它帮助了我。这也是有道理的,因为正如我在问题中指出的那样,我不能使用 Graphics 对象进行多重格式化。
    【解决方案2】:

    user-241.007 答案是正确的(我接受它作为正确答案)。但我发布这个答案,只是为了提供一个例子(正如我在问题中要求的那样)

    在下面的代码中,问题中的相同文本被绘制在表单上(在表单的 OnPaint 事件中)。

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Document document = new Document();
        // Add a section to the document
        Section section = document.AddSection();
    
        // Add a paragraph to the section
        Paragraph paragraph = section.AddParagraph();
        paragraph.Format.Font.Size = 14;
        // Add some text to the paragraph
        paragraph.AddFormattedText("Hi i am a");
        paragraph.AddFormattedText(" Multi-line ",TextFormat.Bold);
        FormattedText ft = paragraph.AddFormattedText("partially formatted");
        ft.Italic = true;
        paragraph.AddFormattedText(" text. I want to be printed using C#(winforms). I might contain some unicode text like مرا به هیچ بدادی و من هنوز بر آنم/ که از وجود تو مویی به عالمی نفروشم and so on.... ");
        paragraph = section.AddParagraph(); 
        //here is the important part, linking Graphics to XGraphics. Graphics can be used in drawing on form, or in printing
        XGraphics xgf = XGraphics.FromGraphics(e.Graphics, new XSize(0, 1000));
        DocumentRenderer docRenderer = new DocumentRenderer(document);
        docRenderer.PrepareDocument();
        //rendering first page to Xgraphics
        docRenderer.RenderPage(xgf, 1);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 2016-03-23
      • 2017-01-24
      • 2016-08-22
      相关资源
      最近更新 更多