حدد خيارات العرض عند التحويل إلى PDF
تنسيق PDF هو تنسيق صفحة ثابتة يحظى بشعبية كبيرة بين المستخدمين ويدعمه على نطاق واسع العديد من التطبيقات لأن ملف PDF يبدو المستند كما هو على أي جهاز. لهذا السبب، يعد التحويل إلى PDF ميزة مهمة في Aspose.Words.
PDF هو شكل معقد. مطلوب عدة مراحل من الحسابات في عملية تحويل مستند إلى PDF، بما في ذلك حساب التخطيط. نظرا لأن هذه المراحل تتضمن حسابات معقدة، فهي تستغرق وقتا طويلا. أيضا، تنسيق PDF معقد إلى حد ما في حد ذاته. يحتوي على بنية ملف محددة ونموذج رسومات وتضمين للخط. علاوة على ذلك، فإنه يتميز ببعض وظائف الإخراج المعقدة، مثل علامات بنية المستند والتشفير والتوقيعات الرقمية والنماذج القابلة للتحرير.
محرك تخطيط Aspose.Words يقلد الطريقة التي يعمل بها محرك تخطيط الصفحة Microsoft Word. لذلك، Aspose.Words يجعل PDF وثائق الإخراج تبدو أقرب ما يمكن إلى ما ترون في Microsoft Word. في بعض الأحيان يكون من الضروري تحديد خيارات إضافية، والتي يمكن أن تؤثر على نتيجة حفظ مستند في تنسيق PDF. يمكن تحديد هذه الخيارات باستخدام فئة PdfSaveOptions، التي تحتوي على الخصائص التي تحدد كيفية عرض إخراج PDF.
يتم توفير بعض الأمثلة على استخدام PdfSaveOptions أدناه.
حاليا، يمكنك حفظ إلى PDF 1.7, PDF 2.0, PDF/A-1أ، PDF/A-1ب، PDF/A-2أ، PDF/A-2 ش، و PDF/UA-1 التنسيقات. استخدم التعداد PdfCompliance لتعيين مستوى امتثال المعايير PDF. لاحظ أنه باستخدام تنسيق PDF/A، يكون حجم ملف الإخراج أكبر من حجم ملف PDF العادي.
PdfCompliance.PdfA1a و PdfCompliance.PdfA1b تم وضع علامة على أنها قديمة.
لمزيد من المعلومات حول PDF/A، راجع المقالة التالية، “تعرف على ميزات التحويل إلى PDF/A”.
إنشاء مستند PDF بنماذج قابلة للتعبئة
من الممكن أيضا تصدير النماذج القابلة للتعبئة من مستند Microsoft Word إلى الإخراج PDF، والذي يحتوي على نماذج قابلة للتعبئة بدلا من نص عادي. استخدم خاصية PreserveFormFields لحفظ مستند باسم PDF بنماذج قابلة للتعبئة.
لاحظ أنه على عكس Microsoft Word، يحتوي تنسيق PDF على عدد محدود من الخيارات للنماذج القابلة للتحرير، مثل مربع نص ومربع تحرير وسرد ومربع اختيار. Microsoft Word لديها المزيد من أنواع النماذج، على سبيل المثال، منتقي تاريخ التقويم. بشكل عام، لا يمكن تقليد سلوك Microsoft Word بالكامل في PDF. لذلك، في بعض الحالات المعقدة، قد يختلف إخراج PDF عما تراه في Microsoft Word.
يوضح مثال التعليمات البرمجية أدناه كيفية حفظ مستند باسم PDF مع نماذج قابلة للتعبئة مع ضغط جبيغ المحدد والجودة:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
auto doc = MakeObject<Document>(MyDir + u"Rendering.docx"); | |
auto saveOptions = MakeObject<PdfSaveOptions>(); | |
saveOptions->set_ImageCompression(PdfImageCompression::Jpeg); | |
saveOptions->set_PreserveFormFields(true); | |
doc->Save(ArtifactsDir + u"WorkingWithPdfSaveOptions.PdfImageCompression.pdf", saveOptions); | |
auto saveOptions17 = MakeObject<PdfSaveOptions>(); | |
saveOptions17->set_Compliance(PdfCompliance::Pdf17); | |
saveOptions17->set_ImageCompression(PdfImageCompression::Jpeg); | |
saveOptions17->set_JpegQuality(100); | |
saveOptions17->set_ImageColorSpaceExportMode(PdfImageColorSpaceExportMode::SimpleCmyk); | |
doc->Save(ArtifactsDir + u"WorkingWithPdfSaveOptions.PdfImageCompression_17.pdf", saveOptions17); |
تصدير هيكل المستند والخصائص المخصصة
تمكنك خاصية ExportDocumentStructure من تصدير بنية المستند إلى إخراج PDF.
PDF توفر مرافق الهيكل المنطقي آلية لدمج المعلومات، فيما يتعلق بهيكل محتوى المستند، في ملف PDF. Aspose.Words يحتفظ بمعلومات حول الهيكل من مستند Microsoft Word، مثل الفقرات والقوائم والجداول والحواشي السفلية/التعليقات الختامية، إلخ.
يوضح المثال التالي كيفية حفظ مستند بتنسيق PDF، مع الحفاظ على بنية المستند:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Open a document | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Paragraphs.docx"); | |
// Create a PdfSaveOptions object and configure it to preserve the logical structure that's in the input document | |
// The file size will be increased and the structure will be visible in the "Content" navigation pane | |
// of Adobe Acrobat Pro, while editing the .pdf | |
System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(); | |
options->set_ExportDocumentStructure(true); | |
System::String outputPath = outputDataDir + u"PdfSaveOptions.ExportDocumentStructure.pdf"; | |
doc->Save(outputPath, options); |
Aspose.Words يسمح لك أيضا بتصدير خصائص المستندات المخصصة إلى PDF، والتي يتم توضيحها في المثال التالي:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Open a document | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(); | |
// Add a custom document property that doesn't use the name of some built in properties | |
doc->get_CustomDocumentProperties()->Add(u"Company", u"My value"); | |
// Configure the PdfSaveOptions like this will display the properties | |
// in the "Document Properties" menu of Adobe Acrobat Pro | |
System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(); | |
options->set_CustomPropertiesExport(PdfCustomPropertiesExport::Standard); | |
System::String outputPath = outputDataDir + u"PdfSaveOptions.CustomPropertiesExport.pdf"; | |
doc->Save(outputPath, options); |
تصدير الخطوط العريضة من الإشارات المرجعية والعناوين في الإخراج PDF
إذا كنت ترغب في تصدير الإشارات المرجعية كمخططات في الإخراج PDF، يمكنك استخدام الخاصية DefaultBookmarksOutlineLevel. تحدد هذه الخاصية المستوى الافتراضي في مخطط المستند، حيث يتم عرض الإشارات المرجعية Microsoft Word. إذا كان المستند يحتوي على إشارات مرجعية في رأس / تذييل المستند، فيمكنك تعيين الخاصية HeaderFooterBookmarksExportMode إلى First أو All لتحديد كيفية تصديرها في الإخراج PDF. لا يتم تصدير الإشارات المرجعية في الرؤوس/التذييلات عندما تكون قيمة HeaderFooterBookmarksExportMode None.
يوضح مثال الكود أدناه كيفية تصدير الإشارات المرجعية من الرأس/التذييل الأول للقسم:
يظهر الإخراج PDF من هذا المثال أدناه:
عندما يتم تعيين HeaderFooterBookmarksExportMode إلى الأول والمستند يحتوي على رؤوس/تذييلات زوجية وغريبة أو رأس/تذييل مختلف للصفحة الأولى، يتم تصدير الإشارات المرجعية لأول رؤوس/تذييلات فريدة في قسم.
يمكنك أيضا تصدير العناوين في الإخراج PDF، باستخدام خاصية HeadingsOutlineLevels. تحدد هذه الخاصية عدد مستويات العناوين المضمنة في مخطط المستند.
يوضح مثال الكود أدناه كيفية تصدير العناوين بثلاثة مستويات:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Open a document | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Rendering.doc"); | |
System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(); | |
options->get_OutlineOptions()->set_HeadingsOutlineLevels(3); | |
options->get_OutlineOptions()->set_ExpandedOutlineLevels(1); | |
System::String outputPath = outputDataDir + u"PdfSaveOptions.SaveToPdfWithOutline.pdf"; | |
doc->Save(outputPath, options); |
الناتج PDF من هذا المثال موضح أدناه:
اختزال الصور لتقليل حجم المستند
Aspose.Words يوفر القدرة على تقليص الصور من أجل تقليل حجم الإخراج PDF، باستخدام خاصية DownsampleOptions. يتم تمكين الاختزال افتراضيا في الخاصية DownsampleImages.
لاحظ أنه من الممكن أيضا تعيين دقة محددة في خاصية Resolution، أو عتبة دقة في خاصية ResolutionThreshold. في الحالة الثانية، إذا كانت دقة الصورة أقل من قيمة العتبة، فلن يتم تطبيق الاختزال.
يعرض مثال الكود أدناه كيفية تغيير دقة الصور في مستند الإخراج PDF:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Open a document that contains images | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Rendering.doc"); | |
// If we want to convert the document to .pdf, we can use a SaveOptions implementation to customize the saving process | |
System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(); | |
// We can set the output resolution to a different value | |
// The first two images in the input document will be affected by this | |
options->get_DownsampleOptions()->set_Resolution(36); | |
// We can set a minimum threshold for downsampling | |
// This value will prevent the second image in the input document from being downsampled | |
options->get_DownsampleOptions()->set_ResolutionThreshold(128); | |
System::String outputPath = outputDataDir + u"PdfSaveOptions.DownsampleOptions.pdf"; | |
doc->Save(outputPath, options); |
يتم حساب الدقة وفقا لحجم الصورة الحقيقي على الصفحة.
تضمين الخطوط في تنسيق أدوبي PDF
يمكنك Aspose.Words أيضا من التحكم في كيفية تضمين الخطوط في المستندات PDF الناتجة. الخطوط تحتاج إلى أن تكون جزءا لا يتجزأ في أي أدوبي PDF وثيقة لضمان أن الوثيقة يمكن أن تقدم بشكل صحيح على أي جهاز (انظر مزيد من التفاصيل حول تقديم الخط في القسم باستخدام TrueType الخطوط). بشكل افتراضي، يقوم Aspose.Words بتضمين مجموعة فرعية من الخطوط المستخدمة في المستند في PDF الذي تم إنشاؤه. في هذه الحالة، يتم حفظ الحروف الرسومية (الأحرف) المستخدمة في المستند فقط في PDF.
متى تستخدم الخطوط الكاملة ومتى يتم تعيين فرعي
هناك طريقة لتحديد خيار لـ Aspose.Words لتضمين خطوط كاملة. مزيد من التفاصيل، جنبا إلى جنب مع بعض مزايا وعيوب كل إعداد موصوفة في الجدول أدناه.
تضمين وضع الخطوط | المزايا | العيوب |
---|---|---|
Full |
مفيد عندما تريد تحرير الناتج PDF لاحقا عن طريق إضافة النص أو تعديله. يتم تضمين كافة الخطوط، وبالتالي كل رموزا موجودة. | نظرا لأن بعض الخطوط كبيرة (عدة ميغا بايت)، فإن تضمينها بدون تعيين فرعي يمكن أن يؤدي إلى ملفات إخراج كبيرة. |
Subset |
يعد الإعداد الفرعي مفيدا إذا كنت تريد الاحتفاظ بحجم ملف الإخراج أصغر. | لا يمكن للمستخدم إضافة النص أو تحريره بالكامل باستخدام الخط الفرعي في مستند الإخراج PDF. هذا لأنه ليست كل الحروف الرسومية للخط موجودة. إذا تم حفظ عدة PDFs بخطوط فرعية وتجميعها معا، فقد يحتوي المستند PDF المدمج على خط يحتوي على العديد من المجموعات الفرعية غير الضرورية. |
تضمين الخطوط الكاملة في PDF
تمكنك خاصية EmbedFullFonts من تحديد كيفية تضمين Aspose.Words الخطوط في مستند الإخراج PDF.
- لتضمين خطوط كاملة في مستند الإخراج PDF، اضبط EmbedFullFonts على صحيح
- لتعيين الخطوط الفرعية عند الحفظ إلى PDF، اضبط EmbedFullFonts على خطأ
يوضح المثال التالي كيفية تضمين الخطوط الكاملة في الإخراج PDF وثيقة:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Open a Document | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Rendering.doc"); | |
// Aspose.Words embeds full fonts by default when EmbedFullFonts is set to true. The property below can be changed | |
// Each time a document is rendered. | |
System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(); | |
options->set_EmbedFullFonts(true); | |
// The output PDF will be embedded with all fonts found in the document. | |
System::String outputPath = outputDataDir + u"EmbeddedFontsInPDF.EmbedAllFonts_out.pdf"; | |
doc->Save(outputPath, options); |
يوضح المثال التالي كيفية تعيين Aspose.Words إلى مجموعة فرعية من الخطوط في الإخراج PDF:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Open a Document | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Rendering.doc"); | |
// To subset fonts in the output PDF document, simply create new PdfSaveOptions and set EmbedFullFonts to false. | |
System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(); | |
options->set_EmbedFullFonts(false); | |
// The output PDF will contain subsets of the fonts in the document. Only the glyphs used | |
// In the document are included in the PDF fonts. | |
System::String outputPath = outputDataDir + u"EmbeddedFontsInPDF.EmbeddSubsetFonts_out.pdf"; | |
doc->Save(outputPath, options); |
كيفية التحكم في تضمين الخطوط الأساسية والخطوط القياسية Windows
الخطوط الأساسية و Windows الخطوط القياسية هي مجموعات" قياسية " من الخطوط، والتي عادة ما تكون موجودة على الجهاز المستهدف أو يقدمها قارئ المستندات، وبالتالي لا تحتاج إلى تضمينها في الإخراج PDF. من خلال عدم تضمين هذه الخطوط، يمكنك تقليل حجم المستندات المقدمة PDF والحفاظ على قابلية النقل.
Aspose.Words يوفر خيارات لاختيار كيفية تصدير الخطوط إلى PDF. يمكنك اختيار إما لتضمين الخطوط الأساسية والقياسية في الإخراج PDF أو لتخطي تضمينها واستخدام الخطوط الأساسية القياسية PDF أو خطوط النظام على الجهاز المستهدف بدلا من ذلك. يؤدي استخدام أي من هذين الخيارين عادة إلى تقليل حجم الملف بشكل كبير لـ PDF المستندات التي تم إنشاؤها بواسطة Aspose.Words.
- نظرا لأن هذه الخيارات حصرية بشكل متبادل، يجب عليك اختيار واحد فقط في كل مرة.
- عند الحفظ بامتثال PDF/A-1، يجب تضمين جميع الخطوط المستخدمة في مستند PDF. عند الحفظ باستخدام هذا الامتثال، يجب تعيين الخاصية UseCoreFonts على خطأ ويجب تعيين الخاصية FontEmbeddingMode على EmbedAll.
تضمين الخطوط الأساسية
يمكن تمكين خيار تضمين الخطوط الأساسية أو تعطيلها باستخدام خاصية UseCoreFonts
. عند ضبطه على صحيح، لا يتم تضمين خطوط “النوع الحقيقي” الأكثر شيوعا (الخطوط الأساسية 14) في مستند الإخراج PDF:
Arial
Times New Roman
Courier New
Symbol
يتم استبدال هذه الخطوط بالنوع الأساسي المقابل 1 الخطوط، والتي يتم توفيرها بواسطة القارئ عند فتح PDF.
يوضح المثال الموضح أدناه كيفية تعيين Aspose.Words لتجنب تضمين الخطوط الأساسية والسماح للقارئ باستبدالها بخطوط PDF اكتب 1:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// The path to the documents directories. | |
System::String inputDataDir = GetInputDataDir_RenderingAndPrinting(); | |
System::String outputDataDir = GetOutputDataDir_RenderingAndPrinting(); | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Rendering.doc"); | |
// To disable embedding of core fonts and subsuite PDF type 1 fonts set UseCoreFonts to true. | |
System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(); | |
options->set_UseCoreFonts(true); | |
System::String outputPath = outputDataDir + u"EmbeddingWindowsStandardFonts.pdf"; | |
// The output PDF will not be embedded with core fonts such as Arial, Times New Roman etc. | |
doc->Save(outputPath); |
نظرا لأن المشاهدين PDF يوفرون خطوطا أساسية على أي نظام أساسي مدعوم، فإن هذا الخيار مفيد أيضا عند الحاجة إلى قابلية أكبر لنقل المستندات. ومع ذلك، قد تبدو الخطوط الأساسية مختلفة عن خطوط النظام.
تضمين خطوط النظام
يمكن تمكين هذا الخيار أو تعطيله باستخدام خاصية FontEmbeddingMode. عندما يتم تعيين هذه الخاصية إلى EmbedNonstandard، لا يتم تضمين خطوط النوع الحقيقي" أريال “و” تايمز نيو رومان " في مستند PDF. في هذه الحالة، يعتمد عارض العميل على الخطوط المثبتة على نظام تشغيل العميل. عندما يتم تعيين الخاصية FontEmbeddingMode إلى EmbedNone، Aspose.Words لا تقم بتضمين أي خطوط.
يوضح المثال أدناه كيفية تعيين Aspose.Words لتخطي تضمين خطوط أريال وتايمز نيو رومان في مستند PDF:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// Load the document to render. | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Rendering.doc"); | |
// To disable embedding standard windows font use the PdfSaveOptions and set the EmbedStandardWindowsFonts property to false. | |
System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(); | |
options->set_FontEmbeddingMode(PdfFontEmbeddingMode::EmbedNone); | |
// The output PDF will be saved without embedding standard windows fonts. | |
System::String outputPath = outputDataDir + u"EmbeddedFontsInPDF.DisableEmbedWindowsFonts_out.pdf"; | |
doc->Save(outputPath, options); |
يكون هذا الوضع مفيدا للغاية عندما ترغب في عرض مستنداتك على نفس النظام الأساسي، مع الحفاظ على المظهر الدقيق للخطوط في الإخراج PDF.