首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将WriteAsync与XPSDocument结合使用?

如何将WriteAsync与XPSDocument结合使用?
EN

Stack Overflow用户
提问于 2014-12-08 13:17:15
回答 1查看 1.5K关注 0票数 4

我对那个密码有意见,

代码语言:javascript
复制
XpsDocument doc = new XpsDocument(_filePath, FileAccess.Read);
XpsDocument = doc.GetFixedDocumentSequence();
...
var writer = PrintQueue.CreateXpsDocumentWriter(pq);
var paginator = XpsDocument.DocumentPaginator;
writer.WritingCancelled += WriterOnWritingCancelled;
writer.WritingCompleted += WriterOnWritingCompleted;
writer.WritingPrintTicketRequired += WriterOnWritingPrintTicketRequired;
writer.WriteAsync(paginator);

如果我用写(分页器)替换最后一条规则,那么一切都没问题,但是如果我使用写异步,

FixedPage不能包含另一个FixedPage。

WriterOnWritingCompleted中的错误;

我发现了文章。但我真的不知道该怎么处理过载。

EN

回答 1

Stack Overflow用户

发布于 2014-12-24 21:01:59

你可以试试这个代码

代码语言:javascript
复制
private void WriteUsingAsync (
            string XPSDocFileName, object FixedDocFromApplication) 
    {
        // create a new XPS Document for output
        //  note that AsyncXpsDoc is a property defined in the
        //   class containing this method.
        AsyncXpsDoc = new XpsDocument(XPSDocFileName,
            FileAccess.ReadWrite);

    // create a doc writer object based on the open XPS Document
    XpsDocumentWriter XpsDocWrtr =
        XpsDocument.CreateXpsDocumentWriter(AsyncXpsDoc);

    // register the writing completed event handler
    XpsDocWrtr.WritingCompleted +=
        new WritingCompletedEventHandler(AsyncPrintCompleted);
    XpsDocWrtr.WriteAsync((FixedDocument)FixedDocFromApplication);

    return;
}

// Completion Event Handler
private void AsyncPrintCompleted(
    object sender, WritingCompletedEventArgs e)
{
    if ((e.Cancelled) || (e.Error != null))
        //document not written
    else
        // Asynchronous operation Completed

    AsyncXpsDoc.Close();
    AsyncXpsDoc = null;
}

并检查您是否以正确的方式创建fixedDocument,喜欢

代码语言:javascript
复制
var fd = new FixedDocument(); 
fd.DocumentPaginator.PageSize = new Size(pd.PrintableAreaWidth,fd.PrintableAreaHeight);
FixedPage page1 = new FixedPage();
page1.Width = fd.DocumentPaginator.PageSize.Width;
page1.Height = fd.DocumentPaginator.PageSize.Height;
UIElement page1Text = pages();
page1.Children.Add(page1Text);
PageContent page1Content = new PageContent();
((IAddChild)page1Content).AddChild(page1);
fd.Pages.Add(page1Content);

private UIElement pages()
    {
        Canvas pcan = new Canvas();

        TextBlock page1Text = new TextBlock();
        page1Text.Text = "This is a test";
        page1Text.FontSize = 40;
        page1Text.Margin = new Thickness(96);

        pcan.Children.Add(page1Text);


        return pcan;
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27358911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档