Хобрук: Ваш путь к мастерству в программировании

Принтер С# печатает отчет только примерно на 1/6 страницы

С тех пор, как я обновил ActiveReports с версии 7 до 11, отчеты печатаются примерно на 1/6 страницы и со странным макетом, только изображения печатаются правильно.введите здесь описание изображения
Но по-видимому, это только при печати, а не при предварительном просмотре. Как ни странно, я полагаю, что проблема в объекте SystemPrinter.
Насколько я понимаю, этот объект правильно определен.

// get printer
if (systemPrinter == null)
{
    systemPrinter = new SystemPrinter { PrinterName = systemPrinterName };
    systemPrinter.StartJob("My-printjob");
}

// set paper source and size
SetPaper(systemPrinter, systemPrinterPaperSource);

// set draw size
var internalOffSetX = systemPrinter.PhysicalOffsetX / systemPrinter.Graphics.DpiX;
var internalOffSetY = systemPrinter.PhysicalOffsetY / systemPrinter.Graphics.DpiY;

internalOffSetX = internalOffSetX - (offSetX / 2.54f);
internalOffSetY = internalOffSetY - (offSetY / 2.54f);

var printWidth = (systemPrinter.PaperSize.Width / 100f) - internalOffSetX;
var printHight = (systemPrinter.PaperSize.Height / 100f) - internalOffSetY;

// Scale: A4 (printable)
var smlOut = RectangleF.FromLTRB(-internalOffSetX, -internalOffSetY, printWidth, printHight);

systemPrinter.Graphics.PageUnit = GraphicsUnit.Pixel;

//Important edit for StackOverflow: Just added this line and the pdf looks perfect
SaveDocumentAsPdf(@"C:\Temp\SaveAsPDF\mydocument.pdf", report);

foreach (Page page in report.Document.Pages)
{
    systemPrinter.StartPage();
    page.Draw(systemPrinter.Graphics, smlOut);
    systemPrinter.EndPage();
}

С PaperHeight being 11.69f и PaperWidth being 8.27f, ClipBounds being {X = -699050.6 Y = -699050.6 Width = 1398101.25 Height = 1398101.25} System.Drawing.RectangleF

Однако я не могу не подчеркнуть тот факт, что я изменил только версию ActiveReports на 11 (которая теперь использует inches для измерения, но предварительный просмотр все еще в порядке. Вывод не не изменится, когда я распечатаю его на физическом принтере или на принтере Bullzip.
Кто-нибудь что-нибудь знает по этому поводу?

Редактировать:
Непосредственно перед печатью отчета с использованием уже написанного метода PDF-файл выглядит идеально.

var pdfReportArchiv = new PdfExport();
pdfReportArchiv.Security.Encrypt = encrypt;
pdfReportArchiv.Security.Permissions = PdfPermissions.AllowPrint;
pdfReportArchiv.Security.Use128Bit = true;
pdfReportArchiv.Export(report.Document, pathAndName);

Ответы:


1

По-видимому, с изменением с 7 на 11 линия systemPrinter.Graphics.PageUnit = GraphicsUnit.Pixel; больше не использовалась и вызвала проблему.

19.07.2018
Новые материалы

Блоги, которые обязательно нужно прочитать специалистам по обработке и анализу данных :
Добро пожаловать в 2020! Новый год и новое десятилетие. Поскольку мы начинаем новый и захватывающий год в науке о данных, важно, чтобы профессионалы открыли для себя лучшие блоги по науке о..

Универсальный базовый доход
Универсальный базовый доход В последние годы концепция всеобщего базового дохода (УБД) набирает обороты как все более эффективное решение для борьбы с растущим неравенством доходов и..

Освоение Python для анализа финансовых данных: руководство по получению данных о доходах от акций
Если вы хотите научиться получать данные о доходах от акций с помощью Python, то это руководство для вас! В этой статье мы рассмотрим несколько примеров сбора данных о доходах от акций. Мы..

Абсолютно имеет смысл.
Абсолютно имеет смысл. Мой репетитор даже предложил то же самое. Одна проблема, с которой я столкнулся, заключается в том, что для каждой из категорий не было ярлыка «хорошо». Если я перебираю..

МАШИННОЕ ОБУЧЕНИЕ И EDA
Каковы шаги в машинном обучении Определение проблемы Генерация гипотез Извлечение данных Исследование данных Прогнозное моделирование Развертывание модели Зачем нам ЭДА? Идентификация..

В чем основные различия между ReactJS и React-Native?
В чем основные различия между ReactJS и React-Native? Что я узнал, создавая веб-приложения, а затем мобильные приложения на React React-Native существует уже около 2 лет и стал..

LeetCode — Умножение строк
Постановка задачи Даны два неотрицательных целых числа num1 и num2 , представленные в виде строк, вернуть произведение num1 и num2 , а также представлен в виде строки. Примечание . Вы..