iTextSharp 从 WPF 固定文档生成 PDF

swift

1个回答

写回答

峰峰峰峰峰

2025-07-07 07:40

+ 关注

ABS
ABS

使用iTextSharp库从WPF固定文档生成PDF

在WPF应用程序中,我们经常需要将固定文档转换为PDF格式以便与他人共享或打印。这时,我们可以使用iTextSharp库来实现这个功能。iTextSharp是一个强大的开源PDF库,可以用于创建、处理和修改PDF文档。

首先,我们需要在WPF应用程序中添加对iTextSharp库的引用。可以通过NuGet包管理器或手动添加引用来完成这一步骤。

然后,我们可以使用以下代码示例来将WPF固定文档转换为PDF:

csharp

using 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了。这个功能非常实用,可以帮助我们轻松地与他人共享我们的固定文档。

案例代码:

csharp

FixedDocument 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文件。这为我们与他人共享文档提供了便利,并且可以确保文档的格式和布局在不同设备上的一致性。通过以上代码示例,我们可以快速上手并实现这一功能。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号