gpt4 book ai didi

c# - 如何将 WriteAsync 与 XPSDocument 一起使用?

转载 作者:行者123 更新时间:2023-11-30 12:26:52 29 4
gpt4 key购买 nike

我对该代码有疑问,

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);

如果我用 Write(paginator) 替换最后一个 Ligne 一切正常,但如果我使用写异步我得到一个,

FixedPage cannot contain another FixedPage.

WriterOnWritingCompleted 错误;

我发现 article .但我真的不知道如何处理这种重载。

最佳答案

你可以试试这个 code :

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,like :

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;
}

关于c# - 如何将 WriteAsync 与 XPSDocument 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27358911/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com