Результаты поиска
Как распечатать документ HTML из веб-службы?
Я хочу распечатать HTML из веб-службы C#. Управление веб-браузером является избыточным и не работает хорошо в среде обслуживания, а также не работает хорошо в системе с очень жесткими ограничениями безопасности. Существует ли какая-либо бесплатная библиотека .NET , которая будет поддерживать печать базовой страницы HTML? Вот код, который у меня есть до сих пор, который не работает должным образом.
public void PrintThing(string document)
{
if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA)
{
Thread thread =
new Thread((ThreadStart) delegate { PrintDocument(document); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
else
{
PrintDocument(document);
}
}
protected void PrintDocument(string document)
{
WebBrowser browser = new WebBrowser();
browser.DocumentText = document;
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
browser.Print();
}
Это прекрасно работает при вызове из потоков типа UI,но ничего не происходит при вызове из потока типа службы. Изменение Print() на ShowPrintPreviewDialog() приводит к следующей ошибке скрипта IE:
Ошибка:
dialogArguments.___IE_PrintType- это null или не объект.URL:
res://ieframe.dll/preview.dlg
И появится небольшое пустое диалоговое окно предварительного просмотра печати.
Принтеры недоступны, если они не являются общими
Мы используем классический asp для вызова C# dll и в C# dll мы используем System.Drawing.Printing.PrinterSettings.InstalledPrinters, чтобы получить список доступных принтеров. Если принтеры не являются общими, они не будут отображаться, когда пользователь пытается распечатать. Локальная системная учетная запись может видеть и печатать на них с VB6 dll, а администраторы могут печатать просто отлично с C# dll, как вы могли бы ожидать. Есть ли какие-то разрешения, которые мы должны предоставить пользователю, чтобы эти принтеры были доступны?
"Бесшумная" печать в веб-приложении
Я работаю над веб-приложением, которое должно печатать молча, то есть без участия пользователя. Какой самый лучший способ достичь этого? Ему не нравится, что это можно сделать только с Javascript, ни Flash и / или AIR. Самое близкое, что я видел, включает в себя Java applet.
Я могу понять, почему это было бы плохой идеей для любого веб-сайта, чтобы иметь возможность сделать это. Этот конкретный экземпляр предназначен для внутреннего приложения,и он вполне приемлем, если пользователю необходимо добавить URL в список надежных сайтов, установить аддон и т. д.
Поддерживает ли Mono System.Drawing и System.Drawing.Printing?
Я пытаюсь использовать Mono, чтобы загрузить bitmap и распечатать его на Linux, но получаю исключение. Поддерживает ли Mono печать на Linux? Код / исключение приведены ниже:
EDIT: я больше не получаю исключения, но мне все еще интересно, какая поддержка существует. Оставить код для потомков или что-то в этом роде.
private void btnPrintTest_Click(object sender, EventArgs e)
{
_printDocTest.DefaultPageSettings.Landscape = true;
_printDocTest.DefaultPageSettings.Margins = new Margins(50,50,50,50);
_printDocTest.Print();
}
void _printDocTest_PrintPage(object sender, PrintPageEventArgs e)
{
var bmp = new Bitmap("test.bmp");
// Determine center of graph
var xCenter = e.MarginBounds.X + (e.MarginBounds.Width - bmp.Width) / 2;
var yCenter = e.MarginBounds.Y + (e.MarginBounds.Height - bmp.Height) / 2;
e.Graphics.DrawImage(bmp, xCenter, yCenter);
e.HasMorePages = false;
}
Печать DOM Изменений
То, что я пытаюсь сделать, это изменить цвет фона ячейки таблицы <td>, а затем, когда пользователь переходит к печати страницы, изменения теперь отображаются.
В настоящее время я использую ненавязчивый скрипт для запуска следующей команды в диапазоне ячеек:
element.style.backgroundColor = "#f00"
Это работает на экране в IE и FF, однако, когда вы переходите к просмотру печати, цвета фона теряются.
Я делаю что-то не так?