使用 C# 創建 PDF 文檔

PDF 是一種獨立於平台的文檔格式,可在不同的操作系統或機器上保持其內容的格式和佈局一致。這就是各種組織使用 PDF 格式動態生成發票、收據、報告和其他業務文檔的原因。 Aspose.PDF for .NET 是一個 PDF 庫,可幫助您在 .NET 應用程序中實現 PDF 自動化。它允許您使用 C# 或 VB.NET 以編程方式創建、編輯、解析和轉換 PDF 文件。在本文中,我將介紹 PDF 生成功能,並向您展示如何使用 C# 從頭開始創建 PDF 文件。

我將從創建一個簡單的 PDF 文檔開始,然後繼續向該文檔添加其他元素。以下是我將在本文中演示的功能列表。

C# PDF 庫 - 安裝

您可以使用 NuGet 包管理器 或包管理器控制台使用以下命令安裝 Aspose.PDF for .NET。或者,可以從 下載 部分下載。

Install-Package Aspose.Pdf

使用 C# 創建 PDF 文件

讓我們首先創建一個包含文本片段的 PDF 文檔。以下是從頭開始創建簡單 PDF 文檔的步驟。

以下代碼示例顯示瞭如何使用 C# 創建 PDF 文件。

// 載入PDF文件 
Document document = new Document();

// 添加頁面
Aspose.Pdf.Page page = document.Pages.Add();

// 向新頁面添加文本
page.Paragraphs.Add(new Aspose.Pdf.Text.TextFragment("Hello World! This is a new PDF generated by Aspose.PDF for .NET."));

// 保存 PDF 文檔
document.Save("Generated-PDF.pdf");
使用 C# 創建 pdf

使用 C# 在 PDF 中應用文本格式

現在讓我們看看如何將文本添加到 PDF 文檔並使用不同的格式設置選項。以下是執行此操作的步驟。

  • 使用 Document 類創建新的 PDF 文檔或加載現有文檔。
  • 訪問要放置文本的 Page
  • 創建一個 TextFragment 的對象並設置文本和其他格式選項,如位置、字體、顏色、大小等。
  • 使用 TextBuilder 類將 TextFragment 對象添加到頁面。
  • 使用 Document.Save() 方法創建 PDF 文檔。

以下代碼示例顯示如何使用 C# 在 PDF 文件中添加格式化文本。

// 載入PDF文件 
Document document = new Document();
// 添加頁面
Aspose.Pdf.Page page = document.Pages.Add();

// 創建文本片段
TextFragment textFragment = new TextFragment("Text 1: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment.Position = new Position(100, 700);
TextFragment textFragment1 = new TextFragment("Text 2: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment1.Position = new Position(100, 600);

// 設置文本屬性
textFragment.TextState.FontSize = 12;
textFragment.TextState.Font = FontRepository.FindFont("TimesNewRoman");
textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray);
textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Red);

textFragment1.TextState.DrawTextRectangleBorder = true;
textFragment1.TextState.Underline = true;
textFragment1.TextState.StrikeOut = true;
// 使用圖案色彩空間創建新顏色
textFragment1.TextState.ForegroundColor = new Aspose.Pdf.Color()
{
	PatternColorSpace = new Aspose.Pdf.Drawing.GradientAxialShading(Color.Red, Color.Blue)
};
// 創建 TextBuilder 對象
TextBuilder textBuilder = new TextBuilder(page);

// 將文本片段附加到 PDF 頁面
textBuilder.AppendText(textFragment);
textBuilder.AppendText(textFragment1);

// 保存 PDF 文檔
document.Save("Generated-PDF.pdf");
使用 C# 創建帶有格式化文本的 pdf

使用 C# 創建多欄 PDF

我們經常看到報紙、研究文章和其他類型文檔中的文本被分為兩欄或更多欄。為了實現這種文本分割,Aspose.PDF for .NET 允許創建多欄PDF。以下是創建多欄 PDF 的步驟。

以下代碼示例展示瞭如何使用 C# 創建多欄 PDF。

// 載入PDF文件 
Document document = new Document();
// 指定 PDF 文件的左邊距信息
document.PageInfo.Margin.Left = 40;
// 指定 PDF 文件的右邊距信息
document.PageInfo.Margin.Right = 40;
Aspose.Pdf.Page page = document.Pages.Add();

// 添加一行
Aspose.Pdf.Drawing.Graph graph1 = new Aspose.Pdf.Drawing.Graph(500, 2);
// 將行添加到節對象的 parapraphs 集合
page.Paragraphs.Add(graph1);

// 指定線的坐標
float[] posArr = new float[] { 1, 2, 500, 2 };
Aspose.Pdf.Drawing.Line l1 = new Aspose.Pdf.Drawing.Line(posArr);
graph1.Shapes.Add(l1);

