Подскажите как осуществить печать документа в Core? Метод Print не доступен.
[Print word document .NET Core](https://forum.aspose.com/t/print-word-document-net-core/195700)
Добрый день, подскажите решена ли проблема печати документов Word .netCore, без потери качества печати?
Боюсь, как указано в следующей ссылке, метод Document.Print недоступен в .NET Standard 2.0.
Следующий простой код можно использовать для печати документа с помощью System.Drawing.Common. Для печати документ сначала преобразуется в изображение, а затем распечатывается. Обратите внимание, что при таком подходе может быть ухудшение качества из-за преобразования в изображение.
DocumentPrinter printer = new DocumentPrinter();
Document doc = new Document(@"C:\Temp\input.docx");
printer.Print(doc);
public class DocumentPrinter
{
/// <summary>
/// Prints the specified document using default printer.
/// </summary>
public void Print(Document doc)
{
mDoc = doc;
mPageIndex = 0;
PrintDocument pd = new PrintDocument();
pd.PrintPage += PrintPage;
pd.Print();
}
private void PrintPage(object o, PrintPageEventArgs e)
{
try
{
using (MemoryStream pageImageStream = new MemoryStream())
{
ImageSaveOptions options = new ImageSaveOptions(SaveFormat.Png);
//options.PageCount = 1;
//options.PageIndex = mPageIndex;
PageRange pageRange = new PageRange(mPageIndex, mPageIndex); // Specify Range
options.PageSet = new PageSet(pageRange);
mDoc.Save(pageImageStream, options);
pageImageStream.Position = 0;
using (Image pageImage = Image.FromStream(pageImageStream))
{
e.Graphics.DrawImage(pageImage, new Point(0, 0));
}
// Increase page index and check if there are more pages.
mPageIndex++;
e.HasMorePages = (mPageIndex < mDoc.PageCount);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
// Stop printing in case of errors.
e.HasMorePages = false;
}
}
private int mPageIndex;
private Document mDoc;
}