Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
مجموعة أدوات Adobe Acrobat SDK هي مجموعة من الأدوات التي تساعدك في تطوير البرمجيات التي تتفاعل مع تقنية Acrobat. تحتوي مجموعة الأدوات على ملفات رأس، ومكتبات نوع، وأدوات بسيطة، وأكواد نموذجية، ووثائق.
باستخدام مجموعة أدوات Acrobat SDK، يمكنك تطوير برمجيات تتكامل مع Acrobat وAdobe Reader بعدة طرق:
توفر Aspose.PDF for .NET الكثير من نفس الوظائف، مما يحررك من الاعتماد على أتمتة Adobe Acrobat. يوضح هذا المقال كيفية إنشاء صور مصغرة من مستندات PDF باستخدام أولاً مجموعة أدوات Acrobat SDK ثم Aspose.PDF.
فكر في واجهة برمجة التطبيقات الخاصة بـ Acrobat على أنها تحتوي على طبقتين متميزتين تستخدمان كائنات الاتصال بين التطبيقات (IAC):
نظرًا لأن هدفنا هو تحويل صفحات PDF إلى صور مصغرة، فإننا نركز أكثر على IAC. تحتوي واجهة برمجة التطبيقات IAC على كائنات مثل PDDoc وPDPage وPDAnnot وغيرها، مما يمكّن المستخدم من التعامل مع طبقة المستند القابل للنقل (PD). يقوم نموذج الكود التالي بمسح مجلد وتحويل صفحات PDF إلى صور مصغرة. باستخدام مجموعة أدوات Acrobat SDK، يمكننا أيضًا قراءة بيانات التعريف الخاصة بـ PDF واسترداد عدد الصفحات في المستند.
من أجل إنشاء الصور المصغرة لكل مستند، استخدمنا مجموعة أدوات Adobe Acrobat 7.0 وMicrosoft .NET 2.0 Framework.
تجمع مجموعة أدوات Acrobat مع النسخة الكاملة من Adobe Acrobat مكتبة COM من الكائنات (للأسف، لا تكشف Adobe Reader المجانية عن واجهات COM) التي يمكن استخدامها للتلاعب والوصول إلى معلومات PDF. باستخدام هذه الكائنات COM عبر COM Interop، قم بتحميل مستند PDF، واحصل على الصفحة الأولى وقم بعرض تلك الصفحة على الحافظة. ثم، باستخدام .NET Framework، انسخ هذا إلى صورة نقطية، وقم بتغيير حجم الصورة ودمجها واحفظ النتيجة كملف GIF أو PNG.
بمجرد تثبيت Adobe Acrobat، استخدم regedit.exe وابحث تحت HKEY_CLASSES_ROOT عن إدخال يسمى AcroExch.PDDoc.
السجل يظهر إدخال AcroExch.PDDDoc
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GenerateThumbnailImagesFromPDF()
{
// Acrobat objects
Acrobat.CAcroPDDoc pdfDoc;
Acrobat.CAcroPDPage pdfPage;
Acrobat.CAcroRect pdfRect;
Acrobat.CAcroPoint pdfPoint;
AppSettingsReader appSettings = new AppSettingsReader();
string pdfInputPath = appSettings.GetValue("pdfInputPath", typeof(string)).ToString();
string pngOutputPath = appSettings.GetValue("pngOutputPath", typeof(string)).ToString();
string templatePortraitFile = Application.StartupPath + @"\pdftemplate_portrait.gif";
string templateLandscapeFile = Application.StartupPath + @"\pdftemplate_landscape.gif";
// Get list of files to process from the input path
string[] files = Directory.GetFiles(pdfInputPath, "*.pdf");
for (int n = 0; n < files.Length; n++)
{
string inputFile = files[n];
string outputFile = Path.Combine(pngOutputPath, Path.GetFileNameWithoutExtension(inputFile) + ".png");
// Create PDF document
pdfDoc = (Acrobat.CAcroPDDoc)Microsoft.VisualBasic.Interaction.CreateObject("AcroExch.PDDoc", "");
if (pdfDoc.Open(inputFile) == 0)
{
throw new FileNotFoundException($"Unable to open PDF file: {inputFile}");
}
int pageCount = pdfDoc.GetNumPages();
pdfPage = (Acrobat.CAcroPDPage)pdfDoc.AcquirePage(0);
pdfPoint = (Acrobat.CAcroPoint)pdfPage.GetSize();
pdfRect = (Acrobat.CAcroRect)Microsoft.VisualBasic.Interaction.CreateObject("AcroExch.Rect", "");
pdfRect.Left = 0;
pdfRect.right = pdfPoint.x;
pdfRect.Top = 0;
pdfRect.bottom = pdfPoint.y;
pdfPage.CopyToClipboard(pdfRect, 0, 0, 100);
IDataObject clipboardData = Clipboard.GetDataObject();
if (clipboardData.GetDataPresent(DataFormats.Bitmap))
{
Bitmap pdfBitmap = (Bitmap)clipboardData.GetData(DataFormats.Bitmap);
int thumbnailWidth = 45;
int thumbnailHeight = 59;
string templateFile = pdfPoint.x < pdfPoint.y ? templatePortraitFile : templateLandscapeFile;
if (pdfPoint.x > pdfPoint.y)
{
// Swap width and height for landscape orientation
(thumbnailWidth, thumbnailHeight) = (thumbnailHeight, thumbnailWidth);
}
Bitmap templateBitmap = new Bitmap(templateFile);
Image pdfImage = pdfBitmap.GetThumbnailImage(thumbnailWidth, thumbnailHeight, null, IntPtr.Zero);
Bitmap thumbnailBitmap = new Bitmap(thumbnailWidth + 7, thumbnailHeight + 7, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
templateBitmap.MakeTransparent();
using (Graphics thumbnailGraphics = Graphics.FromImage(thumbnailBitmap))
{
thumbnailGraphics.DrawImage(pdfImage, 2, 2, thumbnailWidth, thumbnailHeight);
thumbnailGraphics.DrawImage(templateBitmap, 0, 0);
thumbnailBitmap.Save(outputFile, System.Drawing.Imaging.ImageFormat.Png);
}
Console.WriteLine("Generated thumbnail: {0}", outputFile);
pdfDoc.Close();
Marshal.ReleaseComObject(pdfPage);
Marshal.ReleaseComObject(pdfRect);
Marshal.ReleaseComObject(pdfDoc);
}
}
}
توفر Aspose.PDF for .NET دعمًا واسعًا للتعامل مع مستندات PDF. كما تدعم القدرة على تحويل صفحات مستندات PDF إلى مجموعة متنوعة من تنسيقات الصور. يمكن تحقيق الوظيفة الموضحة أعلاه بسهولة باستخدام Aspose.PDF for .NET.
تتمتع Aspose.PDF بمزايا مميزة:
إذا كنا بحاجة إلى تحويل صفحات PDF إلى JPEGs، فإن مساحة أسماء Aspose.PDF.Devices توفر فئة تسمى JpegDevice لعرض صفحات PDF كصور JPEG. يرجى إلقاء نظرة على نموذج الكود التالي.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GenerateThumbnailImagesFromPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Retrieve names of all the PDF files in a particular directory
string[] fileEntries = Directory.GetFiles(dataDir, "*.pdf");
// Iterate through all the files entries in array
for (int counter = 0; counter < fileEntries.Length; counter++)
{
// Open PDF document
using (var document = new Aspose.Pdf.Document(fileEntries[counter]))
{
for (int pageCount = 1; pageCount <= document.Pages.Count; pageCount++)
{
using (FileStream imageStream = new FileStream(dataDir + @"\Thumbanils" + counter.ToString() + "_" + pageCount + ".jpg", FileMode.Create))
{
var resolution = new Aspose.Pdf.Devices.Resolution(300);
var jpegDevice = new Aspose.Pdf.Devices.JpegDevice(45, 59, resolution, 100);
// Convert a particular page and save the image to stream
jpegDevice.Process(document.Pages[pageCount], imageStream);
}
}
}
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.