使用 C# REST API 合并 PDF

本简短教程将指导您如何使用 C# REST API 合并 PDF。您将学习如何使用 SDK 通过 C# REST 接口合并所有 PDF。它将解释开发用于合并多个 PDF 文件的应用程序所需的所有步骤。

先决条件

将 PDF 与 C# Low Code API 结合的步骤

  1. 设置用于初始化 PdfApi 类对象的 API 密钥和 SID
  2. 创建 MergeDocuments 对象并提供要合并的 PDF 文件列表
  3. 使用 PdfApi 类中的 UploadFile() 方法上传所有源 PDF 文件
  4. 调用 PutMergeDocuments() 方法将所有 PDF 文件合并为一个目标 PDF 文件
  5. 下载并保存包含所有合并 PDF 文件内容的输出 PDF 文件

这些步骤总结了如何使用 C# REST API 在线合并 PDF。使用 MergeDocuments 类对象创建要合并的 PDF 文件列表,然后使用 PdfApi.UploadFile() 方法将所有这些 PDF 文件上传到云,并调用 PutMergeDocuments() 方法在线合并 PDF 文件。API 调用返回状态 OK,之后您可以调用 DownloadFile 方法来检索输出 PDF 文件。

使用基于 C# .NET 的 API 合并 PDF 文件的代码

using System;
using System.IO;
using Aspose.Pdf.Cloud.Sdk.Api;
using Aspose.Pdf.Cloud.Sdk.Model;
using System.Collections.Generic;
namespace Aspose.PDF.Cloud.Examples.Kb
{
public class PdfTasks
{
public static void SplitPDFFiles()
{
PdfApi pdfApi = new PdfApi("API KEY", "API SID");
String fileName = "sample.pdf";
String format = "pdf";
int from = 1;
int to = 2;
String storage = "";
String folder = "";
try
{
// Upload source file to aspose cloud storage
pdfApi.UploadFile(fileName, new MemoryStream( System.IO.File.ReadAllBytes(fileName)));
// Invoke Aspose.PDF Cloud SDK API to split pdf files
SplitResultResponse apiResponse = pdfApi.PostSplitDocument(fileName, format, from, to, storage, folder);
if (apiResponse.Status.Equals("OK"))
{
// Download created pdf file
foreach(var item in apiResponse.Result.Documents)
{
Stream storageRes = pdfApi.DownloadFile(item.Href);
storageRes.Position = 0;
using (FileStream fileStream = new FileStream(item.Href, FileMode.Create, FileAccess.Write))
{
storageRes.CopyTo(fileStream);
}
}
Console.WriteLine("Split PDF Files, Done!");
Console.ReadKey();
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}
}
public static void MergePDFFiles()
{
PdfApi pdfApi = new PdfApi("API KEY", "API SID");// For merging PDF files
String fileName = "sample-merged.pdf";
String storage = "";
String folder = "";
MergeDocuments body = new MergeDocuments(new List<string> { "sample.pdf", "input.pdf" });
try
{
// Load the input Word file
pdfApi.UploadFile("sample.pdf", new MemoryStream(System.IO.File.ReadAllBytes("sample.pdf")));
pdfApi.UploadFile("input.pdf", new MemoryStream(System.IO.File.ReadAllBytes("input.pdf")));
// Merge the PDF files
DocumentResponse apiResponse = pdfApi.PutMergeDocuments(fileName, body);
if (apiResponse != null && apiResponse.Status.Equals("OK"))
{
// Download created pdf file
Stream storageRes = pdfApi.DownloadFile(fileName);
// Save response stream to a file
storageRes.Position = 0;
using (FileStream fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
storageRes.CopyTo(fileStream);
}
Console.WriteLine("Merge Multiple PDF Files, Done!");
Console.ReadKey();
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}
}
public static void CreatePDF()
{
try
{
PdfApi pdfApi = new PdfApi("2086fd1a0db8175482a26f53c230483e", "fd43bbdc-4e3d-4a75-8847-2138b3ad167e");
DocumentResponse response = pdfApi.PutCreateDocument("newPdfFile");
if (response != null && response.Status.Equals("OK"))
{
Paragraph para = PrepareParagraph("This is first text for new PDF");
pdfApi.PutAddText("newPdfFile", 1, para);
var stream = pdfApi.DownloadFile("newPdfFile", null, null);
using (var fileStream = File.Create("output.pdf"))
{
stream.Seek(0, SeekOrigin.Begin);
stream.CopyTo(fileStream);
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
Console.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}
}
private static Paragraph PrepareParagraph(string text)
{
List<TextLine> textLines = new List<TextLine>();
Segment segment = new Segment(Value: text);
List<Segment> segments = new List<Segment>();
segments.Add(segment);
TextLine textLine = new TextLine(Segments: segments);
textLines.Add(textLine);
Rectangle rectangle = new Rectangle(50.0, 800, 300.0, 850);
Paragraph paragraph = new Paragraph(Lines: textLines, Rectangle: rectangle);
return paragraph;
}
//THIS CODE IS CREATINg INVALID PDF FILE
public static void CreatePDFFromXML()
{
// For complete examples and data files, please go to https://github.com/aspose-pdf/Aspose.Pdf-for-Cloud
PdfApi pdfApi = new PdfApi("2086fd1a0db8175482a26f53c230483e", "fd43bbdc-4e3d-4a75-8847-2138b3ad167e");
String fileName = "input_out.pdf";
String templateFile = "sample.xsl";
String dataFile = "sample.xml";
//String templateType = "xml";
String storageRef = "my_xml";
//String folder = "";
try
{
// Upload source file to aspose cloud storage
byte[] templateFileBytes = System.IO.File.ReadAllBytes(templateFile);
MemoryStream templateFileStream = new MemoryStream(templateFileBytes);
byte[] dataFileBytes = System.IO.File.ReadAllBytes(dataFile);
MemoryStream dataFileStream = new MemoryStream(dataFileBytes);
pdfApi.UploadFile(templateFile, templateFileStream);
pdfApi.UploadFile(dataFile, dataFileStream);
// Invoke Aspose.PDF Cloud SDK API to create Pdf from XML
//DocumentResponse apiResponse = pdfApi.PutCreateDocument(fileName, templateFile, dataFile);
AsposeResponse apiResponse = pdfApi.PutXmlInStorageToPdf(fileName, dataFile, xslFilePath: templateFile, storage: "my_xml");
if (apiResponse != null && apiResponse.Status.Equals("OK"))
{
// Download created pdf file
Stream storageRes = pdfApi.DownloadFile(fileName);
// Save response stream to a file
//storageRes.CopyTo(new FileStream("Sample_out.pdf", FileMode.Create, FileAccess.Write));
storageRes.Position = 0;
SaveStreamToFile(storageRes, fileName);
//Console.WriteLine("Create PDF from XML, Done!");
//Console.ReadKey();
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}
}
private static void SaveStreamToFile(Stream sourceStream, string filePath)
{
// Ensure the directory exists
//string directoryPath = Path.GetDirectoryName(filePath);
//if (!Directory.Exists(directoryPath))
//{
// Directory.CreateDirectory(directoryPath);
//}
// Create a FileStream to write the stream to the file
using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
sourceStream.CopyTo(fileStream);
}
}
}
}

此代码教会了我们如何使用 C# REST 接口连接 PDF 文件。在 UploadFile() 方法中使用与 MergeDocuments 对象中的 PDF 文件列表类似的名称。下载生成的 PDF 文件时,请将 Position 参数设置为零,否则您将无法将文件保存在磁盘上。

本文介绍了如何使用基于 C# .NET 的 API 在线合并 PDF 文档。要创建空 PDF 文件,请参阅以下文章:使用 NET REST API 创建 PDF 文档

 简体中文