1

我在 FlowDocument 中定义了一个报告。在该报告中,我有一些部分要以横向模式打印。为了做到这一点,我编写了一个肮脏的 DocumentPaginator hack,它为标记为横向的部分创建了一个面向横向的 FlowDocument。

    public override DocumentPage GetPage(int pageNumber)
    {
    // some code

                if (section.Name.Equals("landscapePage"))
                {
                    var landscapeDocument = new FlowDocument();

                    landscapeDocument.PageWidth = document.PageHeight;
                    landscapeDocument.ColumnWidth = document.PageWidth - 50;
                    landscapeDocument.PageHeight = document.PageWidth;
                    landscapeDocument.Blocks.Add(section);
                    var landscapePaginator = ((IDocumentPaginatorSource)landscapeDocument).DocumentPaginator;
                    var landscapePage = landscapePaginator.GetPage(0);
                    return landscapePage;
                }

    // more code

如果我打印到 XPS 文档,这看起来和预期的一样。横向标记的页面在 XPS 查看器中以横向模式显示。但是,如果我直接或从 XPS 查看器打印文档,打印机不会旋转横向页面并且内容的右侧会被裁剪。

我还尝试在 Word 中制作混合模式文档,按预期打印,但如果我将相同的文档保存为 XPS 并使用 XPS 查看器打印,横向页面会被裁剪。这让我想知道 XPS 是否完全支持混合页面方向。

我知道我可以从页面中提取 Visual 并添加 90 度旋转变换。我试过了,打印时效果很好,但如果保存为 XPS 或 PDF,页面显然会旋转,这在显示器上查看打印时效果不佳。

有没有办法在不使用旋转变换的情况下以混合方向打印 FlowDocuments?

4

0 回答 0