Я работаю над проектом на С#. У меня есть ярлык, которому нужно распечатать документ, который я отправляю. Однако принтер печатает, но я не могу переопределить следующие значения формата Custom
Paper (Papierformaat на голландском языке), который показан здесь: https://gyazo.com/e350ed1e355b45b8cae24196d2b5869b. Если я создаю new PaperSize();
его высоту, меньшую или равную 300, она работает, но если я попытаюсь сделать ее больше, скажем 500, она сократит ее до 300. Почему это происходит? Похоже, я не могу переопределить значения из изображения ссылки (это 300).
public void Printing()
{
try
{
streamToPrint = new StreamReader(filePath);
try
{
PrinterSettings settings = new PrinterSettings();
printFont = new Font("Arial", 10);
PrintDocument pd = new PrintDocument();
PaperSize paperSize = new PaperSize("Test", 315, 300);
paperSize.RawKind = (int)PaperKind.Custom;
pd.DefaultPageSettings.PaperSize = paperSize;
pd.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
pd.PrinterSettings.DefaultPageSettings.PaperSize = paperSize;
pd.PrinterSettings.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
pd.PrintPage += (sender, args) => Console.Out.WriteLine("Printable Area for printer {0} = {1}", args.PageSettings.PrinterSettings.PrinterName, args.PageSettings.PrintableArea);
Console.Out.WriteLine("My paper size: " + pd.DefaultPageSettings.PaperSize);
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
// Print the document.
pd.Print();
}
finally
{
streamToPrint.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Вывод в консоли следующий:
My paper size: [PaperSize Test Kind=Custom Height=500 Width=315]
Printable Area for printer xxx = {X=0,Y=0,Width=400,Height=300}
ИЗМЕНИТЬ
Для людей, которые задаются вопросом, я имею дело с принтером этикеток с непрерывным рулоном. Поэтому технически я мог распечатать документ с бесконечной высотой и шириной 80 мм. Но я не могу переопределить значение Custom 300
из настроек диалога.
Я также хочу отметить, что есть еще 2 программы, которые действительно могут переместиться через значение 300 и расширить PrintableArea
. Кто может помочь?
РЕДАКТИРОВАТЬ 2
После комментария Shakir Ahamed я получил немного дальше:
gyazo.com/3298e480b77c5ba837b071b2ec4f7b8d Я получаю это, что намного больше, чем я использовал, используя последнее решение. Но когда я печатаю его, страница обрезается в 300 снова, как обычно, она всегда отключается по значению, указанному в диалоговом окне (поле со значением 300 и 400).
Мне кажется, что он не будет работать с основными параметрами печати, потому что я считаю, что драйвер переопределяет значения страниц и просто отключает их, не заботясь о PaperSizes
. Я прочитал что-то о структуре DEVMODE
, что все это возможно? Могу ли я переопределить настройки драйвера принтера здесь и печатать бесконечно длинные отпечатки с непрерывным рулоном?
РЕДАКТИРОВАТЬ 3 (разрешено, 20 окт 2016)
Для всех, кто интересуется, Некоторые другие проблемы возникли с моим принтером, и он начал действовать странно (например, не печатать задания печати). В конце концов, я думаю, что что-то пошло не так с установкой драйверов. Я удалил драйверы и переустановил все в соответствии с компакт-диском с драйверами, и теперь мой первоначально опубликованный код просто кажется сработавшим. Вид обломка, так как я потратил столько времени на кодирование только с плохой установкой драйвера. Теперь я могу печатать более 300 единиц, и я могу печатать с непрерывным рулоном более 25 см, если захочу. Спасибо всем, кто думал со мной, чтобы решить эту проблему!