
ABS
使用iTextSharp库从WPF固定文档生成PDF
在WPF应用程序中,我们经常需要将固定文档转换为PDF格式以便与他人共享或打印。这时,我们可以使用iTextSharp库来实现这个功能。iTextSharp是一个强大的开源PDF库,可以用于创建、处理和修改PDF文档。首先,我们需要在WPF应用程序中添加对iTextSharp库的引用。可以通过NuGet包管理器或手动添加引用来完成这一步骤。然后,我们可以使用以下代码示例来将WPF固定文档转换为PDF:csharpusing System.Windows.Controls;using iTextSharp.text;using iTextSharp.text.pdf;public void ConvertToPdf(FixedDocument fixedDocument, string outputPath){ using (var stream = new FileStream(outputPath, FileMode.Create)) { var document = new Document(); var writer = PdfWriter.GetInstance(document, stream); document.Open(); foreach (PageContent pageContent in fixedDocument.Pages) { var page = pageContent.Child as Canvas; var pdfContentByte = writer.DirectContent; var pageSize = document.PageSize; var offsetX = (pageSize.Width - fixedDocument.DocumentPaginator.PageSize.Width) / 2; var offsetY = (pageSize.Height - fixedDocument.DocumentPaginator.PageSize.Height) / 2; using (var memoryStream = new MemoryStream()) { var pngBitmapEncoder = new PngBitmapEncoder(); var bitmapSource = ConvertToBitmap(page); pngBitmapEncoder.Frames.Add(BitmapFrame.Create(bitmapSource)); pngBitmapEncoder.Save(memoryStream); var image = iTextSharp.text.Image.GetInstance(memoryStream.GetBuffer()); image.SetABSolutePosition(offsetX, offsetY); pdfContentByte.AddImage(image); } document.NewPage(); } document.Close(); }}private BitmapSource ConvertToBitmap(Canvas canvas){ double width = canvas.ActualWidth; double height = canvas.ActualHeight; RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)width, (int)height, 96d, 96d, PixelFormats.Pbgra32); renderBitmap.Render(canvas); return renderBitmap;}在上面的代码中,我们首先创建了一个新的PDF文档,并将其打开以供写入。然后,我们遍历WPF固定文档中的每一页,并将其转换为位图。接下来,我们将位图转换为iTextSharp的图像对象,并将其添加到PDF文档的页面中。最后,我们关闭文档并保存为PDF文件。这样,我们就可以使用iTextSharp库从WPF固定文档生成PDF了。这个功能非常实用,可以帮助我们轻松地与他人共享我们的固定文档。案例代码:csharpFixedDocument fixedDocument = new FixedDocument();fixedDocument.DocumentPaginator.PageSize = new Size(96 * 8.5, 96 * 11);PageContent pageContent = new PageContent();FixedPage fixedPage = new FixedPage();fixedPage.Width = fixedDocument.DocumentPaginator.PageSize.Width;fixedPage.Height = fixedDocument.DocumentPaginator.PageSize.Height;TextBlock textBlock = new TextBlock();textBlock.Text = "这是一个固定文档示例。";textBlock.FontSize = 24;textBlock.Margin = new Thickness(96 * 0.5, 96 * 1, 0, 0);fixedPage.Children.Add(textBlock);((IAddChild)pageContent).AddChild(fixedPage);fixedDocument.Pages.Add(pageContent);ConvertToPdf(fixedDocument, "output.pdf");在这个案例代码中,我们创建了一个包含固定文本的固定文档。然后,我们调用
ConvertToPdf方法将该固定文档转换为PDF文件。:使用iTextSharp库,我们可以轻松地从WPF固定文档生成PDF文件。这为我们与他人共享文档提供了便利,并且可以确保文档的格式和布局在不同设备上的一致性。通过以上代码示例,我们可以快速上手并实现这一功能。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号