У нас странная проблема с печатью изображений и текста. Когда мы печатаем ВПЕРВЫЕ на аппарате, ТОЛЬКО фон смещается вверх и влево и печатается не в том месте.
Текст напечатан правильно.
Когда мы печатаем то же самое снова, все в порядке .... и BG и текст ..?
Удаление и переустановка приложения или перезапуск аппарата не дают никаких изменений, все печатается нормально.
Итак, поскольку только изображение bg печатается неправильно, мы подозреваем, что проблема связана со свойством HardMargin. (Только этот метод использует HardMargin)
Почему проблема возникает только при первом исполнении - для нас загадка ... ??
У кого-нибудь есть какие-либо подсказки?
private void DrawBackground(PrintPageEventArgs ev, string bgFilePath, float offsetX, float offsetY)
{
try
{
System.Drawing.Image img = System.Drawing.Image.FromFile(bgFilePath);
float w = (float)Width;
float h = (float)Height;
float x = ev.PageSettings.HardMarginX + (offsetX);
float y = ev.PageSettings.HardMarginY + (offsetY);
ev.Graphics.DrawImage(img, x, y, w, h);
}
catch (Exception ex)
{
//Errors.CatchError
}
}
//Method for printing text ( on top of background )
RectangleF printRect = new RectangleF();
printRect.X = offsetX + (rtfPrintscale * (float)v.X);
printRect.Y = offsetY + (rtfPrintscale * (float)v.Y);
printRect.Width = rtfPrintscale * (float)v.Width;
printRect.Height = rtfPrintscale * (float)v.Height;
............................................... .............
В ответ на ответ 1:
Привет, JDMX,
то, что вы говорите, имеет смысл. Я думал по тому же пути.
Я объясню, что именно произошло:
Я установил приложение на свой ноутбук для тестирования. На этом ноутбуке я недавно установил драйвер принтера для печати на беспроводном принтере.
При создании предварительного просмотра я заметил, что фоновое изображение было размещено неправильно. У него были отрицательные значения x & y. Я думал, что это ошибка в коде, поэтому вернулся к машине разработки и проверил ... все работало нормально. Так что я проверил это на нескольких машинах ... все еще все работало нормально
Итак, я вернулся к ноутбуку и сделал распечатку. Печать была такой же, как предварительный просмотр. Озадаченный, я снова сгенерировал предварительный просмотр, и теперь все было помещено правильно ???
Так что я подумал, что это проблема с настройками приложений, поэтому я удалил переустановленный ... все еще все печаталось правильно. Поэтому я перезагрузился, но безрезультатно.
Наша проблема в том, что мы даже не можем воспроизвести или отладить ошибку ...
Может, есть драйвер принтера только для тестирования или что-то, с чем мы можем работать?
Кстати: я устанавливаю поля несколькими способами:
ThePrintDocument.OriginAtMargins = true;
ThePrintDocument.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
...
ThePrintDocument.DefaultPageSettings.Margins.Left = 0;
ThePrintDocument.DefaultPageSettings.Margins.Top = 0;
ThePrintDocument.DefaultPageSettings.Margins.Bottom = 0;
ThePrintDocument.DefaultPageSettings.Margins.Right = 0;
... РЕДАКТИРОВАТЬ: Решение: .................................... ........
Ну, вот что мы думаем:
1) По умолчанию для настроек принтера установлено поле 100
.
2) Вы задаете единицу измерения в миллиметре
3) для параметра OriginArMargins установлено значение true
4) Установите поля на 0
На самом деле произошло то, что для «Origin» установлено значение по умолчанию, равное 100, что интерпретируется как 100 мм. Таким образом, ваш контент теперь печатается с полем в 100 мм.
Что вам нужно сделать, это сначала установить поля на 0, а затем установить originatmargins на true.
НТН.