Вот мой сценарий:
У меня есть документ, в настоящее время FlowDocument, который я хотел бы напечатать на двух разных размерах страницы.Первая - стандартная буква 8.5 на 11;другой - портативный принтер, и его длина составляет 5 штук.На 5х печатает нормально?но он распечатывается на двух страницах размером 8,5х11.Я хочу, чтобы 8.5x11 имел два столбца, поэтому первый столбец перетекает во второй столбец, а не на вторую страницу.Я НЕ хочу масштабировать все это так, чтобы оно печаталось в одной тонкой колонке на одном листе размером 8,5х11;это нечитаемоНекоторое масштабирование, чтобы уместить страницу в два столбца, все в порядке.Он хорошо печатает на бумаге обоих форматов из Xamlpad, но не из моей программы.Таким образом, это должно быть возможно, однако, для жизни меня, я не могу понять это.
Мой класс принтера:
public void Print(MyViewModel Data) {
IDocumentPaginator flowDoc = RenderFlowDocumentTemplate(pathToFlowDocument, data);
PrintDocumentImageableArea area = null;
XpsDocumentWriter xpsDocWriter = PrintQueue.CreateXpsDocumentWriter(ref area);
if (xpsDocWriter != null) {
PrintFlowDocument(xpsDocWriter, flowDoc.DocumentPaginator, area);
}
}
private IDocumentPaginator RenderFlowDocumentTemplate(string path, MyViewModel Data) {
string rawXamlText = "";
using (StreamReader streamReader = File.OpenText(templatePath)) {
rawXamlText = streamReader.ReadToEnd();
}
FlowDocument doc = XamlReader.Load(new XmlTextReader(new StringReader(rawXamlText)) as FlowDocument;
if (data != null) {
doc.DataContext = data;
}
return doc;
}
private void PrintFlowDocument(XpsDocumentWriter writer, DocumentPaginator document, PrintDocumentImageableArea area) {
document.PageSize = new Size(area.ExtentWidth, area.ExtentHeight);
PrintDocumentPaginator(writer, document);
}
private void PrintDocumentPaginator(XpsDocumentWriter xpsDocWriter, DocumentPaginator document) {
try {
xpsDocWriter.Write(document);
}
catch (PrintSystemException) {}
}
А вот очень урезанная версия моего FlowDocument:
<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
Background="White"
ColumnWidth="500">
<FlowDocument.Resources>...some resources...</FlowDocument.Resources>
<Paragraph />
<BlockUIContainer>
<Grid />
</BlockUIContainer>
.
.
.
<Section />
</FlowDocument>
Я пробовал возиться с шириной столбца документаразмер страницы, масштабирование, добавление панелей переноса, добавление панелей стека и т. д., и я не могу понять это.Это сводит меня с ума!Кто-нибудь может помочь?
PS Любые опечатки в коде сделаны мной, поскольку мне пришлось копировать его вручную с другого компьютера.