Приложение My C# печатает некоторые страницы в файле xps, однако я обнаружил, что если принтер по умолчанию является сетевым принтером, тогда созданный файл xps недействителен. «Просмотрщик XPS не может открыть этот документ».C# PrintDocument создает недопустимый файл xps в зависимости от принтера по умолчанию?
Это меня смущает, так как я даже не пишу на сетевой принтер .. но в файл.
Если у меня нет принтера по умолчанию, установленного на сетевом принтере (принтер по умолчанию «отправить в OneNote» или «Microsoft XPS Document Writer»), то следующий код правильно создает файл XPS с 2 страницами при выполнении :
pageCounter = 0;
PrintDocument p = new PrintDocument();
p.PrintPage += delegate(object sender1, PrintPageEventArgs e1)
{
// 8.5 x 11 paper:
float x0 = 25;
float xEnd = 850 - x0;
float y0 = 25;
float yEnd = 1100 * 2 - y0; // bottom of 2ed page
Font TitleFont = new Font("Times New Roman", 30);
if (pageCounter == 0) // for the first page
{
e1.Graphics.DrawString("My Title", TitleFont, new SolidBrush(Color.Black), new RectangleF(300, 15, xEnd, yEnd));
e1.HasMorePages = true; // more pages
pageCounter++;// next page counter
}
else // the second page
{
e1.Graphics.DrawString("Page 2", TitleFont, new SolidBrush(Color.Black), new RectangleF(300, 15, xEnd, yEnd));
}
};
// now try to print
try
{
p.PrinterSettings.PrintFileName = fileName; // the file name set earlier
p.PrinterSettings.PrintToFile = true; // print to a file (i thought this would ignore the default printer)
p.Print();
}
catch (Exception ex)
{
// for the Bug I have described, this Exception doesn't happen.
// it creates an XPS file, but the file is invalid in the cases mentioned
MessageBox.Show("Error", "Printing Error", MessageBoxButton.OK);
}
так что мой вопрос ... почему это происходит, что я делаю неправильно?
Я рассмотрю это, спасибо за идею. У вас есть хорошие учебники по XpsDocumentWriter? Материал, который я делал с принтером, до сих пор не был таким прямым. – 00jt
К сожалению, я думаю, что работа с XpsDocumentWriter будет, по крайней мере, такой же сложной, как работа с PrintDocument. У меня нет хороших ресурсов для создания контента с помощью XpsDocumentWriter, так как мой опыт больше связан с драйверами. – Jon
еще не имели возможности посмотреть на это, но «сложный и рабочий» по-прежнему лучше, чем «сложный и сломанный», – 00jt