Печать с разрешением более 96 т / д в WPF
Позвольте мне объяснить проблему, я застреваю в этом
Если я изменю настройки dpi из диалогового окна "Параметры печати" виртуального принтера, такого как PDF Creator, или любого принтера, который позволяет изменить этот параметр, а затем задаю точку останова, как показано ниже:
PrintDialog printDialog = new PrintDialog();
if ((bool)printDialog.ShowDialog().GetValueOrDefault())
{
System.Printing.PrintCapabilities capabilities = printDialog.PrintQueue.GetPrintCapabilities(printDialog.PrintTicket);
...... insert breakpoint here
}
Я вижу, что свойства printDialog.PrintTicket.PageResolution.X; и printDialog.PrintTicket.PageResolution.Y изменяются правильно, пока printDialog.PrintTicket.PageMediaSize.Width и printDialog.PrintTicket.PageMediaSize.Height не меняются, несмотря на изменение разрешения принтера... бумага формата A4 в портретном режиме всегда будет иметь PageMediaSize.Height = 1122.5196850393702 и PageMediaSize.Width = 793.70078740157476 независимо от того, какое разрешение установлено ранее..... для WPF размер блока этих размеров установлен на 1/96 дюйма, но когда на экране установлено значение "ОК", поскольку разрешение экрана по умолчанию составляет 96 dpi на другая сторона принтера неверна, потому что он имеет другое разрешение, другими словами, опровергая, что высота и ширина бумаги являются свойствами только для чтения, если я не могу найти способ сказать WPF, что размер блока принтера не 1/96 дюйм, но, например, 1/300 дюйма (если на принтере я ранее установил 300 точек на дюйм), абсолютно невозможно печатать с более высоким разрешением, чем 96 точек на дюйм
Последнее замечание, в моем конкретном случае я не могу использовать RenderTargetBitmap, а затем изменить размер всего, чтобы соответствовать настройкам высоты и ширины бумаги принтера, потому что я печатаю изображения со штрих-кодом высокой четкости, и это приведет к изменению масштаба изображения, что сделает нечитаемым штрих-код на окончательной бумаге, потому что я создаю его с целью печати с разрешением 300 точек на дюйм, что без изменения размера будет выходить за границы, потому что WPF сообщает мне размеры бумаги принтера в неправильном формате (1/96 дюйма), несмотря на то, что реальный dpis предварительно установлен на принтер
Надеясь прояснить проблему,
заранее спасибо,
Дейв