// 添加標題
// 使用包含 html 標籤的文本創建字符串變量
string s = "<font face=\"Times New Roman\" size=4>" +
"<strong> How to Steer Clear of money scams</<strong> "
+ "</font>";

// 創建包含 HTML 文本的文本段落
HtmlFragment heading_text = new HtmlFragment(s);
page.Paragraphs.Add(heading_text);

Aspose.Pdf.FloatingBox box = new Aspose.Pdf.FloatingBox();
// 在該部分中添加四列
box.ColumnInfo.ColumnCount = 2;
// 設置列之間的間距
box.ColumnInfo.ColumnSpacing = "5";
// 設置列寬
box.ColumnInfo.ColumnWidths = "250 250"; 

// 創建文本 
TextFragment text2 = new TextFragment(@"Sed augue tortor, sodales id, luctus et, pulvinar ut, eros. Suspendisse vel dolor. Sed quam. Curabitur ut massa vitae eros euismod aliquam. Pellentesque sit amet elit. Vestibulum interdum pellentesque augue. Cras mollis arcu sit amet purus. Donec augue. Nam mollis tortor a elit. Nulla viverra nisl vel mauris. Vivamus sapien. nascetur ridiculus mus. Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et,nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et, semper sed, enim nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed urna. . Duis convallis ultrices nisi. Maecenas non ligula. Nunc nibh est, tincidunt in, placerat sit amet, vestibulum a, nulla. Praesent porttitor turpis eleifend ante. Morbi sodales.nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed urna. . Duis convallis ultrices nisi. Maecenas non ligula. Nunc nibh est, tincidunt in, placerat sit amet, vestibulum a, nulla. Praesent porttitor turpis eleifend ante. Morbi sodales. Sed augue tortor, sodales id, luctus et, pulvinar ut, eros. Suspendisse vel dolor. Sed quam. Curabitur ut massa vitae eros euismod aliquam. Pellentesque sit amet elit. Vestibulum interdum pellentesque augue. Cras mollis arcu sit amet purus. Donec augue. Nam mollis tortor a elit. Nulla viverra nisl vel mauris. Vivamus sapien. nascetur ridiculus mus. Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et,nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et, semper sed, enim nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed urna. . Duis convallis ultrices nisi. Maecenas non ligula. Nunc nibh est, tincidunt in, placerat sit amet, vestibulum a, nulla. Praesent porttitor turpis eleifend ante. Morbi sodales.nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed urna. . Duis convallis ultrices nisi. Maecenas non ligula. Nunc nibh est, tincidunt in, placerat sit amet, vestibulum a, nulla. Praesent porttitor turpis eleifend ante. Morbi sodales. Sed augue tortor, sodales id, luctus et, pulvinar ut, eros. Suspendisse vel dolor. Sed quam. Curabitur ut massa vitae eros euismod aliquam. Pellentesque sit amet elit. Vestibulum interdum pellentesque augue. Cras mollis arcu sit amet purus. Donec augue. Nam mollis tortor a elit. Nulla viverra nisl vel mauris. Vivamus sapien. nascetur ridiculus mus. Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et,nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et, semper sed, enim nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed urna. . Duis convallis ultrices nisi. Maecenas non ligula. Nunc nibh est, tincidunt in, placerat sit amet, vestibulum a, nulla. Praesent porttitor turpis eleifend ante. Morbi sodales.nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed urna. . Duis convallis ultrices nisi. Maecenas non ligula. Nunc nibh est, tincidunt in, placerat sit amet, vestibulum a, nulla. Praesent porttitor turpis eleifend ante. Morbi sodales. Sed augue tortor, sodales id, luctus et, pulvinar ut, eros. Suspendisse vel dolor. Sed quam. Curabitur ut massa vitae eros euismod aliquam. Pellentesque sit amet elit. Vestibulum interdum pellentesque augue. Cras mollis arcu sit amet purus. Donec augue. Nam mollis tortor a elit. Nulla viverra nisl vel mauris. Vivamus sapien. nascetur ridiculus mus. Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et,nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et, semper sed, enim Nam justo lorem, aliquam luctus, sodales et, semper sed, enim nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed urna. . Duis convallis ultrices nisi. Maecenas non ligula. Nunc nibh est, tincidunt in, placerat sit amet, vestibulum a, nulla. Praesent porttitor turpis eleifend ante. Morbi sodales.nAenean posuere ante ut neque. Morbi sollicitudin congue felis. Praesent turpis diam, iaculis sed, pharetra non, mollis ac, mauris. Phasellus nisi ipsum, pretium vitae, tempor sed, molestie eu, dui. Duis lacus purus, tristique ut, iaculis cursus, tincidunt vitae, risus. Sed commodo. *** sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed urna. . Duis convallis ultrices nisi. Maecenas non ligula. Nunc nibh est, tincidunt in, placerat sit amet, vestibulum a, nulla. Praesent porttitor turpis eleifend ante. Morbi sodales.");

// 向文檔添加文本
box.Paragraphs.Add(text2);
page.Paragraphs.Add(box);

// 保存 PDF 文檔
document.Save("Generated-PDF.pdf");
使用 C# 創建多列 pdf

使用 C# 在 PDF 中插入圖像

以下步驟演示瞭如何在 PDF 文檔中插入圖像。

  • 使用 Document 類創建一個新的 PDF 文檔或打開一個現有文檔。
  • 獲取要插入圖像的頁面。
  • 將圖像添加到頁面的圖像中。
  • 使用 GSaveConcatenateMatrixDo 運算符將圖像放置在頁面上。
  • 使用 Document.Save() 方法保存 PDF 文檔。

以下代碼示例展示瞭如何使用 C# 在 PDF 中插入圖像。

// 載入PDF文件 
Document document = new Document();
// 添加頁面
Aspose.Pdf.Page page = document.Pages.Add();

// 設定坐標
int lowerLeftX = 100;
int lowerLeftY = 100;
int upperRightX = 250;
int upperRightY = 250; 

// 將圖像加載到流中
FileStream imageStream = new FileStream("aspose_pdf.png", FileMode.Open);
// 將圖像添加到頁面資源的圖像集合
page.Resources.Images.Add(imageStream);
// 使用 GSave 運算符:此運算符保存當前圖形狀態
page.Contents.Add(new Aspose.Pdf.Operators.GSave());
// 創建矩形和矩陣對象
Aspose.Pdf.Rectangle rectangle = new Aspose.Pdf.Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
//矩陣 matrix = new Matrix(new double[] { rectangle.URX - rectangle.LLX, 0, 0, rectangle.URY - rectangle.LLY, rectangle.LLX, rectangle.LLY });
Matrix matrix = new Matrix(new double[] { 200, 0, 0, 200, 200, 600 });
// 使用 ConcatenateMatrix(連接矩陣)運算符:定義必須如何放置圖像
page.Contents.Add(new Aspose.Pdf.Operators.ConcatenateMatrix(matrix));
XImage ximage = page.Resources.Images[page.Resources.Images.Count];
// 使用 Do 運算符:此運算符繪製圖像
page.Contents.Add(new Aspose.Pdf.Operators.Do(ximage.Name));
// 使用 GRestore 運算符:此運算符恢復圖形狀態
page.Contents.Add(new Aspose.Pdf.Operators.GRestore());

// 保存 PDF 文檔
document.Save("Generated-PDF.pdf");
使用C#在PDF中插入圖像

使用 C# 在 PDF 文件中創建表格

該表用於以行和列的形式組織數據,並提供信息的快速概覽。要在 PDF 文檔中創建表格,請按照以下步驟操作。

  • 創建 Document 類的對像以創建新的 PDF 或加載現有的 PDF。
  • 訪問要在其中創建表的頁面。
  • 創建 Table 類的實例。
  • 使用 BorderInfo 類設置表格的邊框和單元格的邊框。
  • 創建一個新的 Row 並將其添加到 Table.Rows 集合。
  • 將單元格添加到 Row.Cells 集合。
  • 使用 Page.Paragraphs.Add() 方法將表格添加到頁面。
  • 使用 Document.Save() 方法保存 PDF 文檔。

以下代碼示例展示瞭如何使用 C# 在 PDF 中創建表格。

// 載入PDF文件 
Document document = new Document();
// 添加頁面
Aspose.Pdf.Page page = document.Pages.Add();

// 初始化 Table 的新實例
Aspose.Pdf.Table table = new Aspose.Pdf.Table();
// 將表格邊框顏色設置為 LightGray
table.Border = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));
// 設置表格單元格的邊框
table.DefaultCellBorder = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));
// 創建一個循環以添加 10 行
for (int row_count = 1; row_count < 10; row_count++)
{
	// 向表中添加行
	Aspose.Pdf.Row row = table.Rows.Add();
	// 添加表格單元格
	row.Cells.Add("Column (" + row_count + ", 1)");
	row.Cells.Add("Column (" + row_count + ", 2)");
	row.Cells.Add("Column (" + row_count + ", 3)");
}

// 在頁面中添加表格
page.Paragraphs.Add(table);

// 保存 PDF 文檔
document.Save("Generated-PDF.pdf");
使用 C# 在 pdf 中創建表

使用 C# 在 PDF 中添加註釋

註釋是用於提供有關 PDF 文檔內容的附加信息的圖形對象。 PDF 格式支持多種註釋,包括文本、高亮、線條、註釋等。以下是在 PDF 文檔中添加註釋的步驟。

以下代碼示例顯示瞭如何使用 C# 向 PDF 添加註釋。

// 載入PDF文件 
Document document = new Document();
// 添加頁面
Aspose.Pdf.Page page = document.Pages.Add();

// 創建註釋
TextAnnotation textAnnotation = new TextAnnotation(page, new Aspose.Pdf.Rectangle(200, 400, 400, 600));
textAnnotation.Title = "Sample Annotation Title";
textAnnotation.Subject = "Sample Subject";
textAnnotation.State = AnnotationState.Accepted;
textAnnotation.Contents = "Sample contents for the annotation";
textAnnotation.Open = true;
textAnnotation.Icon = TextIcon.Key;

Border border = new Border(textAnnotation);
border.Width = 5;
border.Dash = new Dash(1, 1);
textAnnotation.Border = border;
textAnnotation.Rect = new Aspose.Pdf.Rectangle(200, 400, 400, 600);

// 在頁面的註解集合中添加註解
page.Annotations.Add(textAnnotation);

// 保存 PDF 文檔
document.Save("Generated-PDF.pdf");
使用C#在PDF中添加註釋

您還可以使用鏈接註釋將超鏈接添加到 PDF 文檔。以下是執行此操作的步驟。

下面的代碼示例顯示瞭如何使用 C# 向 PDF 文檔添加超鏈接。

// 載入PDF文件 
Document document = new Document();
// 添加頁面
Aspose.Pdf.Page page = document.Pages.Add();

// 創建鏈接註釋對象
LinkAnnotation link = new LinkAnnotation(page, new Aspose.Pdf.Rectangle(100, 800, 250, 750));
// 為 LinkAnnotation 創建邊框對象
Border border = new Border(link);
// 設置邊框寬度值為 0
border.Width = 1;
// 為 LinkAnnotation 設置邊框
link.Border = border; 

// 將鏈接類型指定為遠程 URI
link.Action = new GoToURIAction("www.aspose.com");
// 將鏈接註釋添加到PDF文件第一頁的註釋集合
page.Annotations.Add(link);

// 為鏈接的文本創建自由文本註釋
FreeTextAnnotation textAnnotation = new FreeTextAnnotation(document.Pages[1], new Aspose.Pdf.Rectangle(100, 800, 250, 750), new DefaultAppearance(Aspose.Pdf.Text.FontRepository.FindFont("TimesNewRoman"), 10, System.Drawing.Color.Blue));
// 要作為自由文本添加的字符串
textAnnotation.Contents = "Link to Aspose website";
// 為自由文本註釋設置邊框
textAnnotation.Border = border;
// 將 FreeText 註釋添加到 Document 第一頁的註釋集合
page.Annotations.Add(textAnnotation);

// 保存 PDF 文檔
document.Save("Generated-PDF.pdf");
使用C#在PDF中添加超鏈接

使用 C# 在 PDF 中創建書籤

書籤用於導航到 PDF 文檔中的特定部分或頁面。 Aspose.PDF for .NET 允許您添加或操作書籤。以下是在 PDF 文檔中創建和添加書籤的步驟。

以下代碼示例顯示瞭如何使用 C# 創建帶有書籤的 PDF 文檔。

// 載入PDF文件 
Document document = new Document();
// 添加頁面
Aspose.Pdf.Page page = document.Pages.Add();

// 創建父書籤對象
OutlineItemCollection pdfOutline = new OutlineItemCollection(document.Outlines);
pdfOutline.Title = "Parent Outline";
pdfOutline.Italic = true;
pdfOutline.Bold = true;

// 創建子書籤對象
OutlineItemCollection pdfChildOutline = new OutlineItemCollection(document.Outlines);
pdfChildOutline.Title = "Child Outline";
pdfChildOutline.Italic = true;
pdfChildOutline.Bold = true;

// 在父書籤的集合中添加子書籤
pdfOutline.Add(pdfChildOutline);
// 在文檔的大綱集合中添加父書籤。
document.Outlines.Add(pdfOutline);

// 保存 PDF 文檔
document.Save("Generated-PDF.pdf");
使用 C# 在 PDF 中創建書籤

結論

在本文中,我向您展示瞭如何使用 C# 從頭開始創建 PDF 文件。分步指南和代碼示例演示瞭如何以編程方式在 PDF 文件中添加文本、圖像、表格、註釋、超鏈接和書籤。您可以使用 文檔 探索 Aspose 的 .NET PDF 庫的其他功能。

也可以看看