在WPF应用程序中使用HTML设计PDF

时间:2014-01-12 04:44:04

标签: wpf pdf

是否可以在WPF应用程序(C#)中使用HTML和js设计pdf。我尝试使用iTextSharp拍摄我要导出的控件的图像,然后粘贴到pdf中。它有效,但问题是控制必须是可见的。因此,假设该控件中存在listview并且listview不适合一个窗口,则不会导出整个listview。任何想法如何处理?

到目前为止,我已经完成了将ListView导出为pdf。

ListView item = list;
            double width = item.ActualWidth;
            double height = item.ActualHeight;
            Document doc = new Document(new iTextSharp.text.Rectangle(1200f, 700f));
            String filePath;
            string path = Environment.CurrentDirectory + "\\export\\" ;
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            filePath = path + "\\Test_.pdf";
            PdfWriter.GetInstance(doc, new FileStream(filePath, FileMode.Append));
            doc.Open();
            RenderTargetBitmap bmpCopied = new RenderTargetBitmap((int)Math.Round(width + 100), (int)Math.Round(height + 50), 0, 0, PixelFormats.Default);

            DrawingVisual drawingVisual = new DrawingVisual();
            using (DrawingContext drawingContext = drawingVisual.RenderOpen())
            {
                item.Background = Brushes.White;
                VisualBrush visualBrush = new VisualBrush(item);
                drawingContext.DrawRectangle(Brushes.White, null, new Rect(new Point(), new Size(width + 100, height + 50)));
                drawingContext.DrawRectangle(visualBrush, null, new Rect(new Point(), new Size(width + 100, height + 50)));
            }

            bmpCopied.Render(drawingVisual);

            item.Background = Brushes.Transparent;
            byte[] data;
            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(bmpCopied));
            using (MemoryStream ms = new MemoryStream())
            {
                encoder.Save(ms);
                data = ms.ToArray();
            }

            iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(data);
            doc.Add(pdfImage);
            doc.Close();

pdf已创建,但打开pdf会显示错误。其次,我的ListView是可滚动的,所有项目都会显示在pdf中吗?我只需要让它工作。任何方式对我都没问题

0 个答案:

没有答案
相关问题