2016-10-03 2 views
0

Я хочу напечатать некоторый форматированный текст с помощью C#. текст что-то вроде этого:Использование PDFsharp и MigraDoc только для печати (не создавая PDF)

Привет я Многоканальныйчастично форматированный текст а. Я хочу, чтобы был напечатан с использованием C# (winforms). Я мог бы содержать некоторый юникод текст, как مرا به هیچ بدادی و من هنوز بر آنم/که از وجود تو مویی به عالمی نفروشم и так далее ....

Я попытался C# System.Drawing печати, но это было очень трудно, и очень беспорядочно, поэтому я искал и нашел PDFsharp, который может нарисовать многообразный стиль текста и создать из него PDF-файл. На первой странице написано:

PDFsharp - это библиотека с открытым исходным кодом .NET, которая легко создает и обрабатывает документы PDF на лету с любого языка .NET. Те же чертежные функции могут быть использованы для создания PDF-документов, рисовать на экране, или отправить выход на любой принтер

, но я не вижу, каким образом? Я не хочу создавать PDF-файл и печатать его. также я не хочу делать pagePreview, что я не использую.

Есть ли способ печати непосредственно с XGraphics или что-то еще? Как?

Есть ли лучшая альтернатива (и бесплатно, потому что я разорен :() в PDFsharp?

(простой «HelloWorld» образец будет очень приятно)

ответ

1

Вы можете создать объект XGraphics из графический объект:

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

Так что, если у вас есть объект Graphics для принтера, вы можете использовать PDFsharp код для печати

Не уверен, что это может быть он. lp для вас, так как объект Graphics может использоваться для печати напрямую.
Использование XGraphics имеет смысл, если вам нужны PDF и печать или PDF и предварительный просмотр экрана.

+0

спасибо много. это помогло мне. также это имеет смысл, потому что, как я указал в вопросе, я не могу делать многократное форматирование с объектом «Graphics». –

0

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); 
} 

output of code

Смежные вопросы