[英]How to do different Animations on the same page but on different screen sizes?
[英]How to print a FlowDocument on a single page with different page sizes?
這是我的情況:
我有一個文檔,當前是一個FlowDocument,我想在兩種不同的頁面尺寸上打印。 第一個是標准字母8.5 x 11; 另一台是便攜式打印機,按卷軸長度為5。 5倍打印效果很好嗎? 但會在兩頁8.5x11上打印出來。 我希望8.5x11具有兩列,以便第一列流入第二列而不是第二頁。 我不想縮放整個內容,以使其在一張8.5x11的單張紙上打印在一個狹窄的列中。 那是不可讀的。 不過可以進行一些縮放以適合頁面分為兩列。 它可以在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>
我試圖弄亂列寬,文檔頁面大小,縮放比例,添加包裝面板,添加堆棧面板等...,但我無法弄清楚。 它讓我發瘋!! 有人可以幫忙嗎?
附言:代碼中的任何拼寫錯誤都是由我引起的,因為我不得不從其他PC上手動復制它。
因此,在進行了更多的挖掘和使用價值並將FlowDocument添加到各種查看器之后,我注意到大多數詢問FlowDocument打印的人都遇到了與我相反的問題。 他們的解決方案是設置ColumnWidth。
我只是刪除了
ColumnWidth="500"
從FlowDocument中獲取,現在我有了所需的行為。 在A4上兩列打印,並在較小的卷紙上以所需的長度在單列中打印。 為了清楚起見,我也沒有在代碼中的任何地方設置ColumnWidth。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.