دمج PDF مع C# REST API

يرشدك هذا البرنامج التعليمي القصير إلى كيفية دمج PDF مع C# REST API. سوف تتعلم كيفية دمج جميع ملفات PDF مع واجهة C# REST باستخدام SDK. وسوف يشرح جميع الخطوات المطلوبة لتطوير التطبيق لدمج ملفات PDF متعددة.

المتطلبات المسبقة

خطوات دمج PDF مع C# Low Code API

  1. قم بتعيين مفتاح API وSID لتهيئة كائن الفئة PdfApi
  2. قم بإنشاء كائن MergeDocuments وقم بتوفير قائمة ملفات PDF التي تريد دمجها
  3. قم بتحميل جميع ملفات PDF المصدر باستخدام طريقة UploadFile() في فئة PdfApi
  4. اتصل بالطريقة PutMergeDocuments() لدمج جميع ملفات PDF في ملف PDF وجهة واحدة
  5. قم بتنزيل وحفظ ملف PDF الناتج الذي يحتوي على محتويات كافة ملفات PDF المدمجة

تلخص هذه الخطوات كيفية دمج PDF عبر الإنترنت مع C# REST API. استخدم كائن فئة MergeDocuments لإنشاء قائمة ملفات PDF التي تريد دمجها، وقم بتحميل جميع ملفات PDF هذه إلى السحابة باستخدام طريقة PdfApi.UploadFile()، واستدعاء طريقة PutMergeDocuments() لدمج ملفات PDF عبر الإنترنت. يقوم استدعاء API بإرجاع الحالة موافق وبعد ذلك يمكنك استدعاء الأسلوب DownloadFile لاسترداد ملف PDF الناتج.

رمز لدمج ملفات PDF مع واجهة برمجة التطبيقات المستندة إلى C# .NET

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);
}
}
}
}

لقد علمنا هذا الرمز كيفية تسلسل ملفات PDF باستخدام واجهة C# REST. استخدم الأسماء المشابهة في أسلوب UploadFile() كما هو مستخدم في قائمة ملفات PDF في كائن MergeDocuments. عندما تقوم بتنزيل ملف PDF الناتج، قم بتعيين معلمة الموضع على صفر وإلا فلن تتمكن من حفظ الملف على القرص.

لقد أوضحت هذه المقالة كيفية دمج مستندات PDF عبر الإنترنت باستخدام واجهة برمجة التطبيقات المستندة إلى C# .NET. لإنشاء ملف PDF فارغ، راجع المقالة التالية: قم بإنشاء مستند PDF باستخدام NET REST API.

 عربي