首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Xaml网格元素转换为PDF

将Xaml网格元素转换为PDF
EN

Stack Overflow用户
提问于 2014-01-04 16:24:14
回答 1查看 1.4K关注 0票数 1

我需要创建一个pdf文件从wpf C#应用程序。我需要应用样式到pdf完全一样的XAML。我不能只是复制xaml页面,因为在创建pdf时数据可能会不同。当用户单击导出按钮时,我将不得不进行数据处理。pdf将包含文本、图像和背景图像。我在考虑有一个html文件来设计pdf,然后传递数据。但我不知道该怎么做。任何建议或示例都会有很大的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-01-04 16:35:12

是的,通过导出到XPS,然后转换为PDF,通过使用一个转换器,如:NiXPS

下面是一个这样的例子:

代码语言:javascript
复制
    private void SaveVisuals(XpsDocumentWriter xpsdw, List<Visual> vc)
{
    // Setup for writing multiple visuals
    VisualsToXpsDocument vToXpsD = (VisualsToXpsDocument)xpsdw.CreateVisualsCollator();

    // Iterate through all visuals in the collection 
    foreach (Visual v in vc)
    {
        vToXpsD.Write(v);   //Write each visual to single page
    }

    // End writing multiple visuals
    vToXpsD.EndBatchWrite();
}

更多信息:On MSDN

另一种方法是首先将文档渲染为图像,然后您可以轻松地将图像转换为PDF文件(当然,这有一些缺点,但这是一种快速的方法)。

例如,为了将HTML转换为PDF,你可以使用wkhtmltopdf,但是有很多不同的工具。

在这里您可以找到一个.NET实现:Pdf API and HTML to PDF Converter for .NET

如果要将视觉效果呈现为图像,则可以使用RenderTargetBitmap将任何WPF Visual对象呈现为位图。

来自MSDN的示例:

代码语言:javascript
复制
        DrawingVisual drawingVisual = new DrawingVisual();
        DrawingContext drawingContext = drawingVisual.RenderOpen();
        drawingContext.DrawText(text, new Point(2, 2));
        drawingContext.Close();

        RenderTargetBitmap bmp = new RenderTargetBitmap(180, 180, 120, 96, PixelFormats.Pbgra32);
        bmp.Render(drawingVisual);
        myImage.Source = bmp;

你可以用这种方式渲染任何视觉效果。你不需要显示它,但你可以。如果您希望保持UI的响应性,则应该在单独的线程中执行此导出操作,而不是在事件处理线程中。

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

https://stackoverflow.com/questions/20918675

复制
相关文章

相似问题

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