From cfc0a9ba527b52b7b31a1b10095f60315633ae09 Mon Sep 17 00:00:00 2001 From: Muhammad Adil Date: Mon, 21 Sep 2026 22:15:34 +0000 Subject: [PATCH] Add 1 pdf net tutorials Categories: document-manipulation Source: AI Search API Tutorials: - How to save modified PDF with Aspose.Pdf and add transparency Auto-generated by Professionalize.Tutorials Agent --- .../net/document-manipulation/_index.md | 5 +- .../_index.md | 241 +++++++++++++++++ .../net/document-manipulation/_index.md | 5 +- .../_index.md | 239 +++++++++++++++++ pdf/czech/net/document-manipulation/_index.md | 7 +- .../_index.md | 241 +++++++++++++++++ pdf/dutch/net/document-manipulation/_index.md | 7 +- .../_index.md | 243 +++++++++++++++++ .../net/document-manipulation/_index.md | 3 + .../_index.md | 245 +++++++++++++++++ .../og-image.png | Bin 0 -> 45815 bytes .../net/document-manipulation/_index.md | 4 +- .../_index.md | 248 ++++++++++++++++++ .../net/document-manipulation/_index.md | 5 +- .../_index.md | 246 +++++++++++++++++ pdf/greek/net/document-manipulation/_index.md | 15 +- .../_index.md | 244 +++++++++++++++++ pdf/hindi/net/document-manipulation/_index.md | 6 +- .../_index.md | 230 ++++++++++++++++ .../net/document-manipulation/_index.md | 4 +- .../_index.md | 241 +++++++++++++++++ .../net/document-manipulation/_index.md | 5 +- .../_index.md | 247 +++++++++++++++++ .../net/document-manipulation/_index.md | 4 +- .../_index.md | 246 +++++++++++++++++ .../net/document-manipulation/_index.md | 4 +- .../_index.md | 244 +++++++++++++++++ .../net/document-manipulation/_index.md | 5 +- .../_index.md | 240 +++++++++++++++++ .../net/document-manipulation/_index.md | 6 +- .../_index.md | 243 +++++++++++++++++ .../net/document-manipulation/_index.md | 3 + .../_index.md | 243 +++++++++++++++++ .../net/document-manipulation/_index.md | 6 +- .../_index.md | 244 +++++++++++++++++ .../net/document-manipulation/_index.md | 7 +- .../_index.md | 244 +++++++++++++++++ .../net/document-manipulation/_index.md | 5 +- .../_index.md | 242 +++++++++++++++++ .../net/document-manipulation/_index.md | 2 + .../_index.md | 243 +++++++++++++++++ pdf/thai/net/document-manipulation/_index.md | 121 +-------- .../_index.md | 243 +++++++++++++++++ .../net/document-manipulation/_index.md | 11 +- .../_index.md | 246 +++++++++++++++++ .../net/document-manipulation/_index.md | 3 + .../_index.md | 244 +++++++++++++++++ 47 files changed, 5686 insertions(+), 144 deletions(-) create mode 100644 pdf/arabic/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/chinese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/czech/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/dutch/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/english/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/english/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/og-image.png create mode 100644 pdf/french/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/german/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/greek/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/hindi/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/hongkong/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/hungarian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/indonesian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/italian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/japanese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/korean/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/polish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/portuguese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/russian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/spanish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/swedish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/thai/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/turkish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md create mode 100644 pdf/vietnamese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md diff --git a/pdf/arabic/net/document-manipulation/_index.md b/pdf/arabic/net/document-manipulation/_index.md index aa8d9b87ed..57c55239b2 100644 --- a/pdf/arabic/net/document-manipulation/_index.md +++ b/pdf/arabic/net/document-manipulation/_index.md @@ -311,13 +311,16 @@ ### [الدليل الشامل لمعالجة ملفات PDF باستخدام Aspose.PDF .NET: تحميل وحفظ واستبدال النص بكفاءة](./master-pdf-manipulation-aspose-pdf-net/) تعلّم كيفية إتقان معالجة ملفات PDF باستخدام Aspose.PDF .NET. يغطي هذا الدليل تحميل النصوص وحفظها واستبدالها في ملفات PDF، وهو مثالي للمطورين الباحثين عن الكفاءة. -### [كيفية تعديل PDF في C# – إخفاء النص وإزالة المحتوى](./how-to-redact-pdf-in-c-hide-text-pdf-remove-content-pdf/) +### [كيفية تعديل PDF في C# – إخفاء النص وإزالة المحتوى](./how-to-redact-pdf-in-c-hide-text-pdf-remove-content/) ### [كيفية إصلاح ملفات PDF في C# – إصلاح ملفات PDF التالفة بسرعة](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) تعرف على طريقة إصلاح ملفات PDF التالفة بسرعة باستخدام C# ومكتبة Aspose.PDF. ### [كيفية إخفاء محتوى PDF في C# باستخدام Aspose PDF – دليل شامل](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +### [كيفية حفظ ملف PDF معدل باستخدام Aspose.Pdf وإضافة الشفافية](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +تعرف على طريقة حفظ ملفات PDF المعدلة وإضافة تأثير الشفافية باستخدام Aspose.Pdf في .NET. + ## موارد إضافية - [توثيق Aspose.PDF للشبكة](https://docs.aspose.com/pdf/net/) diff --git a/pdf/arabic/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/arabic/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..d891c643d5 --- /dev/null +++ b/pdf/arabic/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-09-21 +description: احفظ ملف PDF المعدل باستخدام Aspose.Pdf في C#. تعلم كيفية تعديل موارد + PDF وإضافة شفافية PDF في مثال كامل وقابل للتنفيذ. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: ar +lastmod: 2026-09-21 +og_description: احفظ ملف PDF المعدل باستخدام Aspose.Pdf في C#. يوضح هذا الدليل كيفية + تعديل موارد PDF وإضافة شفافية PDF لمعالجة المستندات بشكل احترافي. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: حفظ ملف PDF المعدل باستخدام Aspose.Pdf – إضافة الشفافية خطوة بخطوة +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: كيفية حفظ ملف PDF المعدل باستخدام Aspose.Pdf وإضافة الشفافية +url: /ar/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية حفظ PDF المعدل باستخدام Aspose.Pdf وإضافة الشفافية + +إذا كنت بحاجة إلى **حفظ PDF المعدل** بعد تغيير موارده الداخلية، يقدم هذا الدليل حلاً كاملاً. ستتعلم كيفية تعديل موارد PDF، وإدراج قاموس حالة رسومية مخصص، وإضافة شفافية PDF باستخدام Aspose.Pdf لـ .NET. + +يغطي الدليل كل خطوة من تحميل ملف المصدر إلى التحقق من النتيجة. لا توجد مراجع خارجية مطلوبة؛ الكود يعمل كما هو في أي مشروع .NET 6+ مع تثبيت مكتبة Aspose.Pdf. + +## المتطلبات المسبقة + +* .NET 6 SDK أو أحدث مثبت +* ترخيص صالح لـ Aspose.Pdf for .NET (أو مفتاح تقييم مؤقت) +* ملف PDF إدخال يُدعى **input.pdf** موجود في مجلد تتحكم فيه +* معرفة أساسية بـ C# ومفاهيم PDF مثل الموارد وحالات الرسومات + +هذه العناصر تضمن تشغيل العينة دون مشاكل في الأذونات أو التوافق. + +## كيفية حفظ PDF المعدل بعد تعديل الموارد + +الكود التالي ينفّذ سير العمل بالكامل: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### لماذا كل خطوة مهمة + +* **Step 1** يعزل مسار المجلد بحيث يمكنك إعادة استخدام المتغير نفسه للتحميل والحفظ. +* **Step 2** يفتح ملف المصدر داخل كتلة `using`، مما يضمن تحرير جميع الموارد الأصلية. +* **Step 3** يصل إلى قاموس **Resources** للصفحة، الذي يخزن كائنات مثل الخطوط، الصور، وحالات الرسومات. تعديل هذا القاموس هو جوهر **edit pdf resources**. +* **Step 4** يبني إدخال **ExtGState** جديد. المفاتيح `CA`، `ca`، و`BM` تتحكم في شفافية الخط، شفافية التعبئة، ووضع المزج على التوالي—وهذا هو الطريقة التي تقوم بها بـ **add pdf transparency**. +* **Step 5** يسجل حالة الرسوم الجديدة تحت الاسم `GS0`. أي محتوى يشير إلى `GS0` سيورث إعدادات الشفافية. +* **Step 6** (اختياري) يوضح حالة استخدام عملية: مستطيل مرسوم باستخدام حالة الرسوم المخصصة. هذا الاختبار البصري يؤكد أن الشفافية تعمل. +* **Step 7** يكتب التغييرات إلى **output.pdf**، محققًا الهدف الأساسي وهو **save modified pdf**. + +### النتيجة المتوقعة + +* يظهر `output.pdf` في نفس المجلد مع ملف المصدر. +* الصفحة الأولى تحتوي على مستطيل شبه شفاف (شفافية تعبئة 50 %، شفافية خط 100 %). +* فتح الملف في Adobe Acrobat أو أي عارض PDF يظهر المستطيل مدمجًا مع الخلفية، مؤكدًا أن خطوة **add pdf transparency** نجحت. + +يمكنك فتح الملف بأي قارئ PDF للتحقق من التأثير البصري. + +## تعديل موارد PDF باستخدام Aspose.Pdf + +عند الحاجة لتغيير كائنات PDF منخفضة المستوى، يكون قاموس **Resources** هو نقطة الدخول. تشمل السيناريوهات الشائعة: + +| السيناريو | كيفية تحقيقه باستخدام Aspose.Pdf | +|-----------|-----------------------------------| +| استبدال خط موجود | استرجاع `Resources["Font"]`، تعديل الإدخال | +| إضافة كائن صورة XObject جديد | إنشاء `CosPdfStream`، وإضافته إلى `Resources["XObject"]` | +| تغيير عرض الخط لمسار محدد | إضافة `ExtGState` مخصص مع معامل `/LW` | + +الكود أعلاه يوضح النمط: جلب `DictionaryEditor`، تحديد القاموس الفرعي المستهدف (مثل `ExtGState`)، ثم إضافة أو استبدال الإدخالات. هذا النهج هو الطريقة الموصى بها لتعديل **edit pdf resources** بأمان. + +## إضافة شفافية PDF (وضع المزج، ألفا) بالتفصيل + +الشفافية في PDF تُعرّف بواسطة كائن **ExtGState**. المفاتيح الثلاثة المستخدمة في المثال هي: + +| المفتاح | المعنى | القيم النموذجية | +|---------|--------|-----------------| +| `CA` | شفافية الخط (0 = شفاف، 1 = معتم) | `0.0` – `1.0` | +| `ca` | شفافية التعبئة (نفس نطاق `CA`) | `0.0` – `1.0` | +| `BM` | وضع المزج – كيف تتجمع ألوان المصدر والوجهة | `"Normal"`, `"Multiply"`, `"Screen"` إلخ. | + +يمكنك تجربة أوضاع مزج مختلفة لتحقيق تأثيرات مثل soft‑light أو overlay. ببساطة استبدل `"Normal"` بقيمة `CosPdfName` أخرى. يمكن إعادة استخدام حالة الرسوم عبر صفحات أو كائنات متعددة بالإشارة إلى نفس الاسم (`GS0` في المثال). + +## الأخطاء الشائعة والنصائح الاحترافية + +| المشكلة | لماذا يحدث | الحل | +|---------|------------|------| +| عدم وجود إدخال `ExtGState` | بعض ملفات PDF تحذف القاموس حتى يتم إضافة حالة رسومية | استخدم `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` قبل الإضافة | +| تظهر الشفافية غير مفعلة في عارضات قديمة | العارض لا يدعم شفافية PDF 1.4+ | تأكد من أن نسخة PDF للملف الناتج هي على الأقل 1.4 (`pdfDocument.Version = 1.4`) | +| تصادم أسماء مع حالات رسومية موجودة | استخدام اسم موجود مسبقًا يكتب فوقه دون قصد | اختر اسمًا فريدًا (مثل `"GS0"`, `"GS_CustomAlpha"`) أو تحقق من `extGStateDict.ContainsKey(name)` أولاً | + +تطبيق هذه النصائح يقلل من وقت التصحيح ويُنتج نتائج موثوقة. + +## ملخص المثال الكامل العامل + +فيما يلي البرنامج الكامل بدون تعليقات توضيحية، جاهز للنسخ واللصق في مشروع وحدة تحكم: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +تشغيل هذا البرنامج ينشئ **output.pdf** الذي يحتوي على المستطيل الشفاف ويحافظ على جميع المحتويات الأخرى من **input.pdf**. + +## الخلاصة + +أنت الآن تعرف كيف **save modified PDF** بعد إجراء تغييرات منخفضة المستوى، وكيف **edit PDF resources** باستخدام `DictionaryEditor` من Aspose.Pdf، وكيف **add PDF transparency** عبر قاموس حالة رسومية مخصص. تمنحك هذه التقنيات تحكمًا دقيقًا في مظهر PDF وتُطبق على مهام مثل إضافة العلامات المائية، وضع صور فوق بعضها، أو إنشاء تأثيرات بصرية معقدة. + +بعد ذلك، قد تستكشف: + +* إضافة حالات رسومية متعددة لمستويات شفافية مختلفة (تغيّرات `add pdf transparency`) +* تحديث أنواع موارد أخرى مثل الخطوط أو XObjects (`edit pdf resources` للصور) +* دمج عدة ملفات PDF مع الحفاظ على حالات الرسوم المخصصة (`save modified pdf` عبر المستندات) + +لا تتردد في تجربة أوضاع المزج، قيم الشفافية، ونطاقات الموارد لتناسب سير عمل معالجة المستندات الخاص بك. برمجة سعيدة! + +## ما الذي يجب أن تتعلمه بعد ذلك؟ + +الدروس التالية تغطي مواضيع ذات صلة وثيقة تبني على التقنيات الموضحة في هذا الدليل. كل مورد يتضمن أمثلة كود كاملة مع شروحات خطوة بخطوة لمساعدتك على إتقان ميزات API إضافية واستكشاف أساليب تنفيذ بديلة في مشاريعك. + +- [إضافة شفافية إلى PDF باستخدام Aspose – دليل C# كامل](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [إضافة شفافية إلى PDF باستخدام Aspose PDF في C# – دليل خطوة بخطوة](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [كيفية حفظ PDF باستخدام Aspose – دليل تحويل C# كامل](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/chinese/net/document-manipulation/_index.md b/pdf/chinese/net/document-manipulation/_index.md index cae39ba178..7900f11c6b 100644 --- a/pdf/chinese/net/document-manipulation/_index.md +++ b/pdf/chinese/net/document-manipulation/_index.md @@ -319,6 +319,9 @@ Aspose.PDF Net 代码教程 ### [如何在 C# 中修复 PDF – 快速修复损坏的 PDF 文件](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) 了解如何使用 Aspose.PDF for .NET 在 C# 中快速修复损坏的 PDF 文件,步骤简明易懂。 +### [使用 Aspose.PDF 保存已修改的 PDF 并添加透明度](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +了解如何使用 Aspose.PDF 保存已修改的 PDF 文档并为内容添加透明效果,实现更灵活的文档呈现。 + ## 其他资源 - [Aspose.PDF 用于网络文档](https://docs.aspose.com/pdf/net/) @@ -333,4 +336,4 @@ Aspose.PDF Net 代码教程 {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/chinese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/chinese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..49ae2f6d09 --- /dev/null +++ b/pdf/chinese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-09-21 +description: 使用 Aspose.Pdf 在 C# 中保存修改后的 PDF。学习编辑 PDF 资源并在完整可运行的示例中添加 PDF 透明度。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: zh +lastmod: 2026-09-21 +og_description: 使用 Aspose.Pdf 在 C# 中保存已修改的 PDF。本指南展示了如何编辑 PDF 资源并添加 PDF 透明度,以实现专业的文档处理。 +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: 使用 Aspose.Pdf 保存修改后的 PDF – 逐步添加透明度 +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: 如何使用 Aspose.Pdf 保存修改后的 PDF 并添加透明度 +url: /zh/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Aspose.Pdf 保存修改后的 PDF 并添加透明度 + +如果您需要在更改内部资源后**保存修改后的 PDF**,本指南提供完整的解决方案。您将学习如何编辑 PDF 资源、插入自定义 graphic‑state 字典,以及使用 Aspose.Pdf for .NET 添加 PDF 透明度。 + +本教程涵盖从加载源文件到验证输出的每一步。无需外部引用;代码可直接在任何已安装 Aspose.Pdf 库的 .NET 6+ 项目中运行。 + +## 前提条件 + +* .NET 6 SDK 或更高版本已安装 +* 有效的 Aspose.Pdf for .NET 许可证(或临时评估密钥) +* 一个名为 **input.pdf** 的输入 PDF,放置在您可控制的文件夹中 +* 具备 C# 基础以及 PDF 概念(如资源和 graphic states) + +这些项目确保示例在没有权限或兼容性问题的情况下运行。 + +## 编辑资源后如何保存修改后的 PDF + +以下代码执行整个工作流: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### 每一步的重要性 + +* **Step 1** 隔离文件夹路径,以便您可以在加载和保存时复用同一变量。 +* **Step 2** 在 `using` 块中打开源文件,确保所有本机资源得到释放。 +* **Step 3** 访问页面的 **Resources** 字典,该字典存储字体、图像和 graphic states 等对象。编辑此字典是 **edit pdf resources** 的核心。 +* **Step 4** 构建一个新的 **ExtGState** 条目。键 `CA`、`ca` 和 `BM` 分别控制描边不透明度、填充不透明度和混合模式——这就是 **add pdf transparency** 的实现方式。 +* **Step 5** 使用名称 `GS0` 注册新的 graphic state。任何引用 `GS0` 的内容都将继承透明度设置。 +* **Step 6**(可选)展示一个实际用例:使用自定义 graphic state 绘制的矩形。此视觉测试确认透明度生效。 +* **Step 7** 将更改写入 **output.pdf**,实现 **save modified pdf** 的主要目标。 + +### 预期结果 + +* `output.pdf` 出现在与源文件相同的文件夹中。 +* 第一页包含一个半透明矩形(填充不透明度 50%,描边不透明度 100%)。 +* 在 Adobe Acrobat 或任何 PDF 查看器中打开文件时,矩形会与背景混合,确认 **add pdf transparency** 步骤成功。 + +您可以使用任何 PDF 阅读器打开文件以验证视觉效果。 + +## 使用 Aspose.Pdf 编辑 PDF 资源 + +当您需要更改低层次 PDF 对象时,**Resources** 字典是入口点。常见场景包括: + +| 场景 | 使用 Aspose.Pdf 实现的方法 | +|------|---------------------------| +| 替换已有字体 | Retrieve `Resources["Font"]`, modify the entry | +| 添加新的图像 XObject | Create a `CosPdfStream`, add to `Resources["XObject"]` | +| 更改特定路径的线宽 | Add a custom `ExtGState` with `/LW` parameter | + +上面的代码演示了该模式:获取 `DictionaryEditor`,定位目标子字典(例如 `ExtGState`),然后添加或替换条目。这种方法是安全 **edit pdf resources** 的推荐方式。 + +## 详细说明添加 PDF 透明度(混合模式、alpha) + +PDF 中的透明度由 **ExtGState** 对象定义。示例中使用的三个键如下: + +| 键 | 含义 | 典型值 | +|----|------|--------| +| `CA` | 描边不透明度(0 = 透明,1 = 不透明) | `0.0` – `1.0` | +| `ca` | 填充不透明度(范围同 `CA`) | `0.0` – `1.0` | +| `BM` | 混合模式——源颜色与目标颜色的组合方式 | `"Normal"`、`"Multiply"`、`"Screen"` 等 | + +您可以尝试不同的混合模式以实现诸如 soft‑light 或 overlay 等效果。只需将 `"Normal"` 替换为其他 `CosPdfName` 值。通过引用相同的名称(示例中的 `GS0`),该 graphic state 可在多个页面或对象之间复用。 + +## 常见陷阱与专业技巧 + +| 问题 | 产生原因 | 解决方案 | +|------|----------|----------| +| `ExtGState` 条目不存在 | 某些 PDF 在添加 graphic state 之前会省略该字典 | 在添加之前使用 `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` | +| 在旧版查看器中透明度被忽略 | 查看器不支持 PDF 1.4+ 的透明度 | 确保输出文件的 PDF 版本至少为 1.4(`pdfDocument.Version = 1.4`) | +| 与已有 graphic state 名称冲突 | 使用已存在的名称会意外覆盖 | 选择唯一名称(例如 `"GS0"`、`"GS_CustomAlpha"`)或先检查 `extGStateDict.ContainsKey(name)` | + +应用这些技巧可减少调试时间并产生可靠的结果。 + +## 完整工作示例回顾 + +以下是完整的程序代码(不含解释性注释),可直接复制粘贴到控制台项目中: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +运行此程序会生成包含透明矩形且保留 **input.pdf** 中所有其他内容的 **output.pdf**。 + +## 结论 + +现在,您已经了解如何在进行低层次更改后**save modified PDF**,如何使用 Aspose.Pdf 的 `DictionaryEditor` **edit PDF resources**,以及如何通过自定义 graphic‑state 字典 **add PDF transparency**。这些技术让您对 PDF 外观拥有细粒度的控制,适用于水印、叠加图像或创建复杂视觉效果等任务。 + +接下来,您可以探索: + +* 为不同不透明度级别添加多个 graphic state(`add pdf transparency` 的变体) +* 更新其他资源类型,如字体或 XObject(针对图像的 `edit pdf resources`) +* 合并多个 PDF 并保留自定义 graphic state(跨文档的 `save modified pdf`) + +欢迎尝试不同的混合模式、不透明度值和资源范围,以适应您的特定文档处理工作流。祝编码愉快! + +## 接下来您应该学习什么? + +以下教程涵盖与本指南技术密切相关的主题。每个资源均包含完整的可运行代码示例和逐步说明,帮助您掌握更多 API 功能并在项目中探索替代实现方案。 + +- [使用 Aspose 为 PDF 添加透明度 – 完整 C# 指南](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [使用 Aspose PDF 在 C# 中为 PDF 添加透明度 – 步骤指南](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [如何使用 Aspose 保存 PDF – 完整 C# 转换指南](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/czech/net/document-manipulation/_index.md b/pdf/czech/net/document-manipulation/_index.md index 9d2b9b4c78..58ea3f4af5 100644 --- a/pdf/czech/net/document-manipulation/_index.md +++ b/pdf/czech/net/document-manipulation/_index.md @@ -169,7 +169,7 @@ Naučte se, jak rozdělit stránky PDF pomocí Aspose.PDF pro .NET s tímto komp ### [Jak oříznout bílé místo z PDF pomocí Aspose.PDF pro .NET: Komplexní průvodce](./trim-white-space-aspose-pdf-net/) Naučte se, jak efektivně ořezávat bílé prostory z PDF dokumentů pomocí Aspose.PDF pro .NET. Tato příručka se zabývá nastavením, technikami a tipy pro optimalizaci. -### [Jak aktualizovat odkazy v PDF souborech pomocí Aspose.PDF pro .NET: Komplexní průvodce](./update-links-pdfs-aspose-pdf-dotnet/) +### [Jak aktualizovat odkazy v PDF souborech pomocí Aspose.PDF pro .NET: Kompletní průvodce](./update-links-pdfs-aspose-pdf-dotnet/) Naučte se, jak programově aktualizovat odkazy v souborech PDF pomocí Aspose.PDF pro .NET. Automatizujte aktualizace odkazů efektivně s tímto podrobným návodem. ### [Jak aktualizovat barvu textu odkazu PDF pomocí Aspose.PDF .NET: Kompletní průvodce](./update-pdf-link-text-color-aspose-net/) @@ -283,6 +283,9 @@ Naučte se, jak zvládnout manipulaci s PDF pomocí Aspose.PDF pro .NET. Tato p ### [Jak opravit PDF v C# – rychle opravit poškozené PDF soubory](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) Naučte se, jak rychle opravit poškozené PDF soubory v C# pomocí Aspose.PDF .NET. +### [Jak uložit upravený PDF pomocí Aspose.Pdf a přidat průhlednost](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Naučte se, jak uložit upravený PDF soubor a aplikovat průhlednost pomocí Aspose.PDF pro .NET. + ## Další zdroje ### [Jak odstranit stránky z PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./delete-pdf-pages-aspose-net/) Naučte se, jak snadno odstranit konkrétní stránky z PDF dokumentu pomocí Aspose.PDF pro .NET. Tato podrobná příručka zahrnuje nastavení, implementaci a osvědčené postupy. @@ -326,4 +329,4 @@ Naučte se, jak pomocí Aspose PDF v C# provádět redakci PDF, odstraňovat cit {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/czech/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/czech/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..9402e70b7a --- /dev/null +++ b/pdf/czech/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-09-21 +description: Uložte upravený PDF pomocí Aspose.Pdf v C#. Naučte se upravovat zdroje + PDF a přidávat průhlednost PDF v kompletním, spustitelném příkladu. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: cs +lastmod: 2026-09-21 +og_description: Uložte upravený PDF pomocí Aspose.Pdf v C#. Tento průvodce ukazuje, + jak upravit zdroje PDF a přidat průhlednost PDF pro profesionální zpracování dokumentů. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Uložte upravený PDF pomocí Aspose.Pdf – přidejte průhlednost krok za krokem +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Jak uložit upravený PDF pomocí Aspose.Pdf a přidat průhlednost +url: /cs/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak uložit upravený PDF pomocí Aspose.Pdf a přidat průhlednost + +Pokud potřebujete **uložit upravený PDF** po změně jeho vnitřních zdrojů, tento návod poskytuje kompletní řešení. Naučíte se, jak upravit PDF zdroje, vložit vlastní slovník grafického stavu a přidat průhlednost PDF pomocí Aspose.Pdf pro .NET. + +Tutoriál pokrývá každý krok od načtení zdrojového souboru až po ověření výstupu. Nejsou potřeba žádné externí odkazy; kód běží tak, jak je, v jakémkoli projektu .NET 6+ s nainstalovanou knihovnou Aspose.Pdf. + +## Požadavky + +* .NET 6 SDK nebo novější nainstalovaný +* Platná licence Aspose.Pdf pro .NET (nebo dočasný evaluační klíč) +* Vstupní PDF pojmenovaný **input.pdf** umístěný ve složce, kterou ovládáte +* Základní znalosti C# a konceptů PDF, jako jsou zdroje a grafické stavy + +Tyto položky zajišťují, že ukázkový kód běží bez problémů s oprávněními nebo kompatibilitou. + +## Jak uložit upravený PDF po úpravě zdrojů + +Následující kód provádí celý pracovní postup: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Proč je každý krok důležitý + +* **Step 1** izoluje cestu ke složce, takže můžete znovu použít stejnou proměnnou pro načítání i ukládání. +* **Step 2** otevře zdrojový soubor v bloku `using`, což zaručuje uvolnění všech nativních zdrojů. +* **Step 3** přistupuje k slovníku **Resources** stránky, který ukládá objekty jako písma, obrázky a grafické stavy. Úprava tohoto slovníku je jádrem **edit pdf resources**. +* **Step 4** vytvoří nový záznam **ExtGState**. Klíče `CA`, `ca` a `BM` řídí průhlednost tahů, průhlednost výplně a režim prolnutí – takto **add pdf transparency**. +* **Step 5** zaregistruje nový grafický stav pod názvem `GS0`. Jakýkoli obsah, který odkazuje na `GS0`, zdědí nastavení průhlednosti. +* **Step 6** (volitelné) ukazuje praktický případ použití: obdélník nakreslený s vlastním grafickým stavem. Tento vizuální test potvrzuje, že průhlednost funguje. +* **Step 7** zapíše změny do **output.pdf**, čímž splní hlavní cíl **save modified pdf**. + +### Očekávaný výsledek + +* `output.pdf` se objeví ve stejné složce jako zdrojový soubor. +* První stránka obsahuje poloprůhledný obdélník (50 % průhlednost výplně, 100 % průhlednost tahu). +* Otevření souboru v Adobe Acrobat nebo jakémkoli PDF prohlížeči zobrazí obdélník sloučený s pozadím, což potvrzuje úspěšnost kroku **add pdf transparency**. + +Soubor můžete otevřít v libovolném PDF čtečce a ověřit vizuální efekt. + +## Úprava PDF zdrojů pomocí Aspose.Pdf + +Když potřebujete měnit nízkoúrovňové PDF objekty, vstupním bodem je slovník **Resources**. Běžné scénáře zahrnují: + +| Scénář | Jak to dosáhnout s Aspose.Pdf | +|--------|------------------------------| +| Nahrazení existujícího písma | Získat `Resources["Font"]`, upravit záznam | +| Přidání nového obrázku XObject | Vytvořit `CosPdfStream`, přidat do `Resources["XObject"]` | +| Změna šířky čáry pro konkrétní cestu | Přidat vlastní `ExtGState` s parametrem `/LW` | + +Výše uvedený kód demonstruje vzor: načíst `DictionaryEditor`, najít cílový podslovník (např. `ExtGState`) a poté přidat nebo nahradit položky. Tento přístup je doporučený způsob, jak bezpečně **edit pdf resources**. + +## Přidání průhlednosti PDF (režim prolnutí, alfa) podrobně + +Průhlednost v PDF je definována objektem **ExtGState**. Ve příkladu jsou použity tři klíče: + +| Klíč | Význam | Typické hodnoty | +|------|--------|-----------------| +| `CA` | Průhlednost tahu (0 = průhledné, 1 = neprůhledné) | `0.0` – `1.0` | +| `ca` | Průhlednost výplně (stejný rozsah jako `CA`) | `0.0` – `1.0` | +| `BM` | Režim prolnutí – jak se kombinují barvy zdroje a cíle | `"Normal"`, `"Multiply"`, `"Screen"` atd. | + +Můžete experimentovat s různými režimy prolnutí, abyste dosáhli efektů jako soft‑light nebo overlay. Stačí nahradit `"Normal"` jinou hodnotou `CosPdfName`. Grafický stav lze znovu použít napříč více stránkami nebo objekty odkazováním na stejný název (`GS0` ve vzorku). + +## Časté úskalí a profesionální tipy + +| Problém | Proč k tomu dochází | Řešení | +|---------|---------------------|--------| +| Záznam `ExtGState` neexistuje | Některé PDF neobsahují slovník, dokud není přidán grafický stav | Použijte `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` před přidáním | +| Průhlednost se zdá být ignorována ve starších prohlížečích | Prohlížeč nepodporuje průhlednost PDF 1.4+ | Zajistěte, aby verze PDF výstupního souboru byla alespoň 1.4 (`pdfDocument.Version = 1.4`) | +| Kolize názvu s existujícími grafickými stavy | Použití názvu, který již existuje, jej neúmyslně přepíše | Zvolte jedinečný název (např. `"GS0"`, `"GS_CustomAlpha"`) nebo nejprve zkontrolujte `extGStateDict.ContainsKey(name)` | + +Použití těchto tipů snižuje čas ladění a přináší spolehlivé výsledky. + +## Kompletní funkční příklad – shrnutí + +Níže je celý program bez vysvětlujících komentářů, připravený ke zkopírování a vložení do konzolového projektu: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Spuštěním tohoto programu se vytvoří **output.pdf**, který obsahuje průhledný obdélník a zachovává veškerý ostatní obsah z **input.pdf**. + +## Závěr + +Nyní víte, jak **uložit upravený PDF** po provedení nízkoúrovňových změn, jak **upravit PDF zdroje** pomocí `DictionaryEditor` z Aspose.Pdf a jak **přidat průhlednost PDF** pomocí vlastního slovníku grafických stavů. Tyto techniky vám poskytují detailní kontrolu nad vzhledem PDF a jsou použitelné pro úkoly jako vodoznaky, překrytí obrázků nebo tvorbu složitých vizuálních efektů. + +Dále můžete zkoumat: + +* Přidání více grafických stavů pro různé úrovně průhlednosti (variace `add pdf transparency`) +* Aktualizace dalších typů zdrojů, jako jsou písma nebo XObjecty (`edit pdf resources` pro obrázky) +* Sloučení několika PDF při zachování vlastních grafických stavů (`save modified pdf` napříč dokumenty) + +Neváhejte experimentovat s režimy prolnutí, hodnotami průhlednosti a rozsahem zdrojů, aby vyhovovaly vašemu konkrétnímu workflow zpracování dokumentů. Šťastné programování! + +## Co byste se měli naučit dál? + +Následující tutoriály pokrývají úzce související témata, která staví na technikách předvedených v tomto návodu. Každý zdroj obsahuje kompletní funkční ukázky kódu s podrobnými vysvětleními, které vám pomohou zvládnout další funkce API a prozkoumat alternativní přístupy k implementaci ve vašich projektech. + +- [Přidání průhlednosti do PDF pomocí Aspose – Kompletní průvodce C#](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Přidání průhlednosti do PDF s Aspose PDF v C# – Krok za krokem průvodce](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Jak uložit PDF pomocí Aspose – Kompletní průvodce konverzí C#](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/dutch/net/document-manipulation/_index.md b/pdf/dutch/net/document-manipulation/_index.md index 0c7ecec964..120f010923 100644 --- a/pdf/dutch/net/document-manipulation/_index.md +++ b/pdf/dutch/net/document-manipulation/_index.md @@ -35,7 +35,7 @@ Leer hoe u uw PDF-documenten kunt verbeteren door interactief JavaScript toe te Leer hoe u pagina-einden toevoegt aan PDF-documenten met Aspose.PDF voor .NET. Volg onze stapsgewijze handleiding voor installatie, configuratie en implementatie. ### [Rechthoeken toevoegen en PDF-pagina's configureren met Aspose.PDF .NET: een uitgebreide handleiding](./aspose-pdf-net-add-rectangles-configure-pages/) -Leer rechthoeken toevoegen en pagina's configureren in PDF's met Aspose.PDF voor .NET. Volg deze handleiding om effectief technieken voor documentmanipulatie te leren. +Leer rechthoeken toevoegen en pagina's configureren in PDF's met Aspose.PDF .NET. Volg deze handleiding om effectief technieken voor documentmanipulatie te leren. ### [Aspose.PDF .NET: PDF-marges instellen en kopteksten/voetteksten aanpassen](./aspose-pdf-net-master-pdfs-margins-headers-footers/) Beheers de kunst van het instellen van paginamarges en het aanpassen van kop- en voetteksten in uw PDF's met Aspose.PDF voor .NET. Volg deze gedetailleerde handleiding om de consistentie van uw documentlay-out te verbeteren. @@ -319,6 +319,9 @@ Leer hoe u gevoelige tekst kunt verbergen en ongewenste inhoud kunt verwijderen ### [PDF repareren in C# – Corrupte PDF-bestanden snel herstellen](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) Leer hoe u beschadigde PDF-bestanden snel kunt repareren met Aspose.PDF voor .NET in C#. +### [Hoe een gewijzigde PDF opslaan met Aspose.Pdf en transparantie toevoegen](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Leer hoe u een gewijzigde PDF opslaat en transparantie toevoegt met Aspose.PDF voor .NET. + ## Aanvullende bronnen - [Aspose.PDF voor Netdocumentatie](https://docs.aspose.com/pdf/net/) @@ -333,4 +336,4 @@ Leer hoe u beschadigde PDF-bestanden snel kunt repareren met Aspose.PDF voor .NE {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/dutch/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/dutch/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..ae642a96d7 --- /dev/null +++ b/pdf/dutch/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-09-21 +description: Sla een gewijzigde PDF op met Aspose.Pdf in C#. Leer PDF‑resources bewerken + en PDF‑transparantie toevoegen in een volledig, uitvoerbaar voorbeeld. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: nl +lastmod: 2026-09-21 +og_description: Sla gewijzigde PDF op met Aspose.Pdf in C#. Deze gids laat zien hoe + je PDF‑bronnen bewerkt en PDF‑transparantie toevoegt voor professionele documentverwerking. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Aangepaste PDF opslaan met Aspose.Pdf – transparantie stap voor stap toevoegen +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Hoe een gewijzigde PDF opslaan met Aspose.Pdf en transparantie toevoegen +url: /nl/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe een gewijzigde PDF op te slaan met Aspose.Pdf en transparantie toe te voegen + +Als je **een gewijzigde PDF moet opslaan** na het wijzigen van de interne resources, biedt deze gids een volledige oplossing. Je leert hoe je PDF‑resources bewerkt, een aangepast graphic‑state‑woordenboek invoegt en PDF‑transparantie toevoegt met Aspose.Pdf voor .NET. + +De tutorial behandelt elke stap, van het laden van het bronbestand tot het verifiëren van de output. Er zijn geen externe referenties nodig; de code werkt direct in elk .NET 6+ project met de Aspose.Pdf‑bibliotheek geïnstalleerd. + +## Vereisten + +Voordat je begint, zorg dat je het volgende hebt: + +* .NET 6 SDK of later geïnstalleerd +* Een geldige Aspose.Pdf voor .NET‑licentie (of een tijdelijke evaluatiesleutel) +* Een invoer‑PDF met de naam **input.pdf** geplaatst in een map die je beheert +* Basiskennis van C# en PDF‑concepten zoals resources en graphic states + +Deze items zorgen ervoor dat het voorbeeld zonder toestemming‑ of compatibiliteitsproblemen draait. + +## Hoe een gewijzigde PDF op te slaan na het bewerken van resources + +De volgende code voert de volledige workflow uit: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Waarom elke stap belangrijk is + +* **Stap 1** isoleert het mappad zodat je dezelfde variabele kunt hergebruiken voor het laden en opslaan. +* **Stap 2** opent het bronbestand in een `using`‑blok, waardoor gegarandeerd wordt dat alle native resources worden vrijgegeven. +* **Stap 3** krijgt toegang tot het **Resources**‑woordenboek van de pagina, dat objecten zoals lettertypen, afbeeldingen en graphic states opslaat. Het bewerken van dit woordenboek is de kern van **edit pdf resources**. +* **Stap 4** maakt een nieuw **ExtGState**‑item aan. De sleutels `CA`, `ca` en `BM` regelen respectievelijk de lijn‑opaciteit, vul‑opaciteit en blend‑mode—dit is hoe je **add pdf transparency**. +* **Stap 5** registreert de nieuwe graphic state onder de naam `GS0`. Elke inhoud die `GS0` referereert, erft de transparantie‑instellingen. +* **Stap 6** (optioneel) toont een praktisch voorbeeld: een rechthoek getekend met de aangepaste graphic state. Deze visuele test bevestigt dat de transparantie werkt. +* **Stap 7** schrijft de wijzigingen naar **output.pdf**, waarmee het primaire doel om **save modified pdf** te bereiken wordt vervuld. + +### Verwacht resultaat + +* `output.pdf` verschijnt in dezelfde map als het bronbestand. +* De eerste pagina bevat een semi‑transparante rechthoek (50 % vul‑opaciteit, 100 % lijn‑opaciteit). +* Het openen van het bestand in Adobe Acrobat of een andere PDF‑viewer toont de rechthoek gemengd met de achtergrond, wat bevestigt dat de **add pdf transparency** stap geslaagd is. + +Je kunt het bestand openen met elke PDF‑lezer om het visuele effect te verifiëren. + +## PDF‑resources bewerken met Aspose.Pdf + +Wanneer je low‑level PDF‑objecten moet wijzigen, is het **Resources**‑woordenboek het startpunt. Veelvoorkomende scenario's zijn: + +| Scenario | How to achieve it with Aspose.Pdf | +|--------------------------------------|-----------------------------------| +| Vervang een bestaand lettertype | Retrieve `Resources["Font"]`, modify the entry | +| Voeg een nieuw image XObject toe | Create a `CosPdfStream`, add to `Resources["XObject"]` | +| Wijzig de lijndikte voor een specifiek pad | Add a custom `ExtGState` with `/LW` parameter | + +De bovenstaande code toont het patroon: haal de `DictionaryEditor` op, zoek het doel‑sub‑dictionary (bijv. `ExtGState`), en voeg vervolgens items toe of vervang ze. Deze aanpak is de aanbevolen manier om **edit pdf resources** veilig uit te voeren. + +## PDF‑transparantie toevoegen (blend‑mode, alfa) in detail + +Transparantie in PDF wordt gedefinieerd door het **ExtGState**‑object. De drie sleutels die in het voorbeeld worden gebruikt zijn: + +| Key | Betekenis | Typische waarden | +|-----|-----------|------------------| +| `CA` | Lijn‑opaciteit (0 = transparant, 1 = ondoorzichtig) | `0.0` – `1.0` | +| `ca` | Vul‑opaciteit (zelfde bereik als `CA`) | `0.0` – `1.0` | +| `BM` | Blend‑mode – hoe bron‑ en bestemmingskleuren worden gecombineerd | `"Normal"`, `"Multiply"`, `"Screen"` etc. | + +Je kunt experimenteren met verschillende blend‑modes om effecten zoals soft‑light of overlay te bereiken. Vervang simpelweg `"Normal"` door een andere `CosPdfName`‑waarde. De graphic state kan hergebruikt worden over meerdere pagina's of objecten door dezelfde naam (`GS0` in het voorbeeld) te refereren. + +## Veelvoorkomende valkuilen en pro‑tips + +| Valkuil | Waarom het gebeurt | Oplossing | +|---------|--------------------|-----------| +| De `ExtGState`‑entry bestaat niet | Sommige PDF's laten het woordenboek weg totdat een graphic state wordt toegevoegd | Use `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` before adding | +| Transparantie lijkt genegeerd in oudere viewers | Viewer ondersteunt geen PDF 1.4+ transparantie | Ensure the output file’s PDF version is at least 1.4 (`pdfDocument.Version = 1.4`) | +| Naamconflict met bestaande graphic states | Een naam die al bestaat wordt onbedoeld overschreven | Choose a unique name (e.g., `"GS0"`, `"GS_CustomAlpha"`) or check `extGStateDict.ContainsKey(name)` first | + +Het toepassen van deze tips verkort de debug‑tijd en levert betrouwbare resultaten op. + +## Volledig werkend voorbeeld overzicht + +Hieronder staat het volledige programma zonder verklarende commentaren, klaar om te copy‑pasten in een console‑project: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Het uitvoeren van dit programma maakt **output.pdf** aan, die de transparante rechthoek bevat en alle andere inhoud van **input.pdf** behoudt. + +## Conclusie + +Je weet nu hoe je **een gewijzigde PDF moet opslaan** na het uitvoeren van low‑level wijzigingen, hoe je **PDF‑resources bewerkt** met Aspose.Pdf’s `DictionaryEditor`, en hoe je **PDF‑transparantie toevoegt** via een aangepast graphic‑state‑woordenboek. Deze technieken geven je fijnmazige controle over de PDF‑weergave en zijn toepasbaar op taken zoals watermerken, afbeeldingen overlappen of complexe visuele effecten creëren. + +Volgende kun je verkennen: + +* Meerdere graphic states toevoegen voor verschillende opaciteitsniveaus (`add pdf transparency` variaties) +* Andere resource‑types bijwerken, zoals lettertypen of XObjects (`edit pdf resources` voor afbeeldingen) +* Meerdere PDF's samenvoegen terwijl aangepaste graphic states behouden blijven (`save modified pdf` over documenten) + +Voel je vrij om te experimenteren met blend‑modes, opaciteitswaarden en resource‑scopes om ze aan te passen aan je specifieke document‑verwerkingsworkflow. Veel programmeerplezier! + +## Wat moet je hierna leren? + +De volgende tutorials behandelen nauw verwante onderwerpen die voortbouwen op de technieken die in deze gids worden getoond. Elke bron bevat complete werkende code‑voorbeelden met stap‑voor‑stap uitleg om je te helpen extra API‑functies onder de knie te krijgen en alternatieve implementatie‑benaderingen in je eigen projecten te verkennen. + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/english/net/document-manipulation/_index.md b/pdf/english/net/document-manipulation/_index.md index 2bd47d56af..614bc8646a 100644 --- a/pdf/english/net/document-manipulation/_index.md +++ b/pdf/english/net/document-manipulation/_index.md @@ -190,6 +190,9 @@ Learn how to efficiently remove all text from a PDF using Aspose.PDF .NET. Perfe ### [How to Remove PDF Open Actions Using Aspose.PDF for .NET: A Complete Guide](./remove-pdf-open-action-aspose-dotnet-guide/) Learn how to eliminate unwanted open actions from PDF files using Aspose.PDF for .NET. This guide provides step-by-step instructions and best practices. +### [How to save modified PDF with Aspose.Pdf and add transparency](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Learn how to save a modified PDF and apply transparency using Aspose.PDF for .NET. + ### [How to Split PDF Pages Using Aspose.PDF for .NET: A Complete Guide](./mastering-pdf-page-splitting-aspose-pdf-net/) Learn how to efficiently split PDF pages into individual files using Aspose.PDF for .NET with this comprehensive guide. Boost your document manipulation skills today. diff --git a/pdf/english/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/english/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..8ea29d4097 --- /dev/null +++ b/pdf/english/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-09-21 +description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: en +lastmod: 2026-09-21 +og_description: Save modified PDF with Aspose.Pdf in C#. This guide shows how to edit + PDF resources and add PDF transparency for professional document processing. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Save modified PDF with Aspose.Pdf – add transparency step‑by‑step +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: How to save modified PDF with Aspose.Pdf and add transparency +url: /net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to save modified PDF with Aspose.Pdf and add transparency + +If you need to **save modified PDF** after changing its internal resources, this guide provides a complete solution. You will learn how to edit PDF resources, insert a custom graphic‑state dictionary, and add PDF transparency using Aspose.Pdf for .NET. + +The tutorial covers every step from loading the source file to verifying the output. No external references are required; the code runs as‑is in any .NET 6+ project with the Aspose.Pdf library installed. + +## Prerequisites + +Before you start, make sure you have: + +* .NET 6 SDK or later installed +* A valid Aspose.Pdf for .NET license (or a temporary evaluation key) +* An input PDF named **input.pdf** placed in a folder you control +* Basic knowledge of C# and PDF concepts such as resources and graphic states + +These items ensure the sample runs without permission or compatibility issues. + +## How to save modified PDF after editing resources + +The following code performs the entire workflow: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Why each step matters + +* **Step 1** isolates the folder path so you can reuse the same variable for loading and saving. +* **Step 2** opens the source file in a `using` block, guaranteeing that all native resources are released. +* **Step 3** accesses the page’s **Resources** dictionary, which stores objects such as fonts, images, and graphic states. Editing this dictionary is the core of **edit pdf resources**. +* **Step 4** builds a new **ExtGState** entry. The keys `CA`, `ca`, and `BM` control stroke opacity, fill opacity, and blend mode respectively—this is how you **add pdf transparency**. +* **Step 5** registers the new graphic state under the name `GS0`. Any content that references `GS0` will inherit the transparency settings. +* **Step 6** (optional) shows a practical use case: a rectangle drawn with the custom graphic state. This visual test confirms that the transparency works. +* **Step 7** writes the changes to **output.pdf**, fulfilling the primary goal to **save modified pdf**. + +### Expected result + +* `output.pdf` appears in the same folder as the source file. +* The first page contains a semi‑transparent rectangle (50 % fill opacity, 100 % stroke opacity). +* Opening the file in Adobe Acrobat or any PDF viewer shows the rectangle blended with the background, confirming that the **add pdf transparency** step succeeded. + +You can open the file with any PDF reader to verify the visual effect. + +## Editing PDF resources with Aspose.Pdf + +When you need to change low‑level PDF objects, the **Resources** dictionary is the entry point. Common scenarios include: + +| Scenario | How to achieve it with Aspose.Pdf | +|--------------------------------------|-----------------------------------| +| Replace an existing font | Retrieve `Resources["Font"]`, modify the entry | +| Add a new image XObject | Create a `CosPdfStream`, add to `Resources["XObject"]` | +| Change line width for a specific path| Add a custom `ExtGState` with `/LW` parameter | + +The code above demonstrates the pattern: fetch the `DictionaryEditor`, locate the target sub‑dictionary (e.g., `ExtGState`), and then add or replace entries. This approach is the recommended way to **edit pdf resources** safely. + +## Adding PDF transparency (blend mode, alpha) in detail + +Transparency in PDF is defined by the **ExtGState** object. The three keys used in the example are: + +| Key | Meaning | Typical values | +|-----|---------|----------------| +| `CA` | Stroke opacity (0 = transparent, 1 = opaque) | `0.0` – `1.0` | +| `ca` | Fill opacity (same range as `CA`) | `0.0` – `1.0` | +| `BM` | Blend mode – how source and destination colors combine | `"Normal"`, `"Multiply"`, `"Screen"` etc. | + +You can experiment with different blend modes to achieve effects such as soft‑light or overlay. Simply replace `"Normal"` with another `CosPdfName` value. The graphic state can be reused across multiple pages or objects by referencing the same name (`GS0` in the sample). + +## Common pitfalls and pro tips + +| Pitfall | Why it happens | Fix | +|---------|----------------|-----| +| The `ExtGState` entry does not exist | Some PDFs omit the dictionary until a graphic state is added | Use `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` before adding | +| Transparency appears ignored in older viewers | Viewer does not support PDF 1.4+ transparency | Ensure the output file’s PDF version is at least 1.4 (`pdfDocument.Version = 1.4`) | +| Name collision with existing graphic states | Using a name that already exists overwrites it unintentionally | Choose a unique name (e.g., `"GS0"`, `"GS_CustomAlpha"`) or check `extGStateDict.ContainsKey(name)` first | + +Applying these tips reduces debugging time and produces reliable results. + +## Full working example recap + +Below is the entire program without explanatory comments, ready to copy‑paste into a console project: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Running this program creates **output.pdf** that contains the transparent rectangle and preserves all other content from **input.pdf**. + +## Conclusion + +You now know how to **save modified PDF** after performing low‑level changes, how to **edit PDF resources** using Aspose.Pdf’s `DictionaryEditor`, and how to **add PDF transparency** through a custom graphic‑state dictionary. These techniques give you fine‑grained control over PDF appearance and are applicable to tasks such as watermarking, overlaying images, or creating complex visual effects. + +Next, you might explore: + +* Adding multiple graphic states for different opacity levels (`add pdf transparency` variations) +* Updating other resource types like fonts or XObjects (`edit pdf resources` for images) +* Merging several PDFs while preserving custom graphic states (`save modified pdf` across documents) + +Feel free to experiment with blend modes, opacity values, and resource scopes to fit your specific document‑processing workflow. Happy coding! + + +## What Should You Learn Next? + + +The following tutorials cover closely related topics that build on the techniques demonstrated in this guide. Each resource includes complete working code examples with step-by-step explanations to help you master additional API features and explore alternative implementation approaches in your own projects. + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/english/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/og-image.png b/pdf/english/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d9d5ad4d59e8f1a0720d7c8afebe2523b1a0a1 GIT binary patch literal 45815 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%0A((*ilAjQK($EmBAC$?cijz{K3FH?(Cw%d#( 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

NN7f%VIxXp1 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 -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/french/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/french/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..5f8c7d4db8 --- /dev/null +++ b/pdf/french/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-09-21 +description: Enregistrez le PDF modifié avec Aspose.Pdf en C#. Apprenez à modifier + les ressources PDF et à ajouter de la transparence PDF dans un exemple complet et + exécutable. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: fr +lastmod: 2026-09-21 +og_description: Enregistrez le PDF modifié avec Aspose.Pdf en C#. Ce guide montre + comment modifier les ressources PDF et ajouter la transparence PDF pour un traitement + professionnel des documents. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Enregistrez le PDF modifié avec Aspose.Pdf – ajoutez la transparence étape + par étape +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Comment enregistrer un PDF modifié avec Aspose.Pdf et ajouter de la transparence +url: /fr/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment enregistrer un PDF modifié avec Aspose.Pdf et ajouter de la transparence + +Si vous devez **enregistrer un PDF modifié** après avoir changé ses ressources internes, ce guide fournit une solution complète. Vous apprendrez comment modifier les ressources PDF, insérer un dictionnaire d’état graphique personnalisé et ajouter de la transparence PDF à l’aide d’Aspose.Pdf pour .NET. + +Le tutoriel couvre chaque étape, du chargement du fichier source à la vérification du résultat. Aucune référence externe n’est requise ; le code s’exécute tel quel dans n’importe quel projet .NET 6+ avec la bibliothèque Aspose.Pdf installée. + +## Prérequis + +Avant de commencer, assurez‑vous d’avoir : + +* le SDK .NET 6 ou une version ultérieure installé +* une licence valide d’Aspose.Pdf pour .NET (ou une clé d’évaluation temporaire) +* un PDF d’entrée nommé **input.pdf** placé dans un dossier que vous contrôlez +* des connaissances de base en C# et en concepts PDF tels que les ressources et les états graphiques + +Ces éléments garantissent que l’exemple s’exécute sans problème d’autorisation ou de compatibilité. + +## Comment enregistrer un PDF modifié après la modification des ressources + +Le code suivant réalise l’ensemble du flux de travail : + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Pourquoi chaque étape est importante + +* **Étape 1** isole le chemin du dossier afin que vous puissiez réutiliser la même variable pour le chargement et l’enregistrement. +* **Étape 2** ouvre le fichier source dans un bloc `using`, garantissant que toutes les ressources natives sont libérées. +* **Étape 3** accède au dictionnaire **Resources** de la page, qui stocke des objets tels que les polices, les images et les états graphiques. Modifier ce dictionnaire est le cœur de **edit pdf resources**. +* **Étape 4** crée une nouvelle entrée **ExtGState**. Les clés `CA`, `ca` et `BM` contrôlent respectivement l’opacité du trait, l’opacité du remplissage et le mode de fusion — c’est ainsi que vous **add pdf transparency**. +* **Étape 5** enregistre le nouvel état graphique sous le nom `GS0`. Tout contenu qui fait référence à `GS0` héritera des paramètres de transparence. +* **Étape 6** (facultative) montre un cas d’utilisation pratique : un rectangle dessiné avec l’état graphique personnalisé. Ce test visuel confirme que la transparence fonctionne. +* **Étape 7** écrit les modifications dans **output.pdf**, remplissant l’objectif principal d’**save modified pdf**. + +### Résultat attendu + +* `output.pdf` apparaît dans le même dossier que le fichier source. +* La première page contient un rectangle semi‑transparent (opacité de remplissage = 50 %, opacité du trait = 100 %). +* L’ouverture du fichier dans Adobe Acrobat ou tout autre visualiseur PDF montre le rectangle mélangé avec l’arrière‑plan, confirmant que l’étape **add pdf transparency** a réussi. + +Vous pouvez ouvrir le fichier avec n’importe quel lecteur PDF pour vérifier l’effet visuel. + +## Modification des ressources PDF avec Aspose.Pdf + +Lorsque vous devez changer des objets PDF de bas niveau, le dictionnaire **Resources** est le point d’entrée. Les scénarios courants incluent : + +| Scénario | Comment le réaliser avec Aspose.Pdf | +|----------|--------------------------------------| +| Remplacer une police existante | Récupérer `Resources["Font"]`, modifier l’entrée | +| Ajouter un nouveau XObject d’image | Créer un `CosPdfStream`, l’ajouter à `Resources["XObject"]` | +| Modifier la largeur de ligne d’un tracé spécifique | Ajouter un `ExtGState` personnalisé avec le paramètre `/LW` | + +Le code ci‑dessus montre le modèle : récupérer le `DictionaryEditor`, localiser le sous‑dictionnaire cible (par ex., `ExtGState`), puis ajouter ou remplacer des entrées. Cette approche est la méthode recommandée pour **edit pdf resources** en toute sécurité. + +## Ajout de transparence PDF (mode de fusion, alpha) en détail + +La transparence dans un PDF est définie par l’objet **ExtGState**. Les trois clés utilisées dans l’exemple sont : + +| Clé | Signification | Valeurs typiques | +|-----|----------------|------------------| +| `CA` | Opacité du trait (0 = transparent, 1 = opaque) | `0.0` – `1.0` | +| `ca` | Opacité du remplissage (même intervalle que `CA`) | `0.0` – `1.0` | +| `BM` | Mode de fusion – comment les couleurs source et destination se combinent | `"Normal"`, `"Multiply"`, `"Screen"` etc. | + +Vous pouvez expérimenter différents modes de fusion pour obtenir des effets tels que soft‑light ou overlay. Remplacez simplement `"Normal"` par une autre valeur `CosPdfName`. L’état graphique peut être réutilisé sur plusieurs pages ou objets en référant le même nom (`GS0` dans l’exemple). + +## Pièges courants et astuces professionnelles + +| Piège | Pourquoi cela se produit | Solution | +|-------|--------------------------|----------| +| L’entrée `ExtGState` n’existe pas | Certains PDF n’incluent pas le dictionnaire tant qu’un état graphique n’est pas ajouté | Utiliser `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` avant d’ajouter | +| La transparence semble ignorée dans les anciens visionneurs | Le visionneur ne prend pas en charge la transparence PDF 1.4+ | S’assurer que la version PDF du fichier de sortie est au moins 1.4 (`pdfDocument.Version = 1.4`) | +| Collision de noms avec des états graphiques existants | Utiliser un nom déjà présent l’écrase involontairement | Choisir un nom unique (par ex., `"GS0"`, `"GS_CustomAlpha"`) ou vérifier `extGStateDict.ContainsKey(name)` d’abord | + +Appliquer ces conseils réduit le temps de débogage et produit des résultats fiables. + +## Récapitulatif de l’exemple complet + +Voici le programme complet sans commentaires explicatifs, prêt à être copié‑collé dans un projet console : + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +L’exécution de ce programme crée **output.pdf** contenant le rectangle transparent tout en conservant le reste du contenu de **input.pdf**. + +## Conclusion + +Vous savez maintenant comment **save modified PDF** après des modifications de bas niveau, comment **edit PDF resources** à l’aide du `DictionaryEditor` d’Aspose.Pdf, et comment **add PDF transparency** via un dictionnaire d’état graphique personnalisé. Ces techniques vous offrent un contrôle granulaire sur l’apparence des PDF et sont applicables à des tâches telles que le filigrane, le superposition d’images ou la création d’effets visuels complexes. + +Ensuite, vous pourriez explorer : + +* Ajouter plusieurs états graphiques pour différents niveaux d’opacité (variations de `add pdf transparency`) +* Mettre à jour d’autres types de ressources comme les polices ou les XObjects (`edit pdf resources` pour les images) +* Fusionner plusieurs PDF tout en conservant les états graphiques personnalisés (`save modified pdf` entre documents) + +N’hésitez pas à expérimenter avec les modes de fusion, les valeurs d’opacité et les portées de ressources pour les adapter à votre flux de traitement de documents. Bon codage ! + + +## Que devriez‑vous apprendre ensuite ? + + +Les tutoriels suivants couvrent des sujets étroitement liés qui s’appuient sur les techniques démontrées dans ce guide. Chaque ressource inclut des exemples de code complets avec des explications pas à pas pour vous aider à maîtriser d’autres fonctionnalités de l’API et à explorer des approches d’implémentation alternatives dans vos propres projets. + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/german/net/document-manipulation/_index.md b/pdf/german/net/document-manipulation/_index.md index d3414a7472..ed7b38255e 100644 --- a/pdf/german/net/document-manipulation/_index.md +++ b/pdf/german/net/document-manipulation/_index.md @@ -318,6 +318,9 @@ Erfahren Sie, wie Sie mit Aspose.PDF für .NET beschädigte PDF-Dateien in C# sc ### [Wie Sie PDF in C# mit Aspose PDF redigieren – Vollständige Anleitung](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) Erfahren Sie, wie Sie mit Aspose PDF für .NET vertrauliche Informationen in PDFs redigieren und dauerhaft entfernen. +### [Wie Sie ein modifiziertes PDF mit Aspose.PDF speichern und Transparenz hinzufügen](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Erfahren Sie, wie Sie ein bearbeitetes PDF speichern und Transparenz hinzufügen. + ## Weitere Ressourcen - [Aspose.PDF für Net-Dokumentation](https://docs.aspose.com/pdf/net/) @@ -332,4 +335,4 @@ Erfahren Sie, wie Sie mit Aspose PDF für .NET vertrauliche Informationen in PDF {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/german/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/german/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..92d456c86d --- /dev/null +++ b/pdf/german/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-09-21 +description: Speichern Sie modifizierte PDFs mit Aspose.Pdf in C#. Lernen Sie, PDF‑Ressourcen + zu bearbeiten und PDF‑Transparenz in einem vollständigen, ausführbaren Beispiel + hinzuzufügen. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: de +lastmod: 2026-09-21 +og_description: Speichern Sie modifizierte PDFs mit Aspose.Pdf in C#. Dieser Leitfaden + zeigt, wie PDF‑Ressourcen bearbeitet und PDF‑Transparenz für die professionelle + Dokumentenverarbeitung hinzugefügt werden. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Modifiziertes PDF mit Aspose.Pdf speichern – Transparenz Schritt für Schritt + hinzufügen +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Wie man ein geändertes PDF mit Aspose.Pdf speichert und Transparenz hinzufügt +url: /de/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man ein modifiziertes PDF mit Aspose.Pdf speichert und Transparenz hinzufügt + +Wenn Sie ein **modifiziertes PDF** nach dem Ändern seiner internen Ressourcen speichern müssen, bietet dieser Leitfaden eine vollständige Lösung. Sie lernen, wie man PDF‑Ressourcen bearbeitet, ein benutzerdefiniertes Graphic‑State‑Dictionary einfügt und PDF‑Transparenz mit Aspose.Pdf für .NET hinzufügt. + +Der Tutorial deckt jeden Schritt vom Laden der Quelldatei bis zur Überprüfung der Ausgabe ab. Es werden keine externen Referenzen benötigt; der Code läuft unverändert in jedem .NET 6+‑Projekt mit der installierten Aspose.Pdf‑Bibliothek. + +## Voraussetzungen + +Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben: + +* .NET 6 SDK oder später installiert +* Eine gültige Aspose.Pdf‑für‑.NET‑Lizenz (oder ein temporärer Evaluierungsschlüssel) +* Ein Eingabe‑PDF mit dem Namen **input.pdf**, das in einem von Ihnen kontrollierten Ordner liegt +* Grundkenntnisse in C# und PDF‑Konzepten wie Ressourcen und Graphic States + +Diese Punkte stellen sicher, dass das Beispiel ohne Berechtigungs‑ oder Kompatibilitätsprobleme ausgeführt wird. + +## Wie man ein modifiziertes PDF nach dem Bearbeiten von Ressourcen speichert + +Der folgende Code führt den gesamten Workflow aus: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Warum jeder Schritt wichtig ist + +* **Step 1** isoliert den Ordnerpfad, sodass Sie dieselbe Variable zum Laden und Speichern wiederverwenden können. +* **Step 2** öffnet die Quelldatei in einem `using`‑Block und garantiert, dass alle nativen Ressourcen freigegeben werden. +* **Step 3** greift auf das **Resources**‑Dictionary der Seite zu, das Objekte wie Schriften, Bilder und Graphic States speichert. Das Bearbeiten dieses Dictionaries ist der Kern von **edit pdf resources**. +* **Step 4** erstellt einen neuen **ExtGState**‑Eintrag. Die Schlüssel `CA`, `ca` und `BM` steuern die Strich‑Deckkraft, die Füll‑Deckkraft bzw. den Blend‑Modus – so fügen Sie **add pdf transparency** hinzu. +* **Step 5** registriert den neuen Graphic State unter dem Namen `GS0`. Jeder Inhalt, der `GS0` referenziert, erbt die Transparenzeinstellungen. +* **Step 6** (optional) zeigt einen praktischen Anwendungsfall: ein Rechteck, das mit dem benutzerdefinierten Graphic State gezeichnet wird. Dieser visuelle Test bestätigt, dass die Transparenz funktioniert. +* **Step 7** schreibt die Änderungen in **output.pdf** und erfüllt damit das Hauptziel, **save modified pdf** zu erreichen. + +### Erwartetes Ergebnis + +* `output.pdf` erscheint im selben Ordner wie die Quelldatei. +* Die erste Seite enthält ein halbtransparentes Rechteck (50 % Füll‑Deckkraft, 100 % Strich‑Deckkraft). +* Öffnet man die Datei in Adobe Acrobat oder einem anderen PDF‑Betrachter, wird das Rechteck mit dem Hintergrund gemischt angezeigt, was bestätigt, dass der **add pdf transparency**‑Schritt erfolgreich war. + +Sie können die Datei mit jedem PDF‑Reader öffnen, um den visuellen Effekt zu überprüfen. + +## Bearbeiten von PDF‑Ressourcen mit Aspose.Pdf + +Wenn Sie Low‑Level‑PDF‑Objekte ändern müssen, ist das **Resources**‑Dictionary der Einstiegspunkt. Häufige Szenarien umfassen: + +| Szenario | Wie man es mit Aspose.Pdf erreicht | +|--------------------------------------|-----------------------------------| +| Vorhandene Schriftart ersetzen | Retrieve `Resources["Font"]`, modify the entry | +| Neues Bild‑XObject hinzufügen | Create a `CosPdfStream`, add to `Resources["XObject"]` | +| Linienbreite für einen bestimmten Pfad ändern | Add a custom `ExtGState` with `/LW` parameter | + +Der obige Code demonstriert das Muster: `DictionaryEditor` holen, das Ziel‑Unterdictionary (z. B. `ExtGState`) finden und dann Einträge hinzufügen oder ersetzen. Dieser Ansatz ist der empfohlene Weg, um **edit pdf resources** sicher durchzuführen. + +## Hinzufügen von PDF‑Transparenz (Blend‑Modus, Alpha) im Detail + +Transparenz in PDF wird durch das **ExtGState**‑Objekt definiert. Die im Beispiel verwendeten drei Schlüssel sind: + +| Schlüssel | Bedeutung | Typische Werte | +|-----|---------|----------------| +| `CA` | Strich‑Deckkraft (0 = transparent, 1 = undurchsichtig) | `0.0` – `1.0` | +| `ca` | Füll‑Deckkraft (gleicher Bereich wie `CA`) | `0.0` – `1.0` | +| `BM` | Blend‑Modus – wie Quell‑ und Ziel‑Farben kombiniert werden | `"Normal"`, `"Multiply"`, `"Screen"` usw. | + +Sie können mit verschiedenen Blend‑Modi experimentieren, um Effekte wie Soft‑Light oder Overlay zu erzielen. Ersetzen Sie einfach `"Normal"` durch einen anderen `CosPdfName`‑Wert. Der Graphic State kann über mehrere Seiten oder Objekte hinweg wiederverwendet werden, indem derselbe Name (`GS0` im Beispiel) referenziert wird. + +## Häufige Fallstricke und Profi‑Tipps + +| Fallstrick | Warum es passiert | Lösung | +|-----------|-------------------|--------| +| Der `ExtGState`‑Eintrag existiert nicht | Einige PDFs lassen das Dictionary weg, bis ein Graphic State hinzugefügt wird | Use `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` before adding | +| Transparenz wird in älteren Betrachtern ignoriert | Der Betrachter unterstützt PDF 1.4+ Transparenz nicht | Ensure the output file’s PDF version is at least 1.4 (`pdfDocument.Version = 1.4`) | +| Namenskollision mit bestehenden Graphic States | Die Verwendung eines bereits existierenden Namens überschreibt ihn unbeabsichtigt | Choose a unique name (e.g., `"GS0"`, `"GS_CustomAlpha"`) or check `extGStateDict.ContainsKey(name)` first | + +Durch die Anwendung dieser Tipps reduziert sich die Fehlersuche und es entstehen zuverlässige Ergebnisse. + +## Vollständiges funktionierendes Beispiel – Zusammenfassung + +Unten finden Sie das gesamte Programm ohne erklärende Kommentare, bereit zum Kopieren‑Einfügen in ein Konsolenprojekt: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Wenn Sie dieses Programm ausführen, wird **output.pdf** erzeugt, das das transparente Rechteck enthält und allen anderen Inhalt von **input.pdf** unverändert lässt. + +## Fazit + +Sie wissen jetzt, wie Sie **save modified PDF** nach Low‑Level‑Änderungen durchführen, wie Sie **edit PDF resources** mit Aspose.Pdf’s `DictionaryEditor` bearbeiten und wie Sie **add PDF transparency** über ein benutzerdefiniertes Graphic‑State‑Dictionary hinzufügen. Diese Techniken geben Ihnen feinkörnige Kontrolle über das Aussehen von PDFs und lassen sich für Aufgaben wie Wasserzeichen, Bildüberlagerungen oder komplexe visuelle Effekte einsetzen. + +Als Nächstes könnten Sie erkunden: + +* Mehrere Graphic States für unterschiedliche Deckkraft‑Stufen hinzufügen (`add pdf transparency`‑Variationen) +* Andere Ressourcentypen wie Schriften oder XObjects aktualisieren (`edit pdf resources` für Bilder) +* Mehrere PDFs zusammenführen und dabei benutzerdefinierte Graphic States erhalten (`save modified pdf` über Dokumente hinweg) + +Fühlen Sie sich frei, mit Blend‑Modi, Deckkraftwerten und Ressourcengeltungen zu experimentieren, um sie an Ihren speziellen Dokumenten‑Verarbeitungs‑Workflow anzupassen. Viel Spaß beim Coden! + +## Was sollten Sie als Nächstes lernen? + +Die folgenden Tutorials behandeln eng verwandte Themen, die auf den in diesem Leitfaden gezeigten Techniken aufbauen. Jede Ressource enthält vollständige, funktionierende Code‑Beispiele mit Schritt‑für‑Schritt‑Erklärungen, um Ihnen zu helfen, weitere API‑Features zu meistern und alternative Implementierungsansätze in Ihren eigenen Projekten zu erkunden. + +- [Transparenz zu PDF mit Aspose hinzufügen – Vollständiger C#‑Leitfaden](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Transparenz zu PDF mit Aspose PDF in C# – Schritt‑für‑Schritt‑Leitfaden](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Wie man PDF mit Aspose speichert – Vollständiger C#‑Konvertierungsleitfaden](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/greek/net/document-manipulation/_index.md b/pdf/greek/net/document-manipulation/_index.md index 23b4a4fb32..ebfb1e2173 100644 --- a/pdf/greek/net/document-manipulation/_index.md +++ b/pdf/greek/net/document-manipulation/_index.md @@ -128,7 +128,7 @@ Μάθετε πώς να προσθέτετε αποτελεσματικά αρχεία PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον λεπτομερή οδηγό, ιδανικό για τη βελτιστοποίηση των ροών εργασίας εγγράφων σε C#. ### [Πώς να προσθέσετε PDF χρησιμοποιώντας το Aspose.PDF σε .NET: Ένας πλήρης οδηγός](./mastering-pdf-append-aspose-pdf-net/) -Μάθετε πώς να προσθέτετε αποτελεσματικά αρχεία PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον λεπτομερές οδηγό. Εξασκηθείτε στον χειρισμό εγγράφων για βελτιστοποιημένες ροές εργασίας. +Μάθετε πώς να προσθέτετε αποτελεσματικά αρχεία PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον λεπτομερή οδηγό. Εξασκηθείτε στον χειρισμό εγγράφων για βελτιστοποιημένες ροές εργασίας. ### [Πώς να αλλάξετε τα μεγέθη σελίδων PDF χρησιμοποιώντας το Aspose.PDF για .NET (Οδηγός βήμα προς βήμα)](./change-pdf-page-sizes-aspose-dotnet/) Μάθετε πώς να αλλάζετε αποτελεσματικά τα μεγέθη σελίδων σε ένα PDF χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός βήμα προς βήμα καλύπτει την εγκατάσταση, τη χρήση και τις πρακτικές εφαρμογές. @@ -142,7 +142,7 @@ ### [Πώς να συνενώσετε PDF με κεντές σελίδες χρησιμοποιώντας το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./concatenate-pdfs-blank-pages-aspose-pdf-net/) Μάθετε πώς να συγχωνεύετε αρχεία PDF και να προσθέτετε κενές σελίδες χρησιμοποιώντας το Aspose.PDF για .NET. Βελτιστοποιήστε αποτελεσματικά τη ροή εργασίας διαχείρισης εγγράφων. -### [Πώς να συνενώσετε και να εισαγάγετε κενές σελίδες σε PDF χρησιμοποιώντας .NET και Aspose.PDF](./master-net-pdf-manipulation-concatenate-insert-blank-pages-asposepdf/) +### [Πώς να συνενώσετε και να εισαγάγετε κεντές σελίδες σε PDF χρησιμοποιώντας .NET και Aspose.PDF](./master-net-pdf-manipulation-concatenate-insert-blank-pages-asposepdf/) Μάθετε πώς να συνενώνετε έγγραφα PDF και να εισάγετε κενές σελίδες χρησιμοποιώντας το Aspose.PDF με C#. Βελτιστοποιήστε τις ροές εργασίας διαχείρισης εγγράφων σας χωρίς κόπο. ### [Πώς να μετατρέψετε το μέγεθος σελίδας PDF σε A4 χρησιμοποιώντας το Aspose.PDF .NET | Οδηγός χειρισμού εγγράφων](./update-pdf-page-dimensions-aspose-net/) @@ -319,13 +319,8 @@ ### [Πώς να επισκευάσετε PDF σε C# – Διορθώστε γρήγορα κατεστραμμένα αρχεία PDF](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) Μάθετε πώς να επισκευάσετε γρήγορα κατεστραμμένα αρχεία PDF με C# και Aspose.PDF για .NET. -## Πρόσθετοι Πόροι - -- [Aspose.PDF για τεκμηρίωση δικτύου](https://docs.aspose.com/pdf/net/) -- [Aspose.PDF για αναφορά Net API](https://reference.aspose.com/pdf/net/) -- [Λήψη Aspose.PDF για το Διαδίκτυο](https://releases.aspose.com/pdf/net/) -- [Δωρεάν Υποστήριξη](https://forum.aspose.com/) -- [Προσωρινή Άδεια](https://purchase.aspose.com/temporary-license/) +### [Πώς να αποθηκεύσετε τροποποιημένο PDF με το Aspose.Pdf και να προσθέσετε διαφάνεια](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Μάθετε πώς να αποθηκεύσετε ένα τροποποιημένο PDF και να εφαρμόσετε διαφάνεια χρησιμοποιώντας το Aspose.PDF για .NET. {{< /blocks/products/pf/tutorial-page-section >}} @@ -333,4 +328,4 @@ {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/greek/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/greek/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..0d0db48790 --- /dev/null +++ b/pdf/greek/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-09-21 +description: Αποθήκευση τροποποιημένου PDF με Aspose.Pdf σε C#. Μάθετε πώς να επεξεργάζεστε + πόρους PDF και να προσθέτετε διαφάνεια PDF σε ένα πλήρες, εκτελέσιμο παράδειγμα. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: el +lastmod: 2026-09-21 +og_description: Αποθηκεύστε το τροποποιημένο PDF με το Aspose.Pdf σε C#. Αυτός ο οδηγός + δείχνει πώς να επεξεργαστείτε πόρους PDF και να προσθέσετε διαφάνεια PDF για επαγγελματική + επεξεργασία εγγράφων. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Αποθήκευση τροποποιημένου PDF με Aspose.Pdf – προσθήκη διαφάνειας βήμα‑βήμα +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Πώς να αποθηκεύσετε τροποποιημένο PDF με το Aspose.Pdf και να προσθέσετε διαφάνεια +url: /el/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να αποθηκεύσετε τροποποιημένο PDF με Aspose.Pdf και να προσθέσετε διαφάνεια + +Αν χρειάζεστε να **αποθηκεύσετε τροποποιημένο PDF** μετά την αλλαγή των εσωτερικών του πόρων, αυτός ο οδηγός παρέχει μια πλήρη λύση. Θα μάθετε πώς να επεξεργάζεστε πόρους PDF, να εισάγετε ένα προσαρμοσμένο λεξικό graphic‑state και να προσθέσετε διαφάνεια PDF χρησιμοποιώντας το Aspose.Pdf για .NET. + +Ο οδηγός καλύπτει κάθε βήμα από τη φόρτωση του αρχείου προέλευσης μέχρι την επαλήθευση του αποτελέσματος. Δεν απαιτούνται εξωτερικές αναφορές· ο κώδικας εκτελείται όπως είναι σε οποιοδήποτε έργο .NET 6+ με την εγκατεστημένη βιβλιοθήκη Aspose.Pdf. + +## Προαπαιτούμενα + +Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε: + +* .NET 6 SDK ή νεότερο εγκατεστημένο +* Έγκυρη άδεια Aspose.Pdf για .NET (ή προσωρινό κλειδί αξιολόγησης) +* Ένα αρχείο PDF εισόδου με όνομα **input.pdf** τοποθετημένο σε φάκελο που ελέγχετε +* Βασικές γνώσεις C# και εννοιών PDF όπως πόροι και graphic states + +Αυτά τα στοιχεία διασφαλίζουν ότι το δείγμα εκτελείται χωρίς προβλήματα άδειας ή συμβατότητας. + +## Πώς να αποθηκεύσετε τροποποιημένο PDF μετά την επεξεργασία πόρων + +Ο παρακάτω κώδικας εκτελεί ολόκληρη τη ροή εργασίας: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Γιατί κάθε βήμα είναι σημαντικό + +* **Step 1** απομονώνει τη διαδρομή του φακέλου ώστε να μπορείτε να επαναχρησιμοποιήσετε την ίδια μεταβλητή για φόρτωση και αποθήκευση. +* **Step 2** ανοίγει το αρχείο προέλευσης σε ένα μπλοκ `using`, εγγυώμενος ότι όλοι οι εγγενείς πόροι απελευθερώνονται. +* **Step 3** προσπελαύνει το λεξικό **Resources** της σελίδας, το οποίο αποθηκεύει αντικείμενα όπως γραμματοσειρές, εικόνες και graphic states. Η επεξεργασία αυτού του λεξικού είναι ο πυρήνας του **edit pdf resources**. +* **Step 4** δημιουργεί μια νέα καταχώρηση **ExtGState**. Τα κλειδιά `CA`, `ca` και `BM` ελέγχουν αντίστοιχα τη διαφάνεια γραμμής, τη διαφάνεια γεμίσματος και τη λειτουργία ανάμειξης· αυτός είναι ο τρόπος για **add pdf transparency**. +* **Step 5** καταχωρεί το νέο graphic state με το όνομα `GS0`. Οποιοδήποτε περιεχόμενο αναφέρεται στο `GS0` θα κληρονομήσει τις ρυθμίσεις διαφάνειας. +* **Step 6** (προαιρετικό) δείχνει μια πρακτική περίπτωση χρήσης: ένα ορθογώνιο σχεδιασμένο με το προσαρμοσμένο graphic state. Αυτό το οπτικό τεστ επιβεβαιώνει ότι η διαφάνεια λειτουργεί. +* **Step 7** γράφει τις αλλαγές στο **output.pdf**, εκπληρώνοντας τον κύριο στόχο να **save modified pdf**. + +### Αναμενόμενο αποτέλεσμα + +* `output.pdf` εμφανίζεται στον ίδιο φάκελο με το αρχείο προέλευσης. +* Η πρώτη σελίδα περιέχει ένα ημιδιαφανές ορθογώνιο (50 % διαφάνεια γεμίσματος, 100 % διαφάνεια γραμμής). +* Ανοίγοντας το αρχείο στο Adobe Acrobat ή σε οποιονδήποτε προβολέα PDF εμφανίζεται το ορθογώνιο ενσωματωμένο με το φόντο, επιβεβαιώνοντας ότι το βήμα **add pdf transparency** πέτυχε. + +Μπορείτε να ανοίξετε το αρχείο με οποιονδήποτε PDF reader για να επαληθεύσετε το οπτικό αποτέλεσμα. + +## Επεξεργασία πόρων PDF με Aspose.Pdf + +Όταν χρειάζεται να αλλάξετε αντικείμενα PDF χαμηλού επιπέδου, το λεξικό **Resources** είναι το σημείο εισόδου. Συνηθισμένα σενάρια περιλαμβάνουν: + +| Σενάριο | Πώς να το επιτύχετε με Aspose.Pdf | +|---------|-----------------------------------| +| Αντικατάσταση υπάρχουσας γραμματοσειράς | Ανακτήστε `Resources["Font"]`, τροποποιήστε την καταχώρηση | +| Προσθήκη νέου image XObject | Δημιουργήστε ένα `CosPdfStream`, προσθέστε το στο `Resources["XObject"]` | +| Αλλαγή πάχους γραμμής για συγκεκριμένο μονοπάτι | Προσθέστε ένα προσαρμοσμένο `ExtGState` με παράμετρο `/LW` | + +Ο παραπάνω κώδικας δείχνει το μοτίβο: πάρτε το `DictionaryEditor`, εντοπίστε το υπο‑λεξικό-στόχο (π.χ., `ExtGState`) και, στη συνέχεια, προσθέστε ή αντικαταστήστε καταχωρήσεις. Αυτή η προσέγγιση είναι η προτεινόμενη μέθοδος για **edit pdf resources** με ασφάλεια. + +## Προσθήκη διαφάνειας PDF (blend mode, alpha) σε λεπτομέρειες + +Η διαφάνεια σε PDF ορίζεται από το αντικείμενο **ExtGState**. Τα τρία κλειδιά που χρησιμοποιούνται στο παράδειγμα είναι: + +| Κλειδί | Σημασία | Τυπικές τιμές | +|--------|---------|----------------| +| `CA` | Διαφάνεια γραμμής (0 = διαφανής, 1 = αδιαφανής) | `0.0` – `1.0` | +| `ca` | Διαφάνεια γεμίσματος (ίδιο εύρος με `CA`) | `0.0` – `1.0` | +| `BM` | Λειτουργία ανάμειξης – πώς συνδυάζονται τα χρώματα πηγής και προορισμού | `"Normal"`, `"Multiply"`, `"Screen"` κλπ. | + +Μπορείτε να πειραματιστείτε με διαφορετικές λειτουργίες ανάμειξης για να πετύχετε εφέ όπως soft‑light ή overlay. Απλώς αντικαταστήστε το `"Normal"` με άλλη τιμή `CosPdfName`. Το graphic state μπορεί να επαναχρησιμοποιηθεί σε πολλές σελίδες ή αντικείμενα αναφέροντας το ίδιο όνομα (`GS0` στο δείγμα). + +## Συνηθισμένα προβλήματα και επαγγελματικές συμβουλές + +| Πρόβλημα | Γιατί συμβαίνει | Διόρθωση | +|----------|----------------|----------| +| Η καταχώρηση `ExtGState` δεν υπάρχει | Κάποια PDF παραλείπουν το λεξικό μέχρι να προστεθεί ένα graphic state | Χρησιμοποιήστε `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` πριν την προσθήκη | +| Η διαφάνεια φαίνεται αγνοημένη σε παλαιούς προβολείς | Ο προβολέας δεν υποστηρίζει διαφάνεια PDF 1.4+ | Βεβαιωθείτε ότι η έκδοση PDF του αρχείου εξόδου είναι τουλάχιστον 1.4 (`pdfDocument.Version = 1.4`) | +| Σύγκρουση ονομάτων με υπάρχοντα graphic states | Η χρήση ονόματος που υπάρχει ήδη το αντικαθιστά ακούσια | Επιλέξτε μοναδικό όνομα (π.χ., `"GS0"`, `"GS_CustomAlpha"`) ή ελέγξτε `extGStateDict.ContainsKey(name)` πρώτα | + +Η εφαρμογή αυτών των συμβουλών μειώνει το χρόνο εντοπισμού σφαλμάτων και παράγει αξιόπιστα αποτελέσματα. + +## Πλήρης παράδειγμα λειτουργικού κώδικα + +Παρακάτω βρίσκεται ολόκληρο το πρόγραμμα χωρίς επεξηγηματικά σχόλια, έτοιμο για αντιγραφή‑επικόλληση σε έργο κονσόλας: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Η εκτέλεση αυτού του προγράμματος δημιουργεί **output.pdf** που περιέχει το ημιδιαφανές ορθογώνιο και διατηρεί όλο το υπόλοιπο περιεχόμενο από το **input.pdf**. + +## Συμπέρασμα + +Τώρα γνωρίζετε πώς να **save modified PDF** μετά από αλλαγές χαμηλού επιπέδου, πώς να **edit PDF resources** χρησιμοποιώντας το `DictionaryEditor` του Aspose.Pdf, και πώς να **add PDF transparency** μέσω ενός προσαρμοσμένου λεξικού graphic‑state. Αυτές οι τεχνικές σας δίνουν λεπτομερή έλεγχο της εμφάνισης του PDF και είναι εφαρμόσιμες σε εργασίες όπως υδατογράφημα, επικάλυψη εικόνων ή δημιουργία σύνθετων οπτικών εφέ. + +Στη συνέχεια, μπορείτε να εξερευνήσετε: + +* Προσθήκη πολλαπλών graphic states για διαφορετικά επίπεδα διαφάνειας (παραλλαγές `add pdf transparency`) +* Ενημέρωση άλλων τύπων πόρων όπως γραμματοσειρές ή XObjects (`edit pdf resources` για εικόνες) +* Συγχώνευση πολλών PDF ενώ διατηρούνται προσαρμοσμένα graphic states (`save modified pdf` μεταξύ εγγράφων) + +Αισθανθείτε ελεύθεροι να πειραματιστείτε με λειτουργίες ανάμειξης, τιμές διαφάνειας και εμβέλειες πόρων ώστε να ταιριάζουν στη δική σας ροή επεξεργασίας εγγράφων. Καλή προγραμματιστική διασκέδαση! + +## Τι πρέπει να μάθετε στη συνέχεια; + +Τα παρακάτω tutorials καλύπτουν στενά συναφή θέματα που επεκτείνουν τις τεχνικές που παρουσιάζονται σε αυτόν τον οδηγό. Κάθε πόρος περιλαμβάνει πλήρη παραδείγματα κώδικα με βήμα‑βήμα εξηγήσεις για να σας βοηθήσουν να κυριαρχήσετε πρόσθετες δυνατότητες του API και να εξερευνήσετε εναλλακτικές προσεγγίσεις υλοποίησης στα δικά σας έργα. + +- [Προσθήκη Διαφάνειας σε PDF χρησιμοποιώντας Aspose – Πλήρης Οδηγός C#](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Προσθήκη Διαφάνειας σε PDF με Aspose PDF σε C# – Οδηγός Βήμα‑Βήμα](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Πώς να Αποθηκεύσετε PDF με Aspose – Πλήρης Οδηγός Μετατροπής C#](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/hindi/net/document-manipulation/_index.md b/pdf/hindi/net/document-manipulation/_index.md index 731d0c5f00..5b61b4fa1d 100644 --- a/pdf/hindi/net/document-manipulation/_index.md +++ b/pdf/hindi/net/document-manipulation/_index.md @@ -194,7 +194,7 @@ Aspose.PDF नेट के लिए एक कोड ट्यूटोरि इस व्यापक गाइड के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF पृष्ठों को कुशलतापूर्वक अलग-अलग फ़ाइलों में विभाजित करना सीखें। आज ही अपने दस्तावेज़ हेरफेर कौशल को बढ़ाएँ। ### [.NET के लिए Aspose.PDF का उपयोग करके PDF पृष्ठों को कैसे विभाजित करें: एक व्यापक गाइड](./split-pdf-pages-aspose-pdf-net/) -जानें कि .NET के लिए Aspose.PDF का उपयोग करके PDF से विशिष्ट पृष्ठों को अलग-अलग फ़ाइलों में कैसे विभाजित किया जाए। यह गाइड स्ट्रीम हैंडलिंग और सेटअप को कवर करती है। +जानें कि .NET के लिए Aspose.PDF का उपयोग करके PDF से विशिष्ट पृष्ठों को अलग-अलग फ़ाइलों में कैसे विभाजित किया जाए। यह गाइड स्ट्रीम हैंडलिंग और सेटअप को कवर करता है। ### [.NET के लिए Aspose.PDF का उपयोग करके PDF पृष्ठों को कैसे विभाजित करें: एक चरण-दर-चरण मार्गदर्शिका](./split-pdf-pages-aspose-pdf-net-guide/) इस व्यापक गाइड के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF पृष्ठों को विभाजित करना सीखें। C# में दस्तावेज़ हेरफेर में महारत हासिल करें और अपने वर्कफ़्लो को अनुकूलित करें। @@ -318,6 +318,8 @@ C# में Aspose.PDF का उपयोग करके PDF से संव ### [C# में PDF को कैसे मरम्मत करें – क्षतिग्रस्त PDF फ़ाइलों को जल्दी ठीक करें](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) C# में Aspose.PDF का उपयोग करके क्षतिग्रस्त PDF फ़ाइलों को जल्दी और आसानी से ठीक करने की चरण-दर-चरण गाइड। +### [Aspose.PDF के साथ संशोधित PDF को सहेजें और पारदर्शिता जोड़ें](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) + ## अतिरिक्त संसाधन - [Aspose.PDF for Net दस्तावेज़ीकरण](https://docs.aspose.com/pdf/net/) @@ -332,4 +334,4 @@ C# में Aspose.PDF का उपयोग करके क्षतिग {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/hindi/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/hindi/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..909a01aa4a --- /dev/null +++ b/pdf/hindi/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-09-21 +description: Aspose.Pdf का उपयोग करके C# में संशोधित PDF को सहेजें। PDF संसाधनों को + संपादित करना और पूर्ण, चलाने योग्य उदाहरण में PDF पारदर्शिता जोड़ना सीखें। +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: hi +lastmod: 2026-09-21 +og_description: C# में Aspose.Pdf के साथ संशोधित PDF को सहेजें। यह गाइड दिखाता है + कि PDF संसाधनों को कैसे संपादित करें और पेशेवर दस्तावेज़ प्रसंस्करण के लिए PDF पारदर्शिता + कैसे जोड़ें। +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Aspose.Pdf के साथ संशोधित PDF सहेजें – चरण‑दर‑चरण पारदर्शिता जोड़ें +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Aspose.Pdf के साथ संशोधित PDF को कैसे सहेजें और पारदर्शिता जोड़ें +url: /hi/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.Pdf के साथ संशोधित PDF को कैसे सहेजें और पारदर्शिता जोड़ें + +यदि आपको आंतरिक संसाधनों को बदलने के बाद **संशोधित PDF को सहेजना** है, तो यह गाइड एक पूर्ण समाधान प्रदान करता है। आप सीखेंगे कि PDF संसाधनों को कैसे संपादित करें, एक कस्टम ग्राफिक‑स्टेट डिक्शनरी कैसे डालें, और Aspose.Pdf for .NET का उपयोग करके PDF पारदर्शिता कैसे जोड़ें। + +यह ट्यूटोरियल स्रोत फ़ाइल को लोड करने से लेकर आउटपुट को सत्यापित करने तक के सभी चरणों को कवर करता है। कोई बाहरी संदर्भ आवश्यक नहीं है; कोड किसी भी .NET 6+ प्रोजेक्ट में Aspose.Pdf लाइब्रेरी स्थापित होने पर जैसा है वैसा चलता है। + +## पूर्वापेक्षाएँ + +* .NET 6 SDK या बाद का स्थापित हो +* एक वैध Aspose.Pdf for .NET लाइसेंस (या अस्थायी मूल्यांकन कुंजी) +* **input.pdf** नामक इनपुट PDF जिसे आप नियंत्रित फ़ोल्डर में रखें +* C# और PDF अवधारणाओं जैसे संसाधन और ग्राफिक स्टेट्स का बुनियादी ज्ञान + +ये वस्तुएँ सुनिश्चित करती हैं कि नमूना बिना अनुमति या संगतता समस्याओं के चले। + +## संसाधनों को संपादित करने के बाद संशोधित PDF को कैसे सहेजें + +निम्नलिखित कोड पूरी कार्यप्रवाह को निष्पादित करता है: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### प्रत्येक चरण क्यों महत्वपूर्ण है + +* **Step 1** फ़ोल्डर पथ को अलग करता है ताकि आप लोडिंग और सहेजने के लिए वही वेरिएबल पुनः उपयोग कर सकें। +* **Step 2** स्रोत फ़ाइल को `using` ब्लॉक में खोलता है, जिससे सभी नेटिव संसाधनों का रिलीज़ होना सुनिश्चित होता है। +* **Step 3** पृष्ठ के **Resources** डिक्शनरी तक पहुँचता है, जो फ़ॉन्ट, इमेज और ग्राफिक स्टेट्स जैसे ऑब्जेक्ट्स को संग्रहीत करता है। इस डिक्शनरी को संपादित करना **edit pdf resources** का मूल है। +* **Step 4** एक नया **ExtGState** एंट्री बनाता है। कुंजियाँ `CA`, `ca`, और `BM` क्रमशः स्ट्रोक अपारदर्शिता, फ़िल अपारदर्शिता, और ब्लेंड मोड को नियंत्रित करती हैं—यही तरीका है **add pdf transparency** करने का। +* **Step 5** नए ग्राफिक स्टेट को नाम `GS0` के तहत रजिस्टर करता है। `GS0` को संदर्भित करने वाली कोई भी सामग्री पारदर्शिता सेटिंग्स को विरासत में लेगी। +* **Step 6** (वैकल्पिक) एक व्यावहारिक उपयोग केस दिखाता है: कस्टम ग्राफिक स्टेट के साथ खींचा गया एक आयत। यह दृश्य परीक्षण पुष्टि करता है कि पारदर्शिता काम कर रही है। +* **Step 7** बदलावों को **output.pdf** में लिखता है, जिससे **save modified pdf** का मुख्य लक्ष्य पूरा होता है। + +### अपेक्षित परिणाम + +* `output.pdf` स्रोत फ़ाइल के समान फ़ोल्डर में दिखाई देता है। +* पहले पृष्ठ में एक अर्ध‑पारदर्शी आयत है (50 % फ़िल अपारदर्शिता, 100 % स्ट्रोक अपारदर्शिता)। +* फ़ाइल को Adobe Acrobat या किसी भी PDF व्यूअर में खोलने पर आयत पृष्ठभूमि के साथ मिश्रित दिखती है, जिससे **add pdf transparency** चरण की सफलता की पुष्टि होती है। + +आप किसी भी PDF रीडर से फ़ाइल खोलकर दृश्य प्रभाव की पुष्टि कर सकते हैं। + +## Aspose.Pdf के साथ PDF संसाधनों को संपादित करना + +जब आपको लो‑लेवल PDF ऑब्जेक्ट्स को बदलना हो, तो **Resources** डिक्शनरी प्रवेश बिंदु होती है। सामान्य परिदृश्य शामिल हैं: + +| कुंजी | अर्थ | सामान्य मान | +|------|------|-------------| +| `CA` | स्ट्रोक अपारदर्शिता (0 = पारदर्शी, 1 = अपारदर्शी) | `0.0` – `1.0` | +| `ca` | फ़िल अपारदर्शिता (सीमा `CA` के समान) | `0.0` – `1.0` | +| `BM` | ब्लेंड मोड – स्रोत और गंतव्य रंग कैसे मिलते हैं | `"Normal"`, `"Multiply"`, `"Screen"` आदि | + +उपरोक्त कोड पैटर्न दर्शाता है: `DictionaryEditor` प्राप्त करें, लक्ष्य सब‑डिक्शनरी (जैसे `ExtGState`) को locate करें, और फिर एंट्रीज़ को जोड़ें या बदलें। यह तरीका **edit pdf resources** को सुरक्षित रूप से करने की अनुशंसित विधि है। + +आप विभिन्न ब्लेंड मोड्स के साथ प्रयोग कर सकते हैं ताकि सॉफ्ट‑लाइट या ओवरले जैसे प्रभाव प्राप्त हों। बस `"Normal"` को किसी अन्य `CosPdfName` मान से बदलें। ग्राफिक स्टेट को कई पृष्ठों या ऑब्जेक्ट्स में समान नाम (`GS0` नमूने में) को संदर्भित करके पुनः उपयोग किया जा सकता है। + +## सामान्य कठिनाइयाँ और प्रो टिप्स + +| समस्या | क्यों होता है | समाधान | +|--------|--------------|--------| +| `ExtGState` एंट्री मौजूद नहीं है | कुछ PDFs में ग्राफिक स्टेट जोड़ने तक डिक्शनरी नहीं होती | Use `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` before adding | +| पुराने व्यूअर्स में पारदर्शिता अनदेखी लगती है | व्यूअर PDF 1.4+ पारदर्शिता का समर्थन नहीं करता | Ensure the output file’s PDF version is at least 1.4 (`pdfDocument.Version = 1.4`) | +| मौजूदा ग्राफिक स्टेट्स के साथ नाम टकराव | पहले से मौजूद नाम का उपयोग करने से अनजाने में ओवरराइट हो जाता है | Choose a unique name (e.g., `"GS0"`, `"GS_CustomAlpha"`) or check `extGStateDict.ContainsKey(name)` first | + +इन टिप्स को लागू करने से डिबगिंग समय कम होता है और विश्वसनीय परिणाम मिलते हैं। + +## पूरा कार्यशील उदाहरण सारांश + +नीचे पूरा प्रोग्राम बिना व्याख्यात्मक टिप्पणियों के दिया गया है, जिसे आप कॉपी‑पेस्ट करके कंसोल प्रोजेक्ट में उपयोग कर सकते हैं: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +## निष्कर्ष + +अब आप जानते हैं कि लो‑लेवल बदलाव करने के बाद **save modified PDF** कैसे किया जाता है, Aspose.Pdf के `DictionaryEditor` का उपयोग करके **edit PDF resources** कैसे किया जाता है, और कस्टम ग्राफिक‑स्टेट डिक्शनरी के माध्यम से **add PDF transparency** कैसे किया जाता है। ये तकनीकें आपको PDF रूपरेखा पर सूक्ष्म नियंत्रण देती हैं और वॉटरमार्किंग, इमेज ओवरले, या जटिल दृश्य प्रभाव बनाने जैसे कार्यों में लागू होती हैं। + +अगले में आप क्या सीखना चाहिए? + +* विभिन्न अपारदर्शिता स्तरों के लिए कई ग्राफिक स्टेट्स जोड़ना (`add pdf transparency` विविधताएँ) +* फ़ॉन्ट या XObjects जैसे अन्य संसाधन प्रकारों को अपडेट करना (`edit pdf resources` इमेज के लिए) +* कई PDFs को मर्ज करना जबकि कस्टम ग्राफिक स्टेट्स को संरक्षित रखना (`save modified pdf` दस्तावेज़ों में) + +ब्लेंड मोड्स, अपारदर्शिता मानों, और संसाधन स्कोप्स के साथ प्रयोग करने में संकोच न करें ताकि आपका दस्तावेज़‑प्रोसेसिंग वर्कफ़्लो फिट हो सके। कोडिंग का आनंद लें! + +## अगले में आपको क्या सीखना चाहिए? + +निम्नलिखित ट्यूटोरियल्स उन निकट संबंधित विषयों को कवर करते हैं जो इस गाइड में दर्शाए गए तकनीकों पर आधारित हैं। प्रत्येक संसाधन में पूर्ण कार्यशील कोड उदाहरण और चरण‑दर‑चरण व्याख्याएँ शामिल हैं जो आपको अतिरिक्त API फीचर्स में निपुण बनने और अपने प्रोजेक्ट्स में वैकल्पिक कार्यान्वयन दृष्टिकोणों का अन्वेषण करने में मदद करती हैं। + +- [Aspose का उपयोग करके PDF में पारदर्शिता जोड़ें – पूर्ण C# गाइड](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [C# में Aspose PDF के साथ PDF में पारदर्शिता जोड़ें – चरण‑दर‑चरण गाइड](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Aspose के साथ PDF को कैसे सहेजें – पूर्ण C# रूपांतरण गाइड](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/hongkong/net/document-manipulation/_index.md b/pdf/hongkong/net/document-manipulation/_index.md index e7b90e371b..cf05adcdf8 100644 --- a/pdf/hongkong/net/document-manipulation/_index.md +++ b/pdf/hongkong/net/document-manipulation/_index.md @@ -317,6 +317,8 @@ Aspose.PDF Net 程式碼教學 ### [如何在 C# 中修復 PDF – 快速修復損壞的 PDF 檔案](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) 了解如何使用 Aspose.PDF for .NET 在 C# 中快速修復受損的 PDF 檔案,恢復其內容與結構。 +### [如何使用 Aspose.PDF 保存已修改的 PDF 並新增透明度](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) + ## 其他資源 - [Aspose.PDF 用於網頁文檔](https://docs.aspose.com/pdf/net/) @@ -331,4 +333,4 @@ Aspose.PDF Net 程式碼教學 {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/hongkong/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/hongkong/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..85f5cd4c6a --- /dev/null +++ b/pdf/hongkong/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-09-21 +description: 使用 Aspose.Pdf 於 C# 儲存已修改的 PDF。學習編輯 PDF 資源並在完整可執行範例中加入 PDF 透明度。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: zh-hant +lastmod: 2026-09-21 +og_description: 使用 C# 及 Aspose.Pdf 儲存已修改的 PDF。本指南說明如何編輯 PDF 資源並加入 PDF 透明度,以實現專業文件處理。 +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: 使用 Aspose.Pdf 保存已修改的 PDF – 逐步添加透明度 +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: 如何使用 Aspose.Pdf 儲存已修改的 PDF 並加入透明度 +url: /zh-hant/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Aspose.Pdf 儲存已修改的 PDF 並加入透明度 + +如果您需要在變更 PDF 內部資源後 **儲存已修改的 PDF**,本指南提供完整解決方案。您將學會編輯 PDF 資源、插入自訂 graphic‑state 字典,並使用 Aspose.Pdf for .NET 為 PDF 加入透明度。 + +本教學涵蓋從載入來源檔案到驗證輸出結果的每一步。無需外部參考;只要在任意 .NET 6+ 專案中安裝 Aspose.Pdf 套件,即可直接執行程式碼。 + +## 前置條件 + +開始之前,請確保您已具備: + +* 已安裝 .NET 6 SDK 或更新版本 +* 有效的 Aspose.Pdf for .NET 授權(或暫時的評估金鑰) +* 名為 **input.pdf** 的輸入 PDF,放置於您可控制的資料夾中 +* 具備 C# 基礎知識以及 PDF 概念(如資源與 graphic states) + +以上項目可確保範例在權限或相容性問題上順利執行。 + +## 如何在編輯資源後儲存已修改的 PDF + +以下程式碼執行完整工作流程: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### 為何每一步都很重要 + +* **步驟 1** 取得資料夾路徑,讓您可以在載入與儲存時重複使用同一變數。 +* **步驟 2** 在 `using` 區塊中開啟來源檔案,確保所有原生資源都會被釋放。 +* **步驟 3** 取得頁面的 **Resources** 字典,該字典儲存字型、影像與 graphic states 等物件。編輯此字典即為 **edit pdf resources** 的核心。 +* **步驟 4** 建立新的 **ExtGState** 條目。鍵 `CA`、`ca` 與 `BM` 分別控制描邊不透明度、填充不透明度與混合模式——這正是 **add pdf transparency** 的方式。 +* **步驟 5** 以名稱 `GS0` 註冊新 graphic state。任何引用 `GS0` 的內容都會繼承此透明度設定。 +* **步驟 6**(可選)示範實際使用情境:使用自訂 graphic state 繪製矩形。此視覺測試可確認透明度是否生效。 +* **步驟 7** 將變更寫入 **output.pdf**,完成 **save modified pdf** 的主要目標。 + +### 預期結果 + +* `output.pdf` 會出現在與來源檔案相同的資料夾中。 +* 第一頁會出現一個半透明矩形(填充不透明度 50 %,描邊不透明度 100 %)。 +* 使用 Adobe Acrobat 或任何 PDF 閱讀器開啟時,矩形會與背景混合,證明 **add pdf transparency** 步驟成功。 + +您可以使用任何 PDF 閱讀器開啟檔案,以驗證視覺效果。 + +## 使用 Aspose.Pdf 編輯 PDF 資源 + +當您需要變更低階 PDF 物件時,**Resources** 字典是入口點。常見情境包括: + +| 情境 | 使用 Aspose.Pdf 的做法 | +|------|------------------------| +| 取代已存在的字型 | 取得 `Resources["Font"]`,修改對應條目 | +| 新增影像 XObject | 建立 `CosPdfStream`,加入 `Resources["XObject"]` | +| 為特定路徑變更線寬 | 新增自訂 `ExtGState`,設定 `/LW` 參數 | + +上方程式碼示範了這個模式:取得 `DictionaryEditor`、定位目標子字典(例如 `ExtGState`),然後加入或取代條目。此方式是安全 **edit pdf resources** 的推薦做法。 + +## 詳細說明 PDF 透明度(混合模式、Alpha) + +PDF 中的透明度是由 **ExtGState** 物件定義的。範例中使用的三個鍵說明如下: + +| 鍵 | 意義 | 常見取值 | +|----|------|----------| +| `CA` | 描邊不透明度(0 = 完全透明,1 = 完全不透明) | `0.0` – `1.0` | +| `ca` | 填充不透明度(與 `CA` 同範圍) | `0.0` – `1.0` | +| `BM` | 混合模式——決定來源與目標顏色的結合方式 | `"Normal"`、`"Multiply"`、`"Screen"` 等 | + +您可以嘗試不同的混合模式,以產生 soft‑light、overlay 等效果。只要將 `"Normal"` 替換為其他 `CosPdfName` 值即可。此 graphic state 可在多個頁面或物件間重複使用,只要引用相同名稱(範例中的 `GS0`)。 + +## 常見陷阱與專業提示 + +| 陷阱 | 為何會發生 | 解決方式 | +|------|------------|----------| +| `ExtGState` 條目不存在 | 某些 PDF 直到加入 graphic state 前不會有此字典 | 在加入前使用 `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` | +| 在舊版閱讀器中透明度被忽略 | 閱讀器不支援 PDF 1.4 以上的透明度 | 確保輸出檔的 PDF 版本至少為 1.4(`pdfDocument.Version = 1.4`) | +| 與既有 graphic state 名稱衝突 | 使用已存在的名稱會不小心覆寫 | 使用唯一名稱(如 `"GS0"`、`"GS_CustomAlpha"`),或先檢查 `extGStateDict.ContainsKey(name)` | + +遵循這些提示可減少除錯時間,並產生更可靠的結果。 + +## 完整範例回顧 + +以下是完整程式碼(不含說明註解),可直接複製貼上至 Console 專案: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +執行此程式會產生 **output.pdf**,其中包含透明矩形,且保留 **input.pdf** 的所有其他內容。 + +## 結論 + +您現在已掌握在執行低階變更後 **save modified PDF** 的方法、如何使用 Aspose.Pdf 的 `DictionaryEditor` **edit PDF resources**,以及如何透過自訂 graphic‑state 字典 **add PDF transparency**。這些技巧讓您對 PDF 外觀擁有精細控制,適用於浮水印、影像疊加或製作複雜視覺效果等任務。 + +接下來,您可以探索: + +* 為不同不透明度等級新增多個 graphic state(`add pdf transparency` 的變化) +* 更新其他資源類型,如字型或 XObject(`edit pdf resources` 用於影像) +* 合併多個 PDF 同時保留自訂 graphic state(跨文件的 `save modified pdf`) + +歡迎自行嘗試不同的混合模式、透明度數值與資源範圍,以符合您的文件處理工作流程。祝開發順利! + +## 接下來該學什麼? + +以下教學與本指南緊密相關,能進一步深化您的技巧。每篇資源皆提供完整可執行的程式碼範例與逐步說明,協助您掌握更多 API 功能,並在專案中探索替代實作方式。 + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/hungarian/net/document-manipulation/_index.md b/pdf/hungarian/net/document-manipulation/_index.md index fd8d1d04f7..54a5ca3952 100644 --- a/pdf/hungarian/net/document-manipulation/_index.md +++ b/pdf/hungarian/net/document-manipulation/_index.md @@ -317,6 +317,9 @@ Ismerje meg, hogyan távolíthatja el vagy takarhatja el a PDF dokumentumok érz ### [PDF javítása C#-ban – Sérült PDF-fájlok gyors javítása](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) +### [Hogyan mentse el a módosított PDF-et az Aspose.PDF segítségével és adjon hozzá átlátszóságot](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Ismerje meg, hogyan menthet el módosított PDF-et és adhat hozzá átlátszóságot az Aspose.PDF for .NET használatával. + ## További források - [Aspose.PDF a hálózati dokumentációhoz](https://docs.aspose.com/pdf/net/) @@ -331,4 +334,4 @@ Ismerje meg, hogyan távolíthatja el vagy takarhatja el a PDF dokumentumok érz {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/hungarian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/hungarian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..d882d87c81 --- /dev/null +++ b/pdf/hungarian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-09-21 +description: Módosított PDF mentése Aspose.Pdf használatával C#-ban. Tanulja meg a + PDF-erőforrások szerkesztését és a PDF-átlátszóság hozzáadását egy teljes, futtatható + példában. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: hu +lastmod: 2026-09-21 +og_description: Módosított PDF mentése Aspose.Pdf segítségével C#-ban. Ez az útmutató + bemutatja, hogyan szerkeszthetőek a PDF-erőforrások, és hogyan adható hozzá PDF-átlátszóság + a professzionális dokumentumfeldolgozáshoz. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Módosított PDF mentése az Aspose.Pdf segítségével – átlátszóság hozzáadása + lépésről lépésre +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Hogyan menthetünk módosított PDF-et az Aspose.Pdf használatával, és adhatunk + hozzá átlátszóságot +url: /hu/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan mentse el a módosított PDF-et az Aspose.Pdf segítségével és adjon hozzá átlátszóságot + +Ha **módosított PDF-et** kell elmentenie a belső erőforrások módosítása után, ez az útmutató teljes megoldást nyújt. Megtanulja, hogyan szerkessze a PDF erőforrásait, hogyan illesszen be egy egyedi graphic‑state szótárat, és hogyan adjon hozzá PDF átlátszóságot az Aspose.Pdf for .NET használatával. + +Az útmutató minden lépést lefed a forrásfájl betöltésétől a kimenet ellenőrzéséig. Külső hivatkozásokra nincs szükség; a kód változtatás nélkül fut bármely .NET 6+ projektben, ahol az Aspose.Pdf könyvtár telepítve van. + +## Előfeltételek + +Mielőtt elkezdené, győződjön meg róla, hogy rendelkezik a következőkkel: + +* .NET 6 SDK vagy újabb telepítve +* Érvényes Aspose.Pdf for .NET licenc (vagy ideiglenes értékelő kulcs) +* **input.pdf** nevű bemeneti PDF, amelyet egy saját mappában helyez el +* Alapvető C# és PDF koncepciók ismerete, például erőforrások és graphic state‑k + +Ezek az elemek biztosítják, hogy a példa engedély- vagy kompatibilitási problémák nélkül fusson. + +## Hogyan mentse el a módosított PDF-et az erőforrások szerkesztése után + +Az alábbi kód végrehajtja a teljes munkafolyamatot: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Miért fontos minden egyes lépés + +* **Step 1** izolálja a mappapath‑t, így ugyanazt a változót újra felhasználhatja a betöltéshez és a mentéshez. +* **Step 2** megnyitja a forrásfájlt egy `using` blokkban, garantálva, hogy minden natív erőforrás felszabadul. +* **Step 3** eléri az oldal **Resources** szótárát, amely olyan objektumokat tárol, mint betűtípusok, képek és graphic state‑k. Ennek a szótárnak a szerkesztése a **edit pdf resources** lényege. +* **Step 4** létrehoz egy új **ExtGState** bejegyzést. A `CA`, `ca` és `BM` kulcsok vezérlik a vonal átlátszóságát, a kitöltés átlátszóságát és a keverési módot – ez a módja annak, hogy **add pdf transparency**. +* **Step 5** regisztrálja az új graphic state‑t a `GS0` név alatt. Minden tartalom, amely a `GS0`‑ra hivatkozik, örökli az átlátszósági beállításokat. +* **Step 6** (opcionális) egy gyakorlati példát mutat: egy téglalap, amelyet az egyedi graphic state‑vel rajzolnak. Ez a vizuális teszt megerősíti, hogy az átlátszóság működik. +* **Step 7** a változtatásokat a **output.pdf**‑be írja, ezzel teljesítve a **save modified pdf** elsődleges célját. + +### Várható eredmény + +* `output.pdf` a forrásfájlhoz ugyanabban a mappában jelenik meg. +* Az első oldal egy félig átlátszó téglalapot tartalmaz (50 % kitöltési átlátszóság, 100 % vonal átlátszóság). +* A fájl megnyitása Adobe Acrobatban vagy bármely PDF‑nézőben a téglalapot a háttérrel keverve mutatja, ami megerősíti, hogy a **add pdf transparency** lépés sikeres volt. + +A fájlt bármely PDF‑olvasóval megnyithatja a vizuális hatás ellenőrzéséhez. + +## PDF erőforrások szerkesztése az Aspose.Pdf‑vel + +Amikor alacsony szintű PDF objektumokat kell módosítani, a **Resources** szótár a kiindulópont. Gyakori forgatókönyvek a következők: + +| Szenárió | Hogyan valósítható meg az Aspose.Pdf‑vel | +|--------------------------------------|------------------------------------------| +| Létező betűtípus cseréje | `Resources["Font"]` lekérése, bejegyzés módosítása | +| Új kép‑XObject hozzáadása | `CosPdfStream` létrehozása, hozzáadása a `Resources["XObject"]`‑hez | +| Vonalvastagság módosítása egy adott útvonalhoz| Egyedi `ExtGState` hozzáadása `/LW` paraméterrel | + +A fenti kód bemutatja a mintát: lekéri a `DictionaryEditor`‑t, megtalálja a cél al‑szótárat (pl. `ExtGState`), majd hozzáad vagy felülír bejegyzéseket. Ez a megközelítés a **edit pdf resources** biztonságos elvégzésének ajánlott módja. + +## PDF átlátszóság hozzáadása (blend mode, alfa) részletesen + +A PDF átlátszóságot a **ExtGState** objektum határozza meg. A példában használt három kulcs a következő: + +| Kulcs | Jelentés | Tipikus értékek | +|-----|---------|----------------| +| `CA` | Vonal átlátszóság (0 = átlátszó, 1 = átlátszatlan) | `0.0` – `1.0` | +| `ca` | Kitöltés átlátszóság (ugyanaz a tartomány, mint a `CA`) | `0.0` – `1.0` | +| `BM` | Keverési mód – hogyan kombinálódnak a forrás és a cél színek | `"Normal"`, `"Multiply"`, `"Screen"` stb. | + +Kísérletezhet különböző blend mode‑okkal, hogy például soft‑light vagy overlay hatást érjen el. Egyszerűen cserélje le a `"Normal"`‑t egy másik `CosPdfName` értékre. A graphic state több oldal vagy objektum között is újrahasználható ugyanazzal a névvel (`GS0` a példában). + +## Gyakori buktatók és profi tippek + +| Probléma | Miért fordul elő | Megoldás | +|---------|----------------|-----| +| Az `ExtGState` bejegyzés nem létezik | Néhány PDF csak akkor hozza létre a szótárat, amikor graphic state‑t adnak hozzá | A hozzáadás előtt használja a `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` kifejezést | +| Az átlátszóság figyelmen kívül marad a régebbi nézőkben | A néző nem támogatja a PDF 1.4+ átlátszóságot | Győződjön meg róla, hogy a kimeneti fájl PDF verziója legalább 1.4 (`pdfDocument.Version = 1.4`) | +| Névütközés meglévő graphic state‑kkel | Egy már létező név használata véletlenül felülírja azt | Válasszon egyedi nevet (pl. `"GS0"`, `"GS_CustomAlpha"`), vagy ellenőrizze előbb, hogy a `extGStateDict.ContainsKey(name)` igaz-e | + +Ezeknek a tippeknek az alkalmazása csökkenti a hibakeresési időt és megbízható eredményeket hoz. + +## Teljes működő példa összefoglaló + +Az alábbiakban a teljes program látható magyarázó megjegyzések nélkül, készen áll a másolás‑beillesztésre egy konzolprojektbe: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +A program futtatása létrehozza a **output.pdf**‑t, amely tartalmazza az átlátszó téglalapot, és megőrzi a **input.pdf** összes többi tartalmát. + +## Következtetés + +Most már tudja, hogyan **mentse el a módosított PDF-et** alacsony szintű módosítások után, hogyan **szerkessze a PDF erőforrásait** az Aspose.Pdf `DictionaryEditor`‑jével, és hogyan **adjon hozzá PDF átlátszóságot** egy egyedi graphic‑state szótárral. Ezek a technikák finomhangolt vezérlést biztosítanak a PDF megjelenése felett, és alkalmazhatók olyan feladatokra, mint vízjel hozzáadása, képek átfedése vagy összetett vizuális hatások létrehozása. + +Ezután érdemes felfedezni: + +* Több graphic state hozzáadása különböző átlátszósági szintekhez (`add pdf transparency` változatok) +* Egyéb erőforrás típusok, például betűtípusok vagy XObject‑ek frissítése (`edit pdf resources` képekhez) +* Több PDF egyesítése, miközben megőrzik az egyedi graphic state‑ket (`save modified pdf` dokumentumok között) + +Nyugodtan kísérletezzen blend mode‑okkal, átlátszósági értékekkel és erőforrás hatókörökkel, hogy a saját dokumentum‑feldolgozó munkafolyamatához illeszkedjenek. Boldog kódolást! + +## Mit érdemes még megtanulni? + +Az alábbi oktatóanyagok szorosan kapcsolódó témákat fednek le, amelyek a jelen útmutatóban bemutatott technikákra épülnek. Minden forrás teljesen működő kódrészleteket tartalmaz lépésről‑lépésre magyarázatokkal, hogy segítsen elsajátítani további API funkciókat és alternatív megvalósítási megközelítéseket a saját projektjeiben. + +- [Átlátszóság hozzáadása PDF-hez az Aspose használatával – Teljes C# útmutató](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Átlátszóság hozzáadása PDF-hez Aspose PDF‑vel C#‑ban – Lépésről‑lépésre útmutató](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Hogyan mentse el a PDF-et az Aspose‑szal – Teljes C# konverziós útmutató](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/indonesian/net/document-manipulation/_index.md b/pdf/indonesian/net/document-manipulation/_index.md index c79eece86e..faafb64490 100644 --- a/pdf/indonesian/net/document-manipulation/_index.md +++ b/pdf/indonesian/net/document-manipulation/_index.md @@ -318,6 +318,8 @@ Pelajari cara memperbaiki file PDF yang rusak secara cepat menggunakan C# dan As ### [Cara Menyensor PDF di C# dengan Aspose PDF – Panduan Lengkap](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) Pelajari cara menyensor konten sensitif dalam file PDF menggunakan Aspose PDF untuk .NET dengan contoh kode C# lengkap. +### [Cara menyimpan PDF yang dimodifikasi dengan Aspose.PDF dan menambahkan transparansi](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) + ## Sumber Daya Tambahan - [Dokumentasi Aspose.PDF untuk Net](https://docs.aspose.com/pdf/net/) @@ -332,4 +334,4 @@ Pelajari cara menyensor konten sensitif dalam file PDF menggunakan Aspose PDF un {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/indonesian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/indonesian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..079d4ae55a --- /dev/null +++ b/pdf/indonesian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-09-21 +description: Simpan PDF yang dimodifikasi menggunakan Aspose.Pdf di C#. Pelajari cara + mengedit sumber daya PDF dan menambahkan transparansi PDF dalam contoh lengkap yang + dapat dijalankan. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: id +lastmod: 2026-09-21 +og_description: Simpan PDF yang dimodifikasi dengan Aspose.Pdf di C#. Panduan ini + menunjukkan cara mengedit sumber daya PDF dan menambahkan transparansi PDF untuk + pemrosesan dokumen profesional. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Simpan PDF yang dimodifikasi dengan Aspose.Pdf – tambahkan transparansi + langkah demi langkah +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Cara menyimpan PDF yang dimodifikasi dengan Aspose.Pdf dan menambahkan transparansi +url: /id/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara menyimpan PDF yang dimodifikasi dengan Aspose.Pdf dan menambahkan transparansi + +Jika Anda perlu **menyimpan PDF yang dimodifikasi** setelah mengubah sumber daya internalnya, panduan ini menyediakan solusi lengkap. Anda akan belajar cara mengedit sumber daya PDF, menyisipkan kamus graphic‑state khusus, dan menambahkan transparansi PDF menggunakan Aspose.Pdf untuk .NET. + +Tutorial ini mencakup setiap langkah mulai dari memuat file sumber hingga memverifikasi output. Tidak diperlukan referensi eksternal; kode dapat dijalankan apa adanya di proyek .NET 6+ mana pun dengan pustaka Aspose.Pdf terpasang. + +## Prasyarat + +Sebelum memulai, pastikan Anda memiliki: + +* .NET 6 SDK atau yang lebih baru terpasang +* Lisensi Aspose.Pdf untuk .NET yang valid (atau kunci evaluasi sementara) +* File PDF input bernama **input.pdf** yang ditempatkan di folder yang Anda kontrol +* Pengetahuan dasar tentang C# dan konsep PDF seperti resources dan graphic states + +Item‑item ini memastikan contoh dapat dijalankan tanpa masalah izin atau kompatibilitas. + +## Cara menyimpan PDF yang dimodifikasi setelah mengedit sumber daya + +Kode berikut melakukan seluruh alur kerja: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Mengapa setiap langkah penting + +* **Step 1** mengisolasi jalur folder sehingga Anda dapat menggunakan kembali variabel yang sama untuk memuat dan menyimpan. +* **Step 2** membuka file sumber dalam blok `using`, menjamin semua sumber daya native dilepaskan. +* **Step 3** mengakses kamus **Resources** pada halaman, yang menyimpan objek seperti font, gambar, dan graphic states. Mengedit kamus ini adalah inti dari **edit pdf resources**. +* **Step 4** membangun entri **ExtGState** baru. Kunci `CA`, `ca`, dan `BM` mengontrol opacity garis, opacity isi, dan mode pencampuran masing‑masing—ini cara Anda **add pdf transparency**. +* **Step 5** mendaftarkan graphic state baru dengan nama `GS0`. Konten apa pun yang merujuk ke `GS0` akan mewarisi pengaturan transparansi. +* **Step 6** (opsional) menunjukkan kasus penggunaan praktis: sebuah persegi panjang yang digambar dengan graphic state khusus. Tes visual ini mengonfirmasi bahwa transparansi berfungsi. +* **Step 7** menulis perubahan ke **output.pdf**, memenuhi tujuan utama untuk **save modified pdf**. + +### Hasil yang diharapkan + +* `output.pdf` muncul di folder yang sama dengan file sumber. +* Halaman pertama berisi persegi panjang semi‑transparan (opacity isi 50 %, opacity garis 100 %). +* Membuka file di Adobe Acrobat atau penampil PDF apa pun menampilkan persegi panjang yang tercampur dengan latar belakang, mengonfirmasi bahwa langkah **add pdf transparency** berhasil. + +Anda dapat membuka file dengan pembaca PDF apa pun untuk memverifikasi efek visual. + +## Mengedit sumber daya PDF dengan Aspose.Pdf + +Ketika Anda perlu mengubah objek PDF tingkat rendah, kamus **Resources** adalah titik masuknya. Skenario umum meliputi: + +| Skenario | Cara mencapainya dengan Aspose.Pdf | +|--------------------------------------|-----------------------------------| +| Mengganti font yang ada | Retrieve `Resources["Font"]`, modify the entry | +| Menambahkan XObject gambar baru | Create a `CosPdfStream`, add to `Resources["XObject"]` | +| Mengubah lebar garis untuk path tertentu| Add a custom `ExtGState` with `/LW` parameter | + +Kode di atas mendemonstrasikan pola: ambil `DictionaryEditor`, temukan sub‑dictionary target (misalnya `ExtGState`), lalu tambahkan atau ganti entri. Pendekatan ini adalah cara yang direkomendasikan untuk **edit pdf resources** dengan aman. + +## Menambahkan transparansi PDF (mode campuran, alfa) secara detail + +Transparansi dalam PDF didefinisikan oleh objek **ExtGState**. Tiga kunci yang digunakan dalam contoh adalah: + +| Key | Makna | Nilai tipikal | +|-----|-------|----------------| +| `CA` | Opasitas garis (0 = transparan, 1 = opaque) | `0.0` – `1.0` | +| `ca` | Opasitas isi (rentang yang sama dengan `CA`) | `0.0` – `1.0` | +| `BM` | Mode pencampuran – bagaimana warna sumber dan tujuan digabungkan | `"Normal"`, `"Multiply"`, `"Screen"` etc. | + +Anda dapat bereksperimen dengan mode pencampuran yang berbeda untuk mencapai efek seperti soft‑light atau overlay. Cukup ganti `"Normal"` dengan nilai `CosPdfName` lain. Graphic state dapat digunakan kembali di beberapa halaman atau objek dengan merujuk ke nama yang sama (`GS0` dalam contoh). + +## Kesalahan umum dan tip profesional + +| Masalah | Mengapa terjadi | Solusi | +|---------|----------------|-------| +| Entri `ExtGState` tidak ada | Beberapa PDF tidak menyertakan kamus hingga graphic state ditambahkan | Use `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` before adding | +| Transparansi tampak diabaikan pada penampil lama | Penampil tidak mendukung transparansi PDF 1.4+ | Ensure the output file’s PDF version is at least 1.4 (`pdfDocument.Version = 1.4`) | +| Bentrok nama dengan graphic state yang sudah ada | Menggunakan nama yang sudah ada akan menimpanya secara tidak sengaja | Choose a unique name (e.g., `"GS0"`, `"GS_CustomAlpha"`) or check `extGStateDict.ContainsKey(name)` first | + +Menerapkan tip‑tip ini mengurangi waktu debugging dan menghasilkan hasil yang dapat diandalkan. + +## Ringkasan contoh kerja penuh + +Berikut seluruh program tanpa komentar penjelas, siap disalin‑tempel ke proyek konsol: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Menjalankan program ini membuat **output.pdf** yang berisi persegi panjang transparan dan mempertahankan semua konten lain dari **input.pdf**. + +## Kesimpulan + +Anda kini tahu cara **menyimpan PDF yang dimodifikasi** setelah melakukan perubahan tingkat rendah, cara **mengedit sumber daya PDF** menggunakan `DictionaryEditor` Aspose.Pdf, dan cara **menambahkan transparansi PDF** melalui kamus graphic‑state khusus. Teknik‑teknik ini memberi Anda kontrol halus atas tampilan PDF dan dapat diterapkan pada tugas seperti watermarking, menumpuk gambar, atau membuat efek visual yang kompleks. + +Selanjutnya, Anda mungkin ingin mengeksplorasi: + +* Menambahkan banyak graphic state untuk tingkat opacity yang berbeda (variasi `add pdf transparency`) +* Memperbarui tipe sumber daya lain seperti font atau XObject (`edit pdf resources` untuk gambar) +* Menggabungkan beberapa PDF sambil mempertahankan graphic state khusus (`save modified pdf` lintas dokumen) + +Silakan bereksperimen dengan mode pencampuran, nilai opacity, dan ruang lingkup sumber daya untuk menyesuaikan alur kerja pemrosesan dokumen Anda. Selamat coding! + +## Apa yang Harus Anda Pelajari Selanjutnya? + +Tutorial berikut mencakup topik terkait yang membangun teknik yang ditunjukkan dalam panduan ini. Setiap sumber daya menyertakan contoh kode lengkap dengan penjelasan langkah‑demi‑langkah untuk membantu Anda menguasai fitur API tambahan dan mengeksplorasi pendekatan implementasi alternatif dalam proyek Anda sendiri. + +- [Menambahkan Transparansi ke PDF menggunakan Aspose – Panduan C# Lengkap](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Menambahkan Transparansi ke PDF dengan Aspose PDF di C# – Panduan Langkah‑demi‑Langkah](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Cara Menyimpan PDF dengan Aspose – Panduan Konversi C# Lengkap](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/italian/net/document-manipulation/_index.md b/pdf/italian/net/document-manipulation/_index.md index ea01de37c2..82fd0e93f9 100644 --- a/pdf/italian/net/document-manipulation/_index.md +++ b/pdf/italian/net/document-manipulation/_index.md @@ -318,6 +318,8 @@ Scopri come riparare rapidamente file PDF corrotti con Aspose.PDF per .NET in C# ### [Come redigere PDF in C# con Aspose PDF – Guida completa](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) Scopri come rimuovere o nascondere informazioni sensibili da PDF usando Aspose PDF per .NET con C# in questa guida completa. +### [Come salvare PDF modificati con Aspose.PDF e aggiungere trasparenza](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) + ## Risorse aggiuntive - [Aspose.PDF per la documentazione di rete](https://docs.aspose.com/pdf/net/) @@ -332,4 +334,4 @@ Scopri come rimuovere o nascondere informazioni sensibili da PDF usando Aspose P {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/italian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/italian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..c37afee96d --- /dev/null +++ b/pdf/italian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-09-21 +description: Salva PDF modificato usando Aspose.Pdf in C#. Impara a modificare le + risorse PDF e ad aggiungere la trasparenza PDF in un esempio completo e eseguibile. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: it +lastmod: 2026-09-21 +og_description: Salva PDF modificato con Aspose.Pdf in C#. Questa guida mostra come + modificare le risorse PDF e aggiungere la trasparenza PDF per l'elaborazione professionale + dei documenti. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Salva PDF modificato con Aspose.Pdf – aggiungi trasparenza passo dopo passo +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Come salvare un PDF modificato con Aspose.Pdf e aggiungere trasparenza +url: /it/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come salvare un PDF modificato con Aspose.Pdf e aggiungere la trasparenza + +Se hai bisogno di **salvare un PDF modificato** dopo aver cambiato le sue risorse interne, questa guida fornisce una soluzione completa. Imparerai come modificare le risorse PDF, inserire un dizionario graphic‑state personalizzato e aggiungere la trasparenza PDF usando Aspose.Pdf per .NET. + +Il tutorial copre ogni passaggio, dal caricamento del file sorgente alla verifica dell'output. Non sono richiesti riferimenti esterni; il codice funziona così com'è in qualsiasi progetto .NET 6+ con la libreria Aspose.Pdf installata. + +## Prerequisiti + +Prima di iniziare, assicurati di avere: + +* .NET 6 SDK o versioni successive installate +* Una licenza valida di Aspose.Pdf per .NET (o una chiave di valutazione temporanea) +* Un PDF di input chiamato **input.pdf** posizionato in una cartella di tua scelta +* Conoscenze di base di C# e dei concetti PDF come risorse e graphic states + +Questi elementi garantiscono che l'esempio venga eseguito senza problemi di permessi o compatibilità. + +## Come salvare un PDF modificato dopo aver modificato le risorse + +Il codice seguente esegue l'intero flusso di lavoro: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Perché ogni passaggio è importante + +* **Passo 1** isola il percorso della cartella così da poter riutilizzare la stessa variabile per il caricamento e il salvataggio. +* **Passo 2** apre il file sorgente in un blocco `using`, garantendo il rilascio di tutte le risorse native. +* **Passo 3** accede al dizionario **Resources** della pagina, che contiene oggetti come font, immagini e graphic states. Modificare questo dizionario è il cuore di **edit pdf resources**. +* **Passo 4** crea una nuova voce **ExtGState**. Le chiavi `CA`, `ca` e `BM` controllano rispettivamente l'opacità del tratto, l'opacità del riempimento e la modalità di fusione—questo è il modo per **add pdf transparency**. +* **Passo 5** registra il nuovo graphic state con il nome `GS0`. Qualsiasi contenuto che faccia riferimento a `GS0` erediterà le impostazioni di trasparenza. +* **Passo 6** (opzionale) mostra un caso d'uso pratico: un rettangolo disegnato con il graphic state personalizzato. Questo test visivo conferma che la trasparenza funziona. +* **Passo 7** scrive le modifiche in **output.pdf**, soddisfacendo l'obiettivo principale di **save modified pdf**. + +### Risultato atteso + +* `output.pdf` appare nella stessa cartella del file sorgente. +* La prima pagina contiene un rettangolo semi‑trasparente (opacità riempimento 50 %, opacità tratto 100 %). +* Aprendo il file in Adobe Acrobat o in qualsiasi visualizzatore PDF, il rettangolo appare fuso con lo sfondo, confermando che il passaggio **add pdf transparency** è riuscito. + +Puoi aprire il file con qualsiasi lettore PDF per verificare l'effetto visivo. + +## Modifica delle risorse PDF con Aspose.Pdf + +Quando è necessario cambiare oggetti PDF a basso livello, il dizionario **Resources** è il punto di ingresso. Scenari comuni includono: + +| Scenario | Come realizzarlo con Aspose.Pdf | +|--------------------------------------|---------------------------------| +| Sostituire un font esistente | Recupera `Resources["Font"]`, modifica la voce | +| Aggiungere un nuovo XObject immagine | Crea un `CosPdfStream`, aggiungilo a `Resources["XObject"]` | +| Cambiare lo spessore di linea per un percorso specifico | Aggiungi un `ExtGState` personalizzato con il parametro `/LW` | + +Il codice sopra dimostra il modello: ottieni il `DictionaryEditor`, individua il sotto‑dizionario di destinazione (ad es., `ExtGState`) e poi aggiungi o sostituisci le voci. Questo approccio è il modo consigliato per **edit pdf resources** in modo sicuro. + +## Aggiungere trasparenza PDF (blend mode, alpha) in dettaglio + +La trasparenza in PDF è definita dall'oggetto **ExtGState**. Le tre chiavi usate nell'esempio sono: + +| Chiave | Significato | Valori tipici | +|--------|-------------|---------------| +| `CA` | Opacità del tratto (0 = trasparente, 1 = opaco) | `0.0` – `1.0` | +| `ca` | Opacità del riempimento (stesso intervallo di `CA`) | `0.0` – `1.0` | +| `BM` | Modalità di fusione – come si combinano i colori sorgente e destinazione | `"Normal"`, `"Multiply"`, `"Screen"` ecc. | + +Puoi sperimentare con diverse modalità di fusione per ottenere effetti come soft‑light o overlay. Basta sostituire `"Normal"` con un altro valore `CosPdfName`. Il graphic state può essere riutilizzato su più pagine o oggetti facendo riferimento allo stesso nome (`GS0` nell'esempio). + +## Problemi comuni e consigli professionali + +| Problema | Perché accade | Soluzione | +|----------|---------------|-----------| +| La voce `ExtGState` non esiste | Alcuni PDF omettono il dizionario finché non viene aggiunto un graphic state | Usa `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` prima di aggiungere | +| La trasparenza sembra ignorata in visualizzatori più vecchi | Il visualizzatore non supporta la trasparenza PDF 1.4+ | Assicurati che la versione PDF del file di output sia almeno 1.4 (`pdfDocument.Version = 1.4`) | +| Collisione di nomi con graphic state esistenti | L'uso di un nome già presente lo sovrascrive involontariamente | Scegli un nome univoco (es., `"GS0"`, `"GS_CustomAlpha"`) o verifica `extGStateDict.ContainsKey(name)` prima | + +Applicare questi consigli riduce i tempi di debug e produce risultati affidabili. + +## Riepilogo dell'esempio completo + +Di seguito trovi l'intero programma senza commenti esplicativi, pronto per essere copiato e incollato in un progetto console: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Eseguendo questo programma si crea **output.pdf** che contiene il rettangolo trasparente e preserva tutti gli altri contenuti di **input.pdf**. + +## Conclusione + +Ora sai come **save modified PDF** dopo aver effettuato modifiche a basso livello, come **edit PDF resources** usando il `DictionaryEditor` di Aspose.Pdf e come **add PDF transparency** tramite un dizionario graphic‑state personalizzato. Queste tecniche ti offrono un controllo granulare sull'aspetto del PDF e sono applicabili a scenari come watermarking, sovrapposizione di immagini o creazione di effetti visivi complessi. + +Prossimi passi consigliati: + +* Aggiungere più graphic state per diversi livelli di opacità (varianti di `add pdf transparency`) +* Aggiornare altri tipi di risorse come font o XObject (`edit pdf resources` per immagini) +* Unire più PDF mantenendo i graphic state personalizzati (`save modified pdf` tra documenti) + +Sperimenta con le modalità di fusione, i valori di opacità e gli ambiti delle risorse per adattarli al tuo flusso di lavoro di elaborazione documenti. Buon coding! + +## Cosa dovresti imparare dopo? + +I tutorial seguenti trattano argomenti strettamente correlati che si basano sulle tecniche dimostrate in questa guida. Ogni risorsa include esempi di codice completi con spiegazioni passo‑passo per aiutarti a padroneggiare altre funzionalità dell'API e a esplorare approcci alternativi nei tuoi progetti. + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/japanese/net/document-manipulation/_index.md b/pdf/japanese/net/document-manipulation/_index.md index 4160d9465c..6978d6f3d4 100644 --- a/pdf/japanese/net/document-manipulation/_index.md +++ b/pdf/japanese/net/document-manipulation/_index.md @@ -261,7 +261,7 @@ Aspose.PDF Net のコードチュートリアル Aspose.PDF for .NET を使用して、表や画像を使った動的なPDFヘッダーを作成する方法を学びましょう。ドキュメントのデザインを簡単に強化できます。 ### [Aspose.PDF for .NET で PDF 連結をマスターする: 総合ガイド](./mastering-pdf-concatenation-aspose-net-guide/) -Aspose.PDF for .NET を使用して複数の PDF ファイルをシームレスに連結する方法を学びましょう。このガイドでは、セットアップ、連結、破損したファイルの処理について説明します。 +Aspose.PDF for .NET を使用して�数の PDF ファイルをシームレスに連結する方法を学びましょう。このガイドでは、セットアップ、連結、破損したファイルの処理について説明します。 ### [PDF 管理をマスターする: Aspose.PDF .NET による効率的なページ方向、色、空白検出](./aspose-pdf-net-page-orientation-color-blank-detection/) Aspose.PDF for .NET を使用して、ページの向きを変更したり、白色を検出したり、空白ページを識別したりすることで、PDF ドキュメントを効率的に管理する方法を学習します。 @@ -319,6 +319,9 @@ C# と Aspose.PDF for .NET を使用して、破損した PDF ファイルを迅 ### [Aspose.PDF for .NET を使用して C# で PDF を編集(情報隠蔽)する完全ガイド](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) Aspose.PDF for .NET を使い、C# で PDF の機密情報をマスク(編集)する手順とベストプラクティスをステップバイステップで解説します。 +### [Aspose.PDF を使用して変更した PDF を保存し、透明度を追加する方法](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Aspose.PDF for .NET を使用して、変更した PDF を保存し、透明度を設定する方法をステップバイステップで解説します。 + ## 追加リソース - [Aspose.PDF for Net ドキュメント](https://docs.aspose.com/pdf/net/) diff --git a/pdf/japanese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/japanese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..757ceef401 --- /dev/null +++ b/pdf/japanese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-09-21 +description: C#で Aspose.Pdf を使用して変更した PDF を保存する。PDF リソースの編集と PDF の透過性の追加を、完全な実行可能サンプルで学ぶ。 +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: ja +lastmod: 2026-09-21 +og_description: C# で Aspose.Pdf を使用して変更した PDF を保存する。このガイドでは、PDF リソースの編集方法と、プロフェッショナルな文書処理のための + PDF 透過性の追加方法を示します。 +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Aspose.PdfでPDFを変更して保存 – 透明度をステップバイステップで追加 +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Aspose.Pdfで変更したPDFを保存し、透明度を追加する方法 +url: /ja/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.Pdf と透明度の追加で変更された PDF を保存する方法 + +内部リソースを変更した後に **変更された PDF を保存** する必要がある場合、このガイドは完全なソリューションを提供します。PDF リソースの編集方法、カスタム graphic‑state 辞書の挿入方法、そして Aspose.Pdf for .NET を使用した PDF の透明度の追加方法を学びます。 + +このチュートリアルは、ソースファイルの読み込みから出力の検証までのすべての手順をカバーしています。外部参照は不要で、Aspose.Pdf ライブラリがインストールされた任意の .NET 6+ プロジェクトでコードはそのまま実行できます。 + +## 前提条件 + +* .NET 6 SDK 以降がインストールされていること +* 有効な Aspose.Pdf for .NET ライセンス(または一時評価キー) +* **input.pdf** という名前の入力 PDF が、管理できるフォルダーに配置されていること +* C# と、リソースや graphic states などの PDF 概念に関する基本的な知識 + +これらの項目により、サンプルが権限や互換性の問題なく実行できるようになります。 + +## リソース編集後に変更された PDF を保存する方法 + +以下のコードが全体のワークフローを実行します: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### 各ステップの重要性 + +* **Step 1** はフォルダー パスを分離し、読み込みと保存で同じ変数を再利用できるようにします。 +* **Step 2** は `using` ブロックでソース ファイルを開き、すべてのネイティブ リソースが解放されることを保証します。 +* **Step 3** はページの **Resources** 辞書にアクセスします。この辞書はフォント、画像、graphic states などのオブジェクトを格納します。この辞書の編集が **edit pdf resources** の核心です。 +* **Step 4** は新しい **ExtGState** エントリを作成します。キー `CA`、`ca`、`BM` はそれぞれストローク不透明度、塗り不透明度、ブレンドモードを制御します—これが **add pdf transparency** の方法です。 +* **Step 5** は新しい graphic state を名前 `GS0` で登録します。`GS0` を参照するすべてのコンテンツは透明度設定を継承します。 +* **Step 6** (オプション)は実用的な使用例を示します:カスタム graphic state で描画された矩形です。このビジュアルテストにより透明度が機能していることが確認できます。 +* **Step 7** は変更を **output.pdf** に書き込み、**save modified pdf** という主目的を達成します。 + +### 期待される結果 + +* `output.pdf` がソース ファイルと同じフォルダーに作成されます。 +* 1 ページ目に半透明の矩形が含まれます(塗り不透明度 50%、ストローク不透明度 100%)。 +* Adobe Acrobat や任意の PDF ビューアでファイルを開くと、矩形が背景とブレンドされて表示され、**add pdf transparency** ステップが成功したことが確認できます。 + +任意の PDF リーダーでファイルを開き、視覚効果を確認できます。 + +## Aspose.Pdf で PDF リソースを編集する + +低レベルの PDF オブジェクトを変更する必要がある場合、**Resources** 辞書がエントリーポイントになります。一般的なシナリオは次のとおりです: + +| Scenario | How to achieve it with Aspose.Pdf | +|---|---| +| 既存のフォントを置き換える | Retrieve `Resources["Font"]`, modify the entry | +| 新しい画像 XObject を追加する | Create a `CosPdfStream`, add to `Resources["XObject"]` | +| 特定のパスの線幅を変更する | Add a custom `ExtGState` with `/LW` parameter | + +上記のコードはパターンを示しています:`DictionaryEditor` を取得し、対象のサブ辞書(例:`ExtGState`)を見つけ、エントリを追加または置き換えます。このアプローチは **edit pdf resources** を安全に行う推奨方法です。 + +## PDF 透明度の追加(ブレンドモード、アルファ)の詳細 + +PDF の透明度は **ExtGState** オブジェクトで定義されます。例で使用されている 3 つのキーは次のとおりです: + +| Key | Meaning | Typical values | +|-----|---------|----------------| +| `CA` | ストローク不透明度(0 = 透明、1 = 不透明) | `0.0` – `1.0` | +| `ca` | 塗り不透明度(`CA` と同範囲) | `0.0` – `1.0` | +| `BM` | ブレンドモード – ソースとデスティネーションの色の合成方法 | `"Normal"`, `"Multiply"`, `"Screen"` など | + +さまざまなブレンドモードを試すことで、ソフトライトやオーバーレイなどの効果を得られます。`"Normal"` を別の `CosPdfName` 値に置き換えるだけです。graphic state は同じ名前(サンプルの `GS0`)を参照することで、複数のページやオブジェクトで再利用できます。 + +## よくある落とし穴とプロのコツ + +| Pitfall | Why it happens | Fix | +|---------|----------------|-----| +| `ExtGState` エントリが存在しない | 一部の PDF は graphic state が追加されるまで辞書を省略する | 追加する前に `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` を使用する | +| 古いビューアで透明度が無視される | ビューアが PDF 1.4 以降の透明度をサポートしていない | 出力ファイルの PDF バージョンが少なくとも 1.4 であることを確認する(`pdfDocument.Version = 1.4`) | +| 既存の graphic state と名前が衝突する | 既に存在する名前を使用すると、意図せず上書きされる | 一意な名前(例:`"GS0"`、`"GS_CustomAlpha"`)を選択するか、事前に `extGStateDict.ContainsKey(name)` をチェックする | + +これらのコツを適用することでデバッグ時間が短縮され、信頼性の高い結果が得られます。 + +## 完全な動作例のまとめ + +以下は説明コメントを除いた完全なプログラムです。コンソール プロジェクトにコピー&ペーストしてすぐに使用できます: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +このプログラムを実行すると、透明な矩形が含まれ、**input.pdf** の他のすべてのコンテンツを保持した **output.pdf** が作成されます。 + +## 結論 + +これで、低レベルの変更を行った後に **save modified PDF** する方法、Aspose.Pdf の `DictionaryEditor` を使用して **edit PDF resources** する方法、カスタム graphic‑state 辞書を通じて **add PDF transparency** する方法が分かりました。これらのテクニックにより、PDF の外観を細かく制御でき、透かしの追加、画像のオーバーレイ、複雑なビジュアル効果の作成などのタスクに適用できます。 + +次に、以下を検討してみてください: + +* 異なる不透明度レベル用に複数の graphic state を追加する(`add pdf transparency` のバリエーション) +* フォントや XObject など他のリソースタイプを更新する(画像用の `edit pdf resources`) +* 複数の PDF をマージし、カスタム graphic state を保持する(ドキュメント間で `save modified pdf`) + +ブレンドモードや不透明度の値、リソースのスコープを自由に試して、特定のドキュメント処理ワークフローに合わせてください。コーディングを楽しんで! + +## 次に学ぶべきことは? + +以下のチュートリアルは、本ガイドで示したテクニックを基にした密接に関連するトピックをカバーしています。各リソースには、ステップバイステップの解説と完全な動作コード例が含まれており、追加の API 機能を習得し、独自プロジェクトで代替実装アプローチを検討するのに役立ちます。 + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/korean/net/document-manipulation/_index.md b/pdf/korean/net/document-manipulation/_index.md index 318ed1ced1..fba91cdaca 100644 --- a/pdf/korean/net/document-manipulation/_index.md +++ b/pdf/korean/net/document-manipulation/_index.md @@ -315,9 +315,13 @@ Aspose.PDF for .NET을 사용하여 C#에서 PDF의 민감한 텍스트를 숨 ### [C#에서 PDF 복구 방법 – 손상된 PDF 파일을 빠르게 수정](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) C#과 Aspose.PDF를 사용하여 손상된 PDF 파일을 빠르게 복구하는 방법을 단계별로 안내합니다. + ### [C#와 Aspose PDF를 사용하여 PDF를 레드랙트하는 방법 – 완전 가이드](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) Aspose PDF for .NET을 활용해 C#에서 PDF 문서의 민감한 정보를 레드랙트(가리기)하는 방법을 단계별로 안내합니다. +### [Aspose.Pdf를 사용하여 수정된 PDF를 저장하고 투명도 추가하는 방법](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Aspose.PDF를 이용해 수정된 PDF를 저장하고 투명도 효과를 적용하는 방법을 단계별로 안내합니다. + ## 추가 자료 - [Net 문서용 Aspose.PDF](https://docs.aspose.com/pdf/net/) @@ -332,4 +336,4 @@ Aspose PDF for .NET을 활용해 C#에서 PDF 문서의 민감한 정보를 레 {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/korean/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/korean/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..b3637c3935 --- /dev/null +++ b/pdf/korean/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-09-21 +description: C#에서 Aspose.Pdf를 사용하여 수정된 PDF를 저장합니다. 전체 실행 가능한 예제에서 PDF 리소스를 편집하고 PDF + 투명성을 추가하는 방법을 배웁니다. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: ko +lastmod: 2026-09-21 +og_description: C#에서 Aspose.Pdf를 사용하여 수정된 PDF를 저장합니다. 이 가이드는 PDF 리소스를 편집하고 전문 문서 처리를 + 위해 PDF 투명성을 추가하는 방법을 보여줍니다. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Aspose.Pdf로 수정된 PDF 저장 – 투명도 단계별 적용 +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Aspose.Pdf로 수정된 PDF를 저장하고 투명도 추가하는 방법 +url: /ko/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.Pdf로 수정된 PDF 저장 및 투명도 추가 방법 + +내부 리소스를 변경한 후 **수정된 PDF 저장**이 필요하다면, 이 가이드는 완전한 솔루션을 제공합니다. Aspose.Pdf for .NET을 사용하여 PDF 리소스를 편집하고, 사용자 정의 graphic‑state 사전을 삽입하며, PDF 투명도를 추가하는 방법을 배울 수 있습니다. + +이 튜토리얼은 소스 파일을 로드하는 단계부터 출력물을 검증하는 단계까지 모든 과정을 다룹니다. 외부 참조가 필요 없으며, Aspose.Pdf 라이브러리가 설치된 .NET 6+ 프로젝트라면 코드를 그대로 실행할 수 있습니다. + +## Prerequisites + +시작하기 전에 다음이 준비되어 있는지 확인하세요: + +* .NET 6 SDK 이상이 설치되어 있음 +* 유효한 Aspose.Pdf for .NET 라이선스(또는 임시 평가 키) +* **input.pdf** 라는 이름의 입력 PDF가 제어 가능한 폴더에 배치되어 있음 +* C# 및 PDF 리소스·graphic state와 같은 기본 개념에 대한 이해 + +위 항목들은 샘플이 권한이나 호환성 문제 없이 실행되도록 보장합니다. + +## How to save modified PDF after editing resources + +다음 코드는 전체 워크플로를 수행합니다: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Why each step matters + +* **Step 1** 폴더 경로를 분리하여 로드와 저장에 같은 변수를 재사용할 수 있게 합니다. +* **Step 2** `using` 블록 안에서 소스 파일을 열어 모든 네이티브 리소스가 해제되도록 보장합니다. +* **Step 3** 페이지의 **Resources** 사전에 접근합니다. 이 사전은 폰트, 이미지, graphic state 등 객체를 저장합니다. 이 사전을 편집하는 것이 **edit pdf resources**의 핵심입니다. +* **Step 4** 새로운 **ExtGState** 항목을 생성합니다. `CA`, `ca`, `BM` 키는 각각 스트로크 불투명도, 채우기 불투명도, 블렌드 모드를 제어하며, 이는 **add pdf transparency**를 구현하는 방법입니다. +* **Step 5** 새 graphic state를 `GS0` 이름으로 등록합니다. `GS0`을 참조하는 모든 콘텐츠는 투명도 설정을 상속받게 됩니다. +* **Step 6** (선택) 사용자 정의 graphic state로 그린 사각형을 표시합니다. 이 시각적 테스트를 통해 투명도가 정상 작동함을 확인할 수 있습니다. +* **Step 7** 변경 사항을 **output.pdf**에 기록하여 **save modified pdf**라는 주요 목표를 달성합니다. + +### Expected result + +* `output.pdf`가 소스 파일과 동일한 폴더에 생성됩니다. +* 첫 페이지에 반투명 사각형(채우기 불투명도 50 %, 스트로크 불투명도 100 %)이 표시됩니다. +* Adobe Acrobat이나 기타 PDF 뷰어에서 파일을 열면 사각형이 배경과 블렌드된 모습을 확인할 수 있어, **add pdf transparency** 단계가 성공했음을 증명합니다. + +PDF 리더로 파일을 열어 시각 효과를 검증할 수 있습니다. + +## Editing PDF resources with Aspose.Pdf + +저수준 PDF 객체를 변경해야 할 때는 **Resources** 사전이 진입점이 됩니다. 일반적인 시나리오는 다음과 같습니다: + +| Scenario | How to achieve it with Aspose.Pdf | +|----------|-----------------------------------| +| 기존 폰트 교체 | `Resources["Font"]` 를 가져와 해당 항목을 수정 | +| 새로운 이미지 XObject 추가 | `CosPdfStream` 을 생성하고 `Resources["XObject"]` 에 추가 | +| 특정 경로의 선 두께 변경 | `/LW` 파라미터를 포함한 사용자 정의 `ExtGState` 추가 | + +위 코드는 `DictionaryEditor` 를 가져와 대상 하위 사전(예: `ExtGState`)을 찾은 뒤 항목을 추가하거나 교체하는 패턴을 보여줍니다. 이 방법이 **edit pdf resources**를 안전하게 수행하는 권장 방식입니다. + +## Adding PDF transparency (blend mode, alpha) in detail + +PDF에서 투명도는 **ExtGState** 객체로 정의됩니다. 예제에서 사용된 세 가지 키는 다음과 같습니다: + +| Key | Meaning | Typical values | +|-----|---------|----------------| +| `CA` | 스트로크 불투명도 (0 = 투명, 1 = 불투명) | `0.0` – `1.0` | +| `ca` | 채우기 불투명도 (범위는 `CA`와 동일) | `0.0` – `1.0` | +| `BM` | 블렌드 모드 – 소스와 대상 색상이 결합되는 방식 | `"Normal"`, `"Multiply"`, `"Screen"` 등 | + +다양한 블렌드 모드를 실험해 soft‑light, overlay와 같은 효과를 만들 수 있습니다. `"Normal"`을 다른 `CosPdfName` 값으로 교체하면 됩니다. graphic state는 동일한 이름(`GS0`)을 참조함으로써 여러 페이지나 객체에서 재사용할 수 있습니다. + +## Common pitfalls and pro tips + +| Pitfall | Why it happens | Fix | +|---------|----------------|-----| +| `ExtGState` 항목이 존재하지 않음 | 일부 PDF는 graphic state가 추가될 때까지 사전을 포함하지 않음 | `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` 를 추가 후 사용 | +| 오래된 뷰어에서 투명도가 무시됨 | 뷰어가 PDF 1.4 이상 투명도를 지원하지 않음 | 출력 파일의 PDF 버전을 최소 1.4로 설정 (`pdfDocument.Version = 1.4`) | +| 기존 graphic state와 이름 충돌 | 이미 존재하는 이름을 사용하면 의도치 않게 덮어쓰기 발생 | 고유한 이름(`"GS0"`, `"GS_CustomAlpha"` 등) 사용하거나 `extGStateDict.ContainsKey(name)` 로 사전 확인 | + +위 팁을 적용하면 디버깅 시간을 줄이고 안정적인 결과를 얻을 수 있습니다. + +## Full working example recap + +아래는 설명 주석 없이 전체 프로그램 코드이며, 콘솔 프로젝트에 그대로 복사‑붙여넣기 할 수 있습니다: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +이 프로그램을 실행하면 **output.pdf**가 생성되고, 투명 사각형이 포함되며 **input.pdf**의 다른 모든 내용은 그대로 유지됩니다. + +## Conclusion + +이제 **save modified PDF**를 수행하면서 저수준 변경을 적용하고, Aspose.Pdf의 `DictionaryEditor` 로 **edit PDF resources**를 수행하며, 사용자 정의 graphic‑state 사전을 통해 **add PDF transparency**를 구현하는 방법을 알게 되었습니다. 이러한 기술을 활용하면 워터마크 삽입, 이미지 오버레이, 복잡한 시각 효과 등 PDF 외관을 세밀하게 제어할 수 있습니다. + +다음 단계로 살펴볼 내용: + +* 서로 다른 불투명도 수준을 위한 다중 graphic state 추가 (`add pdf transparency` 변형) +* 폰트나 XObject와 같은 다른 리소스 유형 업데이트 (`edit pdf resources` for images) +* 여러 PDF를 병합하면서 사용자 정의 graphic state 유지 (`save modified pdf` across documents) + +블렌드 모드, 불투명도 값, 리소스 범위를 자유롭게 실험하여 여러분의 문서 처리 워크플로에 맞게 최적화해 보세요. 즐거운 코딩 되시길 바랍니다! + +## What Should You Learn Next? + +다음 튜토리얼들은 이 가이드에서 다룬 기술을 기반으로 한 관련 주제를 깊이 있게 다룹니다. 각 리소스는 완전한 코드 예제와 단계별 설명을 제공하여 추가 API 기능을 마스터하고 다양한 구현 방식을 탐색할 수 있도록 돕습니다. + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/polish/net/document-manipulation/_index.md b/pdf/polish/net/document-manipulation/_index.md index 2d4bfdf9c2..a3716357d1 100644 --- a/pdf/polish/net/document-manipulation/_index.md +++ b/pdf/polish/net/document-manipulation/_index.md @@ -212,6 +212,9 @@ Dowiedz się, jak programowo aktualizować łącza w plikach PDF za pomocą Aspo ### [Jak zaktualizować kolor tekstu łącza PDF za pomocą Aspose.PDF .NET: kompletny przewodnik](./update-pdf-link-text-color-aspose-net/) Dowiedz się, jak łatwo zmienić kolor tekstu linków w plikach PDF za pomocą Aspose.PDF dla .NET. Ten kompleksowy przewodnik obejmuje wskazówki dotyczące instalacji, implementacji i optymalizacji. +### [Jak zapisać zmodyfikowany PDF przy użyciu Aspose.Pdf i dodać przezroczystość](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Dowiedz się, jak zapisać zmodyfikowany plik PDF i zastosować przezroczystość przy użyciu Aspose.PDF. + ### [Wstawianie stron do PDF za pomocą Aspose.PDF dla .NET: Kompletny przewodnik po manipulacji dokumentami](./insert-pages-pdf-aspose-dotnet-guide/) Dowiedz się, jak wstawiać strony do pliku PDF za pomocą Aspose.PDF dla .NET. Ten przewodnik krok po kroku obejmuje wszystko, od konfiguracji po implementację, idealny dla programistów C#. diff --git a/pdf/polish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/polish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..f8c92eb1ff --- /dev/null +++ b/pdf/polish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-09-21 +description: Zapisz zmodyfikowany PDF przy użyciu Aspose.Pdf w C#. Naucz się edytować + zasoby PDF i dodawać przezroczystość PDF w kompletnym, gotowym do uruchomienia przykładzie. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: pl +lastmod: 2026-09-21 +og_description: Zapisz zmodyfikowany PDF przy użyciu Aspose.Pdf w C#. Ten przewodnik + pokazuje, jak edytować zasoby PDF i dodać przezroczystość PDF w celu profesjonalnego + przetwarzania dokumentów. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Zapisz zmodyfikowany PDF przy użyciu Aspose.Pdf – dodaj przezroczystość + krok po kroku +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Jak zapisać zmodyfikowany PDF przy użyciu Aspose.Pdf i dodać przezroczystość +url: /pl/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak zapisać zmodyfikowany PDF przy użyciu Aspose.Pdf i dodać przezroczystość + +Jeśli potrzebujesz **zapisać zmodyfikowany PDF** po zmianie jego wewnętrznych zasobów, ten przewodnik zapewnia pełne rozwiązanie. Nauczysz się, jak edytować zasoby PDF, wstawić niestandardowy słownik graphic‑state oraz dodać przezroczystość PDF przy użyciu Aspose.Pdf dla .NET. + +Samouczek obejmuje każdy krok, od wczytania pliku źródłowego po weryfikację wyniku. Nie są wymagane żadne zewnętrzne odwołania; kod działa tak jak jest w każdym projekcie .NET 6+ z zainstalowaną biblioteką Aspose.Pdf. + +## Wymagania wstępne + +* Zainstalowany .NET 6 SDK lub nowszy +* Ważna licencja Aspose.Pdf dla .NET (lub tymczasowy klucz ewaluacyjny) +* Plik PDF wejściowy o nazwie **input.pdf** umieszczony w wybranym folderze +* Podstawowa znajomość C# oraz koncepcji PDF, takich jak zasoby i stany graficzne + +Te elementy zapewniają, że przykład uruchomi się bez problemów z uprawnieniami lub kompatybilnością. + +## Jak zapisać zmodyfikowany PDF po edycji zasobów + +Poniższy kod wykonuje cały przepływ pracy: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Dlaczego każdy krok ma znaczenie + +* **Krok 1** izoluje ścieżkę folderu, aby można było ponownie użyć tej samej zmiennej do wczytywania i zapisywania. +* **Krok 2** otwiera plik źródłowy w bloku `using`, zapewniając zwolnienie wszystkich natywnych zasobów. +* **Krok 3** uzyskuje dostęp do słownika **Resources** strony, który przechowuje obiekty takie jak czcionki, obrazy i stany graficzne. Edycja tego słownika jest sednem **edit pdf resources**. +* **Krok 4** tworzy nowy wpis **ExtGState**. Klucze `CA`, `ca` i `BM` kontrolują odpowiednio przezroczystość obrysu, wypełnienia oraz tryb mieszania — tak właśnie **add pdf transparency**. +* **Krok 5** rejestruje nowy stan graficzny pod nazwą `GS0`. Każda zawartość odwołująca się do `GS0` odziedziczy ustawienia przezroczystości. +* **Krok 6** (opcjonalnie) pokazuje praktyczny przypadek użycia: prostokąt narysowany z użyciem niestandardowego stanu graficznego. Ten test wizualny potwierdza, że przezroczystość działa. +* **Krok 7** zapisuje zmiany do **output.pdf**, spełniając główny cel **save modified pdf**. + +### Oczekiwany rezultat + +* `output.pdf` pojawia się w tym samym folderze co plik źródłowy. +* Pierwsza strona zawiera półprzezroczysty prostokąt (50 % przezroczystość wypełnienia, 100 % przezroczystość obrysu). +* Otwarcie pliku w Adobe Acrobat lub dowolnym przeglądarce PDF pokazuje prostokąt wymieszany z tłem, potwierdzając, że krok **add pdf transparency** zakończył się sukcesem. + +Możesz otworzyć plik w dowolnym czytniku PDF, aby zweryfikować efekt wizualny. + +## Edycja zasobów PDF przy użyciu Aspose.Pdf + +Gdy potrzebujesz zmienić niskopoziomowe obiekty PDF, słownik **Resources** jest punktem wejścia. Typowe scenariusze obejmują: + +| Scenariusz | Jak to osiągnąć przy użyciu Aspose.Pdf | +|------------|----------------------------------------| +| Zastąp istniejącą czcionkę | Pobierz `Resources["Font"]`, zmodyfikuj wpis | +| Dodaj nowy XObject obrazu | Utwórz `CosPdfStream`, dodaj do `Resources["XObject"]` | +| Zmień szerokość linii dla konkretnej ścieżki | Dodaj niestandardowy `ExtGState` z parametrem `/LW` | + +Powyższy kod demonstruje wzorzec: pobierz `DictionaryEditor`, zlokalizuj docelowy pod‑słownik (np. `ExtGState`), a następnie dodaj lub zamień wpisy. Takie podejście jest zalecaną metodą bezpiecznej **edit pdf resources**. + +## Dodawanie przezroczystości PDF (tryb mieszania, alfa) w szczegółach + +Przezroczystość w PDF jest definiowana przez obiekt **ExtGState**. Trzy klucze użyte w przykładzie to: + +| Klucz | Znaczenie | Typowe wartości | +|-------|-----------|-----------------| +| `CA` | Przezroczystość obrysu (0 = przezroczysty, 1 = nieprzezroczysty) | `0.0` – `1.0` | +| `ca` | Przezroczystość wypełnienia (ten sam zakres co `CA`) | `0.0` – `1.0` | +| `BM` | Tryb mieszania – jak łączą się kolory źródła i docelowe | `"Normal"`, `"Multiply"`, `"Screen"` itd. | + +Możesz eksperymentować z różnymi trybami mieszania, aby uzyskać efekty takie jak soft‑light lub overlay. Po prostu zamień `"Normal"` na inną wartość `CosPdfName`. Stan graficzny może być ponownie użyty na wielu stronach lub obiektach poprzez odwołanie się do tej samej nazwy (`GS0` w przykładzie). + +## Typowe pułapki i porady profesjonalistów + +| Pułapka | Dlaczego się pojawia | Rozwiązanie | +|---------|----------------------|-------------| +| Wpis `ExtGState` nie istnieje | Niektóre PDF-y pomijają słownik, dopóki nie zostanie dodany stan graficzny | Użyj `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` przed dodaniem | +| Przezroczystość wydaje się ignorowana w starszych przeglądarkach | Przeglądarka nie obsługuje przezroczystości PDF 1.4+ | Upewnij się, że wersja PDF wyjściowego pliku wynosi co najmniej 1.4 (`pdfDocument.Version = 1.4`) | +| Kolizja nazw z istniejącymi stanami graficznymi | Użycie nazwy, która już istnieje, nadpisuje ją nieumyślnie | Wybierz unikalną nazwę (np. `"GS0"`, `"GS_CustomAlpha"`) lub najpierw sprawdź `extGStateDict.ContainsKey(name)` | + +Stosowanie tych wskazówek skraca czas debugowania i daje niezawodne wyniki. + +## Pełny działający przykład podsumowanie + +Poniżej znajduje się cały program bez komentarzy wyjaśniających, gotowy do skopiowania i wklejenia do projektu konsolowego: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Uruchomienie tego programu tworzy **output.pdf**, który zawiera przezroczysty prostokąt i zachowuje całą pozostałą zawartość z **input.pdf**. + +## Zakończenie + +Teraz wiesz, jak **zapisać zmodyfikowany PDF** po wykonaniu niskopoziomowych zmian, jak **edytować zasoby PDF** przy użyciu `DictionaryEditor` z Aspose.Pdf oraz jak **dodać przezroczystość PDF** poprzez niestandardowy słownik graphic‑state. Te techniki dają precyzyjną kontrolę nad wyglądem PDF i można je zastosować w zadaniach takich jak znakowanie wodne, nakładanie obrazów czy tworzenie złożonych efektów wizualnych. + +Następnie możesz zbadać: + +* Dodawanie wielu stanów graficznych dla różnych poziomów przezroczystości (wariacje `add pdf transparency`) +* Aktualizacja innych typów zasobów, takich jak czcionki lub XObject (`edit pdf resources` dla obrazów) +* Łączenie kilku plików PDF przy zachowaniu niestandardowych stanów graficznych (`save modified pdf` między dokumentami) + +Śmiało eksperymentuj z trybami mieszania, wartościami przezroczystości i zakresem zasobów, aby dopasować je do swojego konkretnego przepływu przetwarzania dokumentów. Szczęśliwego kodowania! + +## Co powinieneś nauczyć się dalej? + +Poniższe samouczki obejmują ściśle powiązane tematy, które rozwijają techniki przedstawione w tym przewodniku. Każdy zasób zawiera kompletne działające przykłady kodu z wyjaśnieniami krok po kroku, aby pomóc Ci opanować dodatkowe funkcje API i odkrywać alternatywne podejścia implementacyjne w własnych projektach. + +- [Dodaj przezroczystość do PDF przy użyciu Aspose – Kompletny przewodnik C#](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Dodaj przezroczystość do PDF z Aspose PDF w C# – Przewodnik krok po kroku](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Jak zapisać PDF z Aspose – Kompletny przewodnik konwersji C#](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/portuguese/net/document-manipulation/_index.md b/pdf/portuguese/net/document-manipulation/_index.md index ce31a3b193..64f3bd09b7 100644 --- a/pdf/portuguese/net/document-manipulation/_index.md +++ b/pdf/portuguese/net/document-manipulation/_index.md @@ -286,6 +286,9 @@ Aprenda a mover e reposicionar campos de formulários PDF sem esforço com o Asp ### [Manipulação de PDF simplificada: Guia Aspose.PDF .NET para carregar, salvar e ampliar configuração](./master-pdf-manipulation-aspose-dotnet-load-save-configure-page-zoom/) Domine a manipulação de PDF com o Aspose.PDF para .NET. Aprenda a carregar, salvar, extrair dimensões e configurar o zoom com eficiência. +### [Como salvar PDF modificado com Aspose.Pdf e adicionar transparência](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Aprenda a salvar PDFs modificados e aplicar transparência a objetos usando Aspose.PDF para .NET. + ### [Substituir a primeira ocorrência de texto em PDF usando Aspose.PDF para .NET - Um guia completo](./replace-first-text-occurrence-aspose-pdf-net/) Aprenda a substituir a primeira ocorrência de texto em um PDF usando o Aspose.PDF para .NET. Este guia aborda configuração, exemplos de código e aplicações práticas. @@ -327,5 +330,4 @@ Aprenda a censurar PDFs, ocultando texto e removendo conteúdo usando Aspose.PDF {{< blocks/products/products-backtop-button >}} ### [Como reparar PDF em C# – Corrija arquivos PDF corrompidos rapidamente](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) -Aprenda a reparar arquivos PDF corrompidos usando C# e Aspose.PDF, restaurando documentos de forma rápida e confiável. - +Aprenda a reparar arquivos PDF corrompidos usando C# e Aspose.PDF, restaurando documentos de forma rápida e confiável. \ No newline at end of file diff --git a/pdf/portuguese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/portuguese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..4f73725660 --- /dev/null +++ b/pdf/portuguese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-09-21 +description: Salvar PDF modificado usando Aspose.Pdf em C#. Aprenda a editar recursos + de PDF e a adicionar transparência em PDF em um exemplo completo e executável. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: pt +lastmod: 2026-09-21 +og_description: Salve PDF modificado com Aspose.Pdf em C#. Este guia mostra como editar + recursos de PDF e adicionar transparência ao PDF para o processamento profissional + de documentos. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Salvar PDF modificado com Aspose.Pdf – adicione transparência passo a passo +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Como salvar PDF modificado com Aspose.Pdf e adicionar transparência +url: /pt/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como salvar PDF modificado com Aspose.Pdf e adicionar transparência + +Se você precisar **salvar PDF modificado** após alterar seus recursos internos, este guia fornece uma solução completa. Você aprenderá como editar recursos de PDF, inserir um dicionário de graphic‑state personalizado e adicionar transparência a PDF usando Aspose.Pdf para .NET. + +O tutorial cobre cada passo, desde o carregamento do arquivo de origem até a verificação da saída. Nenhuma referência externa é necessária; o código funciona como está em qualquer projeto .NET 6+ com a biblioteca Aspose.Pdf instalada. + +## Pré-requisitos + +Antes de começar, certifique‑se de que você tem: + +* .NET 6 SDK ou posterior instalado +* Uma licença válida do Aspose.Pdf para .NET (ou uma chave de avaliação temporária) +* Um PDF de entrada chamado **input.pdf** colocado em uma pasta que você controla +* Conhecimento básico de C# e conceitos de PDF como recursos e graphic states + +Esses itens garantem que o exemplo seja executado sem problemas de permissão ou compatibilidade. + +## Como salvar PDF modificado após editar recursos + +O código a seguir executa todo o fluxo de trabalho: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Por que cada passo importa + +* **Step 1** isola o caminho da pasta para que você possa reutilizar a mesma variável ao carregar e salvar. +* **Step 2** abre o arquivo de origem em um bloco `using`, garantindo que todos os recursos nativos sejam liberados. +* **Step 3** acessa o dicionário **Resources** da página, que armazena objetos como fontes, imagens e graphic states. Editar esse dicionário é o núcleo de **edit pdf resources**. +* **Step 4** cria uma nova entrada **ExtGState**. As chaves `CA`, `ca` e `BM` controlam, respectivamente, a opacidade do traço, a opacidade do preenchimento e o modo de mesclagem — é assim que você **add pdf transparency**. +* **Step 5** registra o novo graphic state com o nome `GS0`. Qualquer conteúdo que referencie `GS0` herdará as configurações de transparência. +* **Step 6** (opcional) mostra um caso de uso prático: um retângulo desenhado com o graphic state personalizado. Este teste visual confirma que a transparência funciona. +* **Step 7** grava as alterações em **output.pdf**, cumprindo o objetivo principal de **save modified pdf**. + +### Resultado esperado + +* `output.pdf` aparece na mesma pasta do arquivo de origem. +* A primeira página contém um retângulo semi‑transparente (opacidade de preenchimento de 50 %, opacidade de traço de 100 %). +* Abrir o arquivo no Adobe Acrobat ou em qualquer visualizador de PDF mostra o retângulo mesclado com o plano de fundo, confirmando que a etapa **add pdf transparency** foi bem‑sucedida. + +Você pode abrir o arquivo com qualquer leitor de PDF para verificar o efeito visual. + +## Editando recursos de PDF com Aspose.Pdf + +Quando você precisa alterar objetos de PDF de baixo nível, o dicionário **Resources** é o ponto de entrada. Cenários comuns incluem: + +| Cenário | Como alcançar com Aspose.Pdf | +|--------------------------------------|------------------------------| +| Substituir uma fonte existente | Recuperar `Resources["Font"]`, modificar a entrada | +| Adicionar um novo XObject de imagem | Criar um `CosPdfStream`, adicionar a `Resources["XObject"]` | +| Alterar a espessura da linha para um caminho específico | Adicionar um `ExtGState` personalizado com o parâmetro `/LW` | + +O código acima demonstra o padrão: obter o `DictionaryEditor`, localizar o sub‑dicionário alvo (por exemplo, `ExtGState`) e então adicionar ou substituir entradas. Essa abordagem é a forma recomendada de **edit pdf resources** com segurança. + +## Adicionando transparência a PDF (modo de mesclagem, alfa) em detalhes + +A transparência em PDF é definida pelo objeto **ExtGState**. As três chaves usadas no exemplo são: + +| Chave | Significado | Valores típicos | +|-------|-------------|-----------------| +| `CA` | Opacidade do traço (0 = transparente, 1 = opaco) | `0.0` – `1.0` | +| `ca` | Opacidade de preenchimento (mesmo intervalo que `CA`) | `0.0` – `1.0` | +| `BM` | Modo de mesclagem – como as cores de origem e destino se combinam | `"Normal"`, `"Multiply"`, `"Screen"` etc. | + +Você pode experimentar diferentes modos de mesclagem para obter efeitos como soft‑light ou overlay. Basta substituir `"Normal"` por outro valor `CosPdfName`. O graphic state pode ser reutilizado em várias páginas ou objetos referenciando o mesmo nome (`GS0` no exemplo). + +## Armadilhas comuns e dicas profissionais + +| Armadilha | Por que acontece | Solução | +|----------|------------------|---------| +| A entrada `ExtGState` não existe | Alguns PDFs omitem o dicionário até que um graphic state seja adicionado | Use `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` antes de adicionar | +| A transparência parece ignorada em visualizadores antigos | O visualizador não suporta transparência PDF 1.4+ | Garanta que a versão PDF do arquivo de saída seja pelo menos 1.4 (`pdfDocument.Version = 1.4`) | +| Colisão de nomes com graphic states existentes | Usar um nome que já existe sobrescreve‑o inadvertidamente | Escolha um nome único (por exemplo, `"GS0"`, `"GS_CustomAlpha"`) ou verifique `extGStateDict.ContainsKey(name)` primeiro | + +Aplicar essas dicas reduz o tempo de depuração e produz resultados confiáveis. + +## Recapitulação do exemplo completo em funcionamento + +Abaixo está o programa completo sem comentários explicativos, pronto para copiar‑colar em um projeto de console: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Executar este programa cria **output.pdf** que contém o retângulo transparente e preserva todo o restante do conteúdo de **input.pdf**. + +## Conclusão + +Agora você sabe como **save modified PDF** após realizar alterações de baixo nível, como **edit PDF resources** usando o `DictionaryEditor` do Aspose.Pdf, e como **add PDF transparency** através de um dicionário de graphic‑state personalizado. Essas técnicas dão a você controle detalhado sobre a aparência do PDF e são aplicáveis a tarefas como marca d'água, sobreposição de imagens ou criação de efeitos visuais complexos. + +A seguir, você pode explorar: + +* Adicionar múltiplos graphic states para diferentes níveis de opacidade (variações de `add pdf transparency`) +* Atualizar outros tipos de recursos como fontes ou XObjects (`edit pdf resources` para imagens) +* Mesclar vários PDFs preservando graphic states personalizados (`save modified pdf` entre documentos) + +Sinta‑se à vontade para experimentar modos de mesclagem, valores de opacidade e escopos de recursos para adequar ao seu fluxo de trabalho específico de processamento de documentos. Feliz codificação! + +## O que você deve aprender a seguir? + +Os tutoriais a seguir cobrem tópicos intimamente relacionados que se baseiam nas técnicas demonstradas neste guia. Cada recurso inclui exemplos de código completos e funcionais com explicações passo a passo para ajudá‑lo a dominar recursos adicionais da API e explorar abordagens de implementação alternativas em seus próprios projetos. + +- [Adicionar transparência a PDF usando Aspose – Guia completo em C#](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Adicionar transparência a PDF com Aspose PDF em C# – Guia passo a passo](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Como salvar PDF com Aspose – Guia completo de conversão em C#](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/russian/net/document-manipulation/_index.md b/pdf/russian/net/document-manipulation/_index.md index d2aff5e0a9..6e32c369ab 100644 --- a/pdf/russian/net/document-manipulation/_index.md +++ b/pdf/russian/net/document-manipulation/_index.md @@ -115,7 +115,7 @@ ### [Как добавить пустую страницу в конец PDF-файла с помощью Aspose.PDF для .NET | Пошаговое руководство](./add-empty-page-end-pdf-aspose-pdf-net/) Узнайте, как легко добавить пустую страницу в конец вашего PDF-файла с помощью Aspose.PDF для .NET. Это всеобъемлющее руководство охватывает настройку, реализацию и лучшие практики. -### [Как добавлять и настраивать номера страниц в PDF-файлах с помощью Aspose.PDF для .NET | Руководство по работе с документами](./add-customize-page-numbers-aspose-pdf-dot-net/) +### [Как добавить и настраивать номера страниц в PDF-файлах с помощью Aspose.PDF для .NET | Руководство по работе с документами](./add-customize-page-numbers-aspose-pdf-dot-net/) Узнайте, как легко добавлять и настраивать номера страниц в документах PDF с помощью Aspose.PDF для .NET. Это всеобъемлющее руководство охватывает установку, параметры настройки и советы по производительности. ### [Как добавить и удалять JavaScript в PDF-файлах с помощью Aspose.PDF .NET: подробное руководство](./aspose-pdf-net-add-remove-javascript-pdfs/) @@ -145,6 +145,9 @@ ### [Как объединить и вставить пустые страницы в PDF-файлы с помощью .NET и Aspose.PDF](./master-net-pdf-manipulation-concatenate-insert-blank-pages-asposepdf/) Узнайте, как объединять PDF-документы и вставлять пустые страницы с помощью Aspose.PDF с C#. Оптимизируйте рабочие процессы управления документами без усилий. +### [Как сохранить измененный PDF с помощью Aspose.PDF и добавить прозрачность](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Узнайте, как сохранить измененный PDF и применить прозрачность к элементам с помощью Aspose.PDF для .NET. + ### [Как преобразовать размер страницы PDF в формат A4 с помощью Aspose.PDF .NET | Руководство по работе с документами](./update-pdf-page-dimensions-aspose-net/) Узнайте, как обновить размеры страницы PDF до A4 с помощью Aspose.PDF для .NET. Следуйте этому пошаговому руководству, чтобы эффективно стандартизировать свои документы. @@ -335,4 +338,4 @@ {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/russian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/russian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..a7bc9ae80c --- /dev/null +++ b/pdf/russian/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-09-21 +description: Сохраните изменённый PDF с помощью Aspose.Pdf в C#. Узнайте, как редактировать + ресурсы PDF и добавлять прозрачность в PDF в полном, исполняемом примере. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: ru +lastmod: 2026-09-21 +og_description: Сохранить изменённый PDF с помощью Aspose.Pdf в C#. Это руководство + показывает, как редактировать ресурсы PDF и добавлять прозрачность PDF для профессиональной + обработки документов. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Сохранить изменённый PDF с Aspose.Pdf – пошаговое добавление прозрачности +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Как сохранить изменённый PDF с помощью Aspose.Pdf и добавить прозрачность +url: /ru/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как сохранить изменённый PDF с Aspose.Pdf и добавить прозрачность + +Если вам нужно **сохранить изменённый PDF** после изменения его внутренних ресурсов, это руководство предоставляет полное решение. Вы узнаете, как редактировать ресурсы PDF, вставить пользовательский словарь графических состояний и добавить прозрачность PDF с помощью Aspose.Pdf для .NET. + +В учебнике рассматривается каждый шаг от загрузки исходного файла до проверки результата. Никакие внешние ссылки не требуются; код работает «как есть» в любом проекте .NET 6+ с установленной библиотекой Aspose.Pdf. + +## Предварительные требования + +Прежде чем начать, убедитесь, что у вас есть: + +* .NET 6 SDK или более поздняя версия +* Действующая лицензия Aspose.Pdf для .NET (или временный оценочный ключ) +* Входной PDF под названием **input.pdf**, размещённый в папке, которой вы управляете +* Базовые знания C# и концепций PDF, таких как ресурсы и графические состояния + +Эти пункты гарантируют, что пример выполнится без проблем с правами доступа или совместимостью. + +## Как сохранить изменённый PDF после редактирования ресурсов + +Следующий код выполняет весь рабочий процесс: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Почему важен каждый шаг + +* **Шаг 1** изолирует путь к папке, чтобы вы могли использовать одну и ту же переменную для загрузки и сохранения. +* **Шаг 2** открывает исходный файл в блоке `using`, гарантируя освобождение всех нативных ресурсов. +* **Шаг 3** получает словарь **Resources** страницы, в котором хранятся объекты, такие как шрифты, изображения и графические состояния. Редактирование этого словаря является ядром **edit pdf resources**. +* **Шаг 4** создаёт новую запись **ExtGState**. Ключи `CA`, `ca` и `BM` управляют непрозрачностью обводки, заливки и режимом смешивания соответственно — так вы **add pdf transparency**. +* **Шаг 5** регистрирует новое графическое состояние под именем `GS0`. Любой контент, ссылающийся на `GS0`, унаследует настройки прозрачности. +* **Шаг 6** (необязательно) демонстрирует практический пример: прямоугольник, нарисованный с пользовательским графическим состоянием. Этот визуальный тест подтверждает, что прозрачность работает. +* **Шаг 7** записывает изменения в **output.pdf**, реализуя основную цель — **save modified pdf**. + +### Ожидаемый результат + +* `output.pdf` появляется в той же папке, что и исходный файл. +* На первой странице находится полупрозрачный прямоугольник (50 % непрозрачность заливки, 100 % непрозрачность обводки). +* Открытие файла в Adobe Acrobat или любом PDF‑просмотрщике показывает прямоугольник, смешанный с фоном, подтверждая успешное выполнение шага **add pdf transparency**. + +Вы можете открыть файл любым PDF‑ридером, чтобы проверить визуальный эффект. + +## Редактирование ресурсов PDF с Aspose.Pdf + +Когда требуется изменить низкоуровневые объекты PDF, словарь **Resources** является точкой входа. Распространённые сценарии включают: + +| Сценарий | Как достичь этого с помощью Aspose.Pdf | +|----------|----------------------------------------| +| Заменить существующий шрифт | Получить `Resources["Font"]`, изменить запись | +| Добавить новый XObject‑изображение | Создать `CosPdfStream`, добавить в `Resources["XObject"]` | +| Изменить толщину линии для конкретного пути | Добавить пользовательский `ExtGState` с параметром `/LW` | + +Приведённый выше код демонстрирует шаблон: получить `DictionaryEditor`, найти целевой подсловарь (например, `ExtGState`), затем добавить или заменить записи. Такой подход рекомендуется для безопасного **edit pdf resources**. + +## Добавление прозрачности PDF (режим смешивания, альфа‑канал) подробно + +Прозрачность в PDF определяется объектом **ExtGState**. Три ключа, используемые в примере, имеют следующее значение: + +| Ключ | Значение | Типичные значения | +|------|----------|-------------------| +| `CA` | Непрозрачность обводки (0 = прозрачный, 1 = непрозрачный) | `0.0` – `1.0` | +| `ca` | Непрозрачность заливки (тот же диапазон, что и `CA`) | `0.0` – `1.0` | +| `BM` | Режим смешивания — как комбинируются цвета источника и назначения | `"Normal"`, `"Multiply"`, `"Screen"` и т.д. | + +Можно экспериментировать с различными режимами смешивания, чтобы получить эффекты вроде soft‑light или overlay. Просто замените `"Normal"` на другое значение `CosPdfName`. Графическое состояние можно переиспользовать на нескольких страницах или объектах, ссылаясь на одно и то же имя (`GS0` в примере). + +## Распространённые подводные камни и профессиональные советы + +| Проблема | Почему возникает | Решение | +|----------|------------------|---------| +| Запись `ExtGState` отсутствует | Некоторые PDF‑файлы не содержат словарь, пока не добавлен графический статус | Использовать `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` перед добавлением | +| Прозрачность игнорируется в старых просмотрщиках | Просмотрщик не поддерживает прозрачность PDF 1.4+ | Убедиться, что версия PDF в выходном файле как минимум 1.4 (`pdfDocument.Version = 1.4`) | +| Коллизия имён с существующими графическими состояниями | Использование уже существующего имени перезаписывает его непреднамеренно | Выбрать уникальное имя (например, `"GS0"`, `"GS_CustomAlpha"`) или проверить `extGStateDict.ContainsKey(name)` заранее | + +Применение этих советов сокращает время отладки и обеспечивает надёжные результаты. + +## Полный рабочий пример в виде резюме + +Ниже представлен весь код программы без пояснительных комментариев, готовый к копированию‑вставке в консольный проект: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Запуск этой программы создаёт **output.pdf**, содержащий прозрачный прямоугольник и сохраняющий всё остальное содержимое из **input.pdf**. + +## Заключение + +Теперь вы знаете, как **save modified PDF** после выполнения низкоуровневых изменений, как **edit PDF resources** с помощью `DictionaryEditor` из Aspose.Pdf и как **add PDF transparency** через пользовательский словарь графических состояний. Эти техники дают тонкий контроль над внешним видом PDF и применимы к задачам вроде водяных знаков, наложения изображений или создания сложных визуальных эффектов. + +Дальше вы можете изучить: + +* Добавление нескольких графических состояний для разных уровней непрозрачности (вариации `add pdf transparency`) +* Обновление других типов ресурсов, таких как шрифты или XObjects (`edit pdf resources` для изображений) +* Объединение нескольких PDF‑файлов с сохранением пользовательских графических состояний (`save modified pdf` между документами) + +Экспериментируйте с режимами смешивания, значениями непрозрачности и областями ресурсов, чтобы адаптировать процесс под ваш конкретный рабочий поток обработки документов. Приятного кодинга! + +## Что вам стоит изучить дальше? + +Следующие учебники охватывают тесно связанные темы, расширяющие техники, продемонстрированные в этом руководстве. Каждый ресурс включает полностью работающие примеры кода с пошаговыми объяснениями, помогающими освоить дополнительные возможности API и исследовать альтернативные подходы в собственных проектах. + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/spanish/net/document-manipulation/_index.md b/pdf/spanish/net/document-manipulation/_index.md index a8d769e47e..b01680c510 100644 --- a/pdf/spanish/net/document-manipulation/_index.md +++ b/pdf/spanish/net/document-manipulation/_index.md @@ -318,6 +318,9 @@ Aprenda a reparar archivos PDF dañados rápidamente usando Aspose.PDF para .NET ### [Cómo redactar PDF en C# con Aspose PDF – Guía completa](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) Aprenda a redactar información confidencial de archivos PDF usando Aspose PDF para .NET con C#. Guía paso a paso. +### [Cómo guardar un PDF modificado con Aspose.PDF y agregar transparencia](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Aprenda a guardar PDFs modificados y aplicar transparencia usando Aspose.PDF para .NET. + ## Recursos adicionales - [Documentación de Aspose.PDF para la red](https://docs.aspose.com/pdf/net/) @@ -332,4 +335,4 @@ Aprenda a redactar información confidencial de archivos PDF usando Aspose PDF p {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/spanish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/spanish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..230330d59a --- /dev/null +++ b/pdf/spanish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-09-21 +description: Guardar PDF modificado usando Aspose.Pdf en C#. Aprende a editar recursos + PDF y añadir transparencia PDF en un ejemplo completo y ejecutable. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: es +lastmod: 2026-09-21 +og_description: Guarda PDF modificado con Aspose.Pdf en C#. Esta guía muestra cómo + editar recursos PDF y agregar transparencia PDF para el procesamiento profesional + de documentos. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Guardar PDF modificado con Aspose.Pdf – agregar transparencia paso a paso +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Cómo guardar un PDF modificado con Aspose.Pdf y añadir transparencia +url: /es/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo guardar PDF modificado con Aspose.Pdf y agregar transparencia + +Si necesita **guardar PDF modificado** después de cambiar sus recursos internos, esta guía ofrece una solución completa. Aprenderá cómo editar recursos PDF, insertar un diccionario de estado gráfico personalizado y agregar transparencia PDF usando Aspose.Pdf para .NET. + +El tutorial cubre cada paso, desde cargar el archivo de origen hasta verificar la salida. No se requieren referencias externas; el código se ejecuta tal cual en cualquier proyecto .NET 6+ con la biblioteca Aspose.Pdf instalada. + +## Requisitos previos + +* SDK .NET 6 o posterior instalado +* Una licencia válida de Aspose.Pdf para .NET (o una clave de evaluación temporal) +* Un PDF de entrada llamado **input.pdf** ubicado en una carpeta que controle +* Conocimientos básicos de C# y conceptos PDF como recursos y estados gráficos + +Estos elementos garantizan que el ejemplo se ejecute sin problemas de permisos o compatibilidad. + +## Cómo guardar PDF modificado después de editar recursos + +El siguiente código realiza todo el flujo de trabajo: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Por qué cada paso es importante + +* **Step 1** aísla la ruta de la carpeta para que pueda reutilizar la misma variable al cargar y guardar. +* **Step 2** abre el archivo de origen en un bloque `using`, garantizando que todos los recursos nativos se liberen. +* **Step 3** accede al diccionario **Resources** de la página, que almacena objetos como fuentes, imágenes y estados gráficos. Editar este diccionario es el núcleo de **edit pdf resources**. +* **Step 4** crea una nueva entrada **ExtGState**. Las claves `CA`, `ca` y `BM` controlan la opacidad del trazo, la opacidad del relleno y el modo de fusión respectivamente; así es como **add pdf transparency**. +* **Step 5** registra el nuevo estado gráfico bajo el nombre `GS0`. Cualquier contenido que haga referencia a `GS0` heredará la configuración de transparencia. +* **Step 6** (opcional) muestra un caso de uso práctico: un rectángulo dibujado con el estado gráfico personalizado. Esta prueba visual confirma que la transparencia funciona. +* **Step 7** escribe los cambios en **output.pdf**, cumpliendo el objetivo principal de **save modified pdf**. + +### Resultado esperado + +* `output.pdf` aparece en la misma carpeta que el archivo de origen. +* La primera página contiene un rectángulo semitransparente (50 % de opacidad de relleno, 100 % de opacidad de trazo). +* Al abrir el archivo en Adobe Acrobat o cualquier visor PDF se muestra el rectángulo mezclado con el fondo, confirmando que el paso **add pdf transparency** se completó con éxito. + +Puede abrir el archivo con cualquier lector PDF para verificar el efecto visual. + +## Editar recursos PDF con Aspose.Pdf + +Cuando necesita cambiar objetos PDF de bajo nivel, el diccionario **Resources** es el punto de entrada. Los escenarios comunes incluyen: + +| Escenario | Cómo lograrlo con Aspose.Pdf | +|---|---| +| Replace an existing font | Retrieve `Resources["Font"]`, modify the entry | +| Add a new image XObject | Create a `CosPdfStream`, add to `Resources["XObject"]` | +| Change line width for a specific path | Add a custom `ExtGState` with `/LW` parameter | + +El código anterior demuestra el patrón: obtener el `DictionaryEditor`, localizar el sub‑diccionario objetivo (p. ej., `ExtGState`) y luego agregar o reemplazar entradas. Este enfoque es la forma recomendada de **edit pdf resources** de forma segura. + +## Agregar transparencia PDF (modo de fusión, alfa) en detalle + +La transparencia en PDF se define mediante el objeto **ExtGState**. Las tres claves usadas en el ejemplo son: + +| Clave | Significado | Valores típicos | +|-----|---------|----------------| +| `CA` | Opacidad del trazo (0 = transparente, 1 = opaco) | `0.0` – `1.0` | +| `ca` | Opacidad del relleno (mismo rango que `CA`) | `0.0` – `1.0` | +| `BM` | Modo de fusión – cómo se combinan los colores de origen y destino | `"Normal"`, `"Multiply"`, `"Screen"` etc. | + +Puede experimentar con diferentes modos de fusión para lograr efectos como soft‑light o overlay. Simplemente reemplace `"Normal"` por otro valor `CosPdfName`. El estado gráfico puede reutilizarse en varias páginas u objetos haciendo referencia al mismo nombre (`GS0` en el ejemplo). + +## Problemas comunes y consejos profesionales + +| Problema | Por qué ocurre | Solución | +|---------|----------------|-----| +| The `ExtGState` entry does not exist | Some PDFs omit the dictionary until a graphic state is added | Use `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` before adding | +| Transparency appears ignored in older viewers | Viewer does not support PDF 1.4+ transparency | Ensure the output file’s PDF version is at least 1.4 (`pdfDocument.Version = 1.4`) | +| Name collision with existing graphic states | Using a name that already exists overwrites it unintentionally | Choose a unique name (e.g., `"GS0"`, `"GS_CustomAlpha"`) or check `extGStateDict.ContainsKey(name)` first | + +Aplicar estos consejos reduce el tiempo de depuración y produce resultados fiables. + +## Recapitulación del ejemplo completo + +A continuación se muestra el programa completo sin comentarios explicativos, listo para copiar y pegar en un proyecto de consola: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Ejecutar este programa crea **output.pdf** que contiene el rectángulo transparente y conserva todo el demás contenido de **input.pdf**. + +## Conclusión + +Ahora sabe cómo **save modified PDF** después de realizar cambios de bajo nivel, cómo **edit PDF resources** usando `DictionaryEditor` de Aspose.Pdf, y cómo **add PDF transparency** mediante un diccionario de estado gráfico personalizado. Estas técnicas le brindan un control fino sobre la apariencia del PDF y son aplicables a tareas como marcas de agua, superposición de imágenes o creación de efectos visuales complejos. + +Next, you might explore: + +* Agregar varios estados gráficos para diferentes niveles de opacidad (variaciones de `add pdf transparency`) +* Actualizar otros tipos de recursos como fuentes o XObjects (`edit pdf resources` para imágenes) +* Fusionar varios PDFs preservando los estados gráficos personalizados (`save modified pdf` entre documentos) + +Siéntase libre de experimentar con modos de fusión, valores de opacidad y alcances de recursos para adaptarlos a su flujo de trabajo de procesamiento de documentos. ¡Feliz codificación! + +## ¿Qué deberías aprender a continuación? + +Los siguientes tutoriales cubren temas estrechamente relacionados que se basan en las técnicas demostradas en esta guía. Cada recurso incluye ejemplos de código completos y funcionales con explicaciones paso a paso para ayudarle a dominar características adicionales de la API y explorar enfoques de implementación alternativos en sus propios proyectos. + +- [Agregar transparencia a PDF usando Aspose – Guía completa en C#](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Agregar transparencia a PDF con Aspose PDF en C# – Guía paso a paso](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Cómo guardar PDF con Aspose – Guía completa de conversión en C#](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/swedish/net/document-manipulation/_index.md b/pdf/swedish/net/document-manipulation/_index.md index 3d0801409a..70dbb726f5 100644 --- a/pdf/swedish/net/document-manipulation/_index.md +++ b/pdf/swedish/net/document-manipulation/_index.md @@ -319,6 +319,8 @@ Lär dig hur du reparerar skadade PDF-filer i C# med Aspose.PDF för .NET snabbt ### [Hur man maskerar PDF i C# med Aspose PDF – Komplett guide](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) Lär dig hur du maskerar känslig information i PDF-filer med Aspose PDF för .NET och C# i denna kompletta steg-för-steg-guide. +### [Hur man sparar modifierad PDF med Aspose.Pdf och lägger till transparens](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) + ## Ytterligare resurser - [Aspose.PDF för nätdokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/swedish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/swedish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..1c2c1fac49 --- /dev/null +++ b/pdf/swedish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-09-21 +description: Spara modifierad PDF med Aspose.Pdf i C#. Lär dig att redigera PDF‑resurser + och lägga till PDF‑transparens i ett komplett, körbart exempel. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: sv +lastmod: 2026-09-21 +og_description: Spara modifierad PDF med Aspose.Pdf i C#. Denna guide visar hur du + redigerar PDF‑resurser och lägger till PDF‑transparens för professionell dokumentbehandling. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Spara modifierad PDF med Aspose.Pdf – lägg till transparens steg för steg +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Hur man sparar en modifierad PDF med Aspose.Pdf och lägger till transparens +url: /sv/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man sparar modifierad PDF med Aspose.Pdf och lägger till transparens + +Om du behöver **spara modifierad PDF** efter att ha ändrat dess interna resurser, ger den här guiden en komplett lösning. Du kommer att lära dig hur man redigerar PDF-resurser, infogar ett anpassat graphic‑state‑lexikon och lägger till PDF-transparens med Aspose.Pdf för .NET. + +Handledningen täcker varje steg från att ladda källfilen till att verifiera resultatet. Inga externa referenser krävs; koden körs som den är i vilket .NET 6+ projekt som helst med Aspose.Pdf‑biblioteket installerat. + +## Förutsättningar + +Innan du börjar, se till att du har: + +* .NET 6 SDK eller senare installerat +* En giltig Aspose.Pdf för .NET-licens (eller en tillfällig evalueringsnyckel) +* En inmatnings‑PDF med namnet **input.pdf** placerad i en mapp du kontrollerar +* Grundläggande kunskap om C# och PDF‑koncept som resurser och graphic states + +Dessa objekt säkerställer att exemplet körs utan behörighets‑ eller kompatibilitetsproblem. + +## Så sparar du modifierad PDF efter redigering av resurser + +Följande kod utför hela arbetsflödet: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Varför varje steg är viktigt + +* **Steg 1** isolerar mappvägen så att du kan återanvända samma variabel för inläsning och sparande. +* **Steg 2** öppnar källfilen i ett `using`‑block, vilket garanterar att alla inhemska resurser frigörs. +* **Steg 3** får åtkomst till sidans **Resources**‑lexikon, som lagrar objekt som typsnitt, bilder och graphic states. Att redigera detta lexikon är kärnan i **edit pdf resources**. +* **Steg 4** bygger ett nytt **ExtGState**‑inlägg. Nycklarna `CA`, `ca` och `BM` styr linjens opacitet, fyllningsopacitet och blandningsläge respektive – så här **add pdf transparency**. +* **Steg 5** registrerar den nya graphic state under namnet `GS0`. Allt innehåll som refererar till `GS0` kommer att ärva transparensinställningarna. +* **Steg 6** (valfritt) visar ett praktiskt exempel: en rektangel ritad med den anpassade graphic state. Detta visuella test bekräftar att transparensen fungerar. +* **Steg 7** skriver ändringarna till **output.pdf**, vilket uppfyller huvudmålet att **save modified pdf**. + +### Förväntat resultat + +* `output.pdf` visas i samma mapp som källfilen. +* Den första sidan innehåller en semi‑transparent rektangel (50 % fyllningsopacitet, 100 % linjeopacitet). +* När filen öppnas i Adobe Acrobat eller någon PDF‑visare visas rektangeln blandad med bakgrunden, vilket bekräftar att steget **add pdf transparency** lyckades. + +Du kan öppna filen med vilken PDF‑läsare som helst för att verifiera den visuella effekten. + +## Redigera PDF‑resurser med Aspose.Pdf + +När du behöver ändra låg‑nivå PDF‑objekt är **Resources**‑lexikonet ingångspunkten. Vanliga scenarier inkluderar: + +| Scenario | How to achieve it with Aspose.Pdf | +|---|---| +| Ersätt ett befintligt typsnitt | Retrieve `Resources["Font"]`, modify the entry | +| Lägg till ett nytt bild‑XObject | Create a `CosPdfStream`, add to `Resources["XObject"]` | +| Ändra linjebredd för en specifik bana | Add a custom `ExtGState` with `/LW` parameter | + +Koden ovan demonstrerar mönstret: hämta `DictionaryEditor`, lokalisera mål‑underdictionary (t.ex. `ExtGState`) och sedan lägga till eller ersätta poster. Detta tillvägagångssätt är det rekommenderade sättet att **edit pdf resources** säkert. + +## Lägga till PDF‑transparens (blandningsläge, alfa) i detalj + +Transparens i PDF definieras av **ExtGState**‑objektet. De tre nycklarna som används i exemplet är: + +| Key | Betydelse | Typiska värden | +|-----|-----------|----------------| +| `CA` | Linjeopacitet (0 = transparent, 1 = opak) | `0.0` – `1.0` | +| `ca` | Fyllningsopacitet (samma intervall som `CA`) | `0.0` – `1.0` | +| `BM` | Blandningsläge – hur käll- och destinationsfärger kombineras | `"Normal"`, `"Multiply"`, `"Screen"` etc. | + +Du kan experimentera med olika blandningslägen för att uppnå effekter som soft‑light eller overlay. Byt helt enkelt ut `"Normal"` mot ett annat `CosPdfName`‑värde. Graphic state kan återanvändas över flera sidor eller objekt genom att referera till samma namn (`GS0` i exemplet). + +## Vanliga fallgropar och pro‑tips + +| Fallgrop | Varför det händer | Lösning | +|---------|-------------------|--------| +| `ExtGState`‑posten finns inte | Vissa PDF‑filer utelämnar lexikonet tills en graphic state läggs till | Use `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` before adding | +| Transparens verkar ignoreras i äldre visare | Visaren stödjer inte PDF 1.4+ transparens | Ensure the output file’s PDF version is at least 1.4 (`pdfDocument.Version = 1.4`) | +| Namnkollision med befintliga graphic states | Att använda ett namn som redan finns skriver över det oavsiktligt | Choose a unique name (e.g., `"GS0"`, `"GS_CustomAlpha"`) or check `extGStateDict.ContainsKey(name)` first | + +Att tillämpa dessa tips minskar felsökningstiden och ger pålitliga resultat. + +## Fullständigt fungerande exempel – sammanfattning + +Nedan är hela programmet utan förklarande kommentarer, redo att kopiera‑klistra in i ett konsolprojekt: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +När du kör detta program skapas **output.pdf** som innehåller den transparenta rektangeln och bevarar allt annat innehåll från **input.pdf**. + +## Slutsats + +Du vet nu hur du **save modified PDF** efter att ha gjort låg‑nivå ändringar, hur du **edit PDF resources** med Aspose.Pdf:s `DictionaryEditor`, och hur du **add PDF transparency** via ett anpassat graphic‑state‑lexikon. Dessa tekniker ger dig fin‑granulär kontroll över PDF‑utseendet och är tillämpbara på uppgifter som vattenstämpling, överlagring av bilder eller skapande av komplexa visuella effekter. + +Därefter kan du utforska: + +* Lägga till flera graphic states för olika opacitetsnivåer (`add pdf transparency`‑varianter) +* Uppdatera andra resurstypers som typsnitt eller XObjects (`edit pdf resources` för bilder) +* Sammanfoga flera PDF‑filer samtidigt som anpassade graphic states bevaras (`save modified pdf` över dokument) + +Känn dig fri att experimentera med blandningslägen, opacitetsvärden och resursområden för att passa ditt specifika dokument‑bearbetningsflöde. Lycka till med kodningen! + +## Vad bör du lära dig härnäst? + +Följande handledningar täcker närliggande ämnen som bygger på teknikerna som demonstrerats i den här guiden. Varje resurs innehåller kompletta fungerande kodexempel med steg‑för‑steg‑förklaringar för att hjälpa dig bemästra ytterligare API‑funktioner och utforska alternativa implementationsmetoder i dina egna projekt. + +- [Lägg till transparens i PDF med Aspose – Komplett C#‑guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Lägg till transparens i PDF med Aspose PDF i C# – Steg‑för‑steg‑guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Hur man sparar PDF med Aspose – Komplett C#‑konverteringsguide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/thai/net/document-manipulation/_index.md b/pdf/thai/net/document-manipulation/_index.md index d00c3e8142..8765d4521b 100644 --- a/pdf/thai/net/document-manipulation/_index.md +++ b/pdf/thai/net/document-manipulation/_index.md @@ -208,123 +208,26 @@ ### [วิธีอัปเดตสีข้อความลิงก์ PDF โดยใช้ Aspose.PDF .NET: คู่มือฉบับสมบูรณ์](./update-pdf-link-text-color-aspose-net/) เรียนรู้วิธีการเปลี่ยนสีข้อความของลิงก์ใน PDF ได้อย่างง่ายดายโดยใช้ Aspose.PDF สำหรับ .NET คู่มือฉบับสมบูรณ์นี้ครอบคลุมถึงเคล็ดลับการติดตั้ง การนำไปใช้งาน และการปรับแต่ง -### [แทรกหน้าใน PDF โดยใช้ Aspose.PDF สำหรับ .NET: คู่มือฉบับสมบูรณ์สำหรับการจัดการเอกสาร](./insert-pages-pdf-aspose-dotnet-guide/) +### [วิธีแทรกหน้าลงใน PDF โดยใช้ Aspose.PDF สำหรับ .NET: คู่มือฉบับสมบูรณ์สำหรับการจัดการเอกสาร](./insert-pages-pdf-aspose-dotnet-guide/) เรียนรู้วิธีแทรกหน้าใน PDF โดยใช้ Aspose.PDF สำหรับ .NET คำแนะนำทีละขั้นตอนนี้ครอบคลุมทุกอย่างตั้งแต่การตั้งค่าจนถึงการใช้งาน เหมาะสำหรับนักพัฒนา C# -### [แทรกหน้าใน PDF โดยใช้ Aspose.PDF สำหรับ .NET: คู่มือครอบคลุมสำหรับการจัดการเอกสารอย่างราบรื่น](./aspose-pdf-net-insert-pages-between-numbers/) +### [วิธีแทรกหน้าใน PDF โดยใช้ Aspose.PDF สำหรับ .NET: คู่มือครอบคลุมสำหรับการจัดการเอกสารอย่างราบรื่น](./aspose-pdf-net-insert-pages-between-numbers/) เรียนรู้วิธีการแทรกหน้าลงใน PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยคำแนะนำทีละขั้นตอนนี้ ปรับปรุงเวิร์กโฟลว์เอกสารของคุณอย่างมีประสิทธิภาพ -### [แทรกหน้าว่างใน PDF โดยใช้ Aspose.PDF .NET: คู่มือฉบับสมบูรณ์](./aspose-pdf-net-insert-empty-page/) +### [วิธีแทรกหน้าว่างใน PDF โดยใช้ Aspose.PDF .NET: คู่มือฉบับสมบูรณ์](./aspose-pdf-net-insert-empty-page/) เรียนรู้วิธีแทรกหน้าว่างในเอกสาร PDF ได้อย่างง่ายดายโดยใช้ Aspose.PDF สำหรับ .NET ปฏิบัติตามคำแนะนำทีละขั้นตอนนี้เพื่อพัฒนาทักษะการจัดการเอกสารของคุณ -### [เรียนรู้วิธี MakeNUp ของ Aspose.PDF .NET เพื่อการจัดวาง PDF ที่มีประสิทธิภาพ](./aspose-pdf-net-make-nup-method-pdf-layout/) -เรียนรู้วิธีการจัดเรียงหน้า PDF หลายหน้าในรูปแบบใหม่อย่างมีประสิทธิภาพโดยใช้เมธอด MakeNUp ของ Aspose.PDF .NET เหมาะสำหรับจดหมายข่าว โบรชัวร์ และรายงาน +### [วิธีบันทึก PDF ที่แก้ไขแล้วด้วย Aspose.Pdf และเพิ่มความโปร่งใส](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +เรียนรู้วิธีบันทึก PDF ที่แก้ไขแล้วและเพิ่มความโปร่งใสด้วย Aspose.PDF สำหรับ .NET อย่างละเอียด -### [การใช้งาน Aspose.PDF สำหรับ .NET: คำแนะนำในการจัดเรียง PDF อย่างมีประสิทธิภาพ](./mastering-aspose-pdf-dotnet-pdfs-concatenation-guide/) -เรียนรู้วิธีเชื่อมโยงไฟล์ PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยคู่มือฉบับสมบูรณ์นี้ ปรับปรุงงานประมวลผลเอกสารของคุณได้อย่างง่ายดาย - -### [เรียนรู้ Aspose.PDF สำหรับ .NET: รวม PDF ได้อย่างราบรื่นโดยใช้ฟังก์ชัน N-Up](./combine-pdfs-aspose-pdf-net-n-up-functionality/) -เรียนรู้วิธีใช้ Aspose.PDF สำหรับ .NET เพื่อรวมไฟล์ PDF หลายไฟล์เข้าด้วยกันอย่างมีประสิทธิภาพโดยใช้ฟังก์ชัน N-Up เหมาะสำหรับนักพัฒนาที่ต้องการปรับปรุงการจัดการเอกสารให้มีประสิทธิภาพ - -### [เชี่ยวชาญการจัดการ PDF: เปิดและจัดการคุณสมบัติเอกสารด้วย Aspose.PDF สำหรับ .NET](./aspose-pdf-dotnet-open-manage-properties/) -เรียนรู้การเปิด เรียกค้น และแสดงคุณสมบัติของเอกสาร PDF โดยใช้ Aspose.PDF สำหรับ .NET ปรับปรุงประสบการณ์การดู PDF ของคุณในแอปพลิเคชันต่างๆ - -### [เชี่ยวชาญการจัดการ PDF ใน .NET โดยใช้ Aspose.PDF: คู่มือที่ครอบคลุม](./master-pdf-manipulation-net-asposepdf/) -เรียนรู้วิธีจัดการ PDF อย่างมีประสิทธิภาพด้วย Aspose.PDF สำหรับ .NET ผนวก แยก และแยกไฟล์ PDF ได้อย่างราบรื่นด้วยคู่มือโดยละเอียดนี้ - -### [เชี่ยวชาญการจัดการ PDF ใน .NET ด้วย Aspose.PDF: คู่มือที่ครอบคลุม](./aspose-pdf-net-tutorial/) -เรียนรู้วิธีจัดการ PDF ในโปรแกรม .NET โดยใช้ Aspose.PDF คู่มือนี้ครอบคลุมถึงการโหลดเอกสาร การเข้าถึงฟิลด์แบบฟอร์ม และการวนซ้ำตัวเลือกต่างๆ - -### [เชี่ยวชาญการจัดการ PDF ด้วย Aspose.PDF .NET: คู่มือครอบคลุมสำหรับการจัดการเอกสารอัตโนมัติ](./master-pdf-manipulation-aspose-dotnet-guide/) -เรียนรู้วิธีจัดการงาน PDF โดยอัตโนมัติโดยใช้ Aspose.PDF สำหรับ .NET รวมถึงการเชื่อมโยงไฟล์ การเพิ่มหน้า การแทรกข้อความ และการสร้างลิงก์ - -### [เชี่ยวชาญการจัดการ PDF ด้วย Aspose.PDF .NET: โหลดและแก้ไขเอกสารได้อย่างง่ายดาย](./mastering-pdf-manipulation-aspose-dotnet/) -เรียนรู้วิธีการโหลด นำทาง และแก้ไขเอกสาร PDF โดยใช้ไลบรารี Aspose.PDF .NET ที่มีประสิทธิภาพ ปรับปรุงแอปพลิเคชันของคุณวันนี้! - -### [เชี่ยวชาญการจัดการ PDF ด้วย Aspose.PDF .NET: คำแนะนำการโหลด ค้นหา และใส่คำอธิบายประกอบ](./aspose-pdf-dotnet-mastering-pdfs-manipulation-guide/) -เรียนรู้การจัดการ PDF อย่างเชี่ยวชาญโดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการโหลดเอกสาร การค้นหาข้อความ และการใช้คำอธิบายประกอบ เช่น การขีดฆ่า - -### [เชี่ยวชาญการจัดการ PDF ด้วย Aspose.PDF สำหรับ .NET: คู่มือที่ครอบคลุม](./mastering-pdf-manipulation-aspose-pdf-net-guide/) -เรียนรู้วิธีการสร้าง แก้ไข รวม และแยกข้อมูลจาก PDF อย่างมีประสิทธิภาพโดยใช้ Aspose.PDF สำหรับ .NET ปรับปรุงเวิร์กโฟลว์เอกสารของคุณและเพิ่มประสิทธิภาพการทำงาน - -### [หลักการจัดการนับหน้า PDF ด้วย Aspose.PDF สำหรับ .NET: คู่มือฉบับสมบูรณ์](./mastering-pdf-manipulation-aspose-pdf-net/) -เรียนรู้วิธีการเรียกค้นและแก้ไขจำนวนหน้า PDF อย่างมีประสิทธิภาพโดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการตั้งค่า การใช้งาน และแอปพลิเคชันในทางปฏิบัติ - -### [เรียนรู้ Aspose.PDF .NET: บูรณาการ LaTeX ในตารางและเซลล์ PDF ได้อย่างราบรื่น](./integrate-latex-aspose-pdf-dotnet/) -เรียนรู้การผสาน LaTeX เข้ากับ PDF โดยใช้ Aspose.PDF สำหรับ .NET ปรับปรุงเอกสารของคุณด้วยนิพจน์ทางคณิตศาสตร์และสูตรทางวิทยาศาสตร์ระดับมืออาชีพ - -### [เรียนรู้การใช้ Aspose.PDF สำหรับ .NET: แก้ไข PDF ได้อย่างง่ายดาย](./aspose-pdf-net-open-modify-save-pdfs/) -บทช่วยสอนเกี่ยวกับโค้ดสำหรับ Aspose.PDF Net - -### [เรียนรู้การสร้างส่วนหัว PDF แบบไดนามิกด้วยตารางและรูปภาพโดยใช้ Aspose.PDF .NET](./dynamic-pdf-headers-tables-images-aspose-pdf/) -เรียนรู้วิธีสร้างส่วนหัว PDF แบบไดนามิกพร้อมตารางและรูปภาพโดยใช้ Aspose.PDF สำหรับ .NET ปรับปรุงการออกแบบเอกสารของคุณได้อย่างง่ายดาย - -### [เรียนรู้การต่อไฟล์ PDF ด้วย Aspose.PDF สำหรับ .NET: คู่มือฉบับสมบูรณ์](./mastering-pdf-concatenation-aspose-net-guide/) -เรียนรู้วิธีเชื่อมโยงไฟล์ PDF หลายไฟล์เข้าด้วยกันอย่างราบรื่นโดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการตั้งค่า การเชื่อมโยง และการจัดการไฟล์ที่เสียหาย - -### [การเรียนรู้การจัดการ PDF อย่างเชี่ยวชาญ: การตรวจจับทิศทางของหน้า สี และช่องว่างอย่างมีประสิทธิภาพด้วย Aspose.PDF .NET](./aspose-pdf-net-page-orientation-color-blank-detection/) -เรียนรู้วิธีจัดการเอกสาร PDF อย่างมีประสิทธิภาพด้วยการเปลี่ยนการวางแนวของหน้า ตรวจจับสีขาว และระบุหน้าว่างโดยใช้ Aspose.PDF สำหรับ .NET - -### [การเรียนรู้การจัดการ PDF อย่างเชี่ยวชาญ: คู่มือฉบับสมบูรณ์สำหรับการใช้ Aspose.PDF สำหรับ .NET](./aspose-pdf-net-manipulation-guide/) -เรียนรู้วิธีการจัดการ PDF อย่างมีประสิทธิภาพด้วย Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมทุกสิ่งที่คุณต้องการสำหรับการจัดการเอกสารอัตโนมัติ ตั้งแต่การตั้งค่าไปจนถึงฟีเจอร์ขั้นสูง - -### [การเรียนรู้การจัดการ PDF: Aspose.PDF .NET สำหรับการค้นหา Regex และการประมวลผลเอกสาร](./aspose-pdf-net-regex-searching/) -เรียนรู้วิธีใช้ Aspose.PDF สำหรับ .NET เพื่อโหลด จัดการ และดำเนินการค้นหา regex ในเอกสาร PDF ทำให้กระบวนการประมวลผลเอกสารของคุณเป็นแบบอัตโนมัติอย่างมีประสิทธิภาพ - -### [เรียนรู้การแยกหน้า PDF ด้วย Aspose.PDF .NET](./mastering-page-splitting-aspose-pdf-net/) -บทช่วยสอนเกี่ยวกับโค้ดสำหรับ Aspose.PDF Net - -### [รวมไฟล์ PDF ใน .NET โดยใช้ Aspose.PDF: คู่มือฉบับสมบูรณ์](./merge-pdfs-net-aspose-pdf-tutorial/) -เรียนรู้วิธีการรวมไฟล์ PDF ได้อย่างราบรื่นโดยใช้ Aspose.PDF สำหรับ .NET คำแนะนำทีละขั้นตอนนี้ครอบคลุมถึงการตั้งค่า การใช้งาน และแอปพลิเคชันจริง - -### [ย้ายฟิลด์ฟอร์ม PDF ใน .NET โดยใช้ Aspose.PDF: คำแนะนำทีละขั้นตอน](./move-pdf-fields-aspose-pdf-dotnet-guide/) -เรียนรู้วิธีการย้ายและเปลี่ยนตำแหน่งฟิลด์ฟอร์ม PDF ได้อย่างง่ายดายด้วย Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการตั้งค่า คำแนะนำทีละขั้นตอน และเคล็ดลับในการแก้ไขปัญหา - -### [การจัดการ PDF ได้อย่างง่ายดาย: คู่มือ Aspose.PDF .NET สำหรับการโหลด การบันทึก และการกำหนดค่าการซูม](./master-pdf-manipulation-aspose-dotnet-load-save-configure-page-zoom/) -เรียนรู้การจัดการ PDF อย่างเชี่ยวชาญด้วย Aspose.PDF สำหรับ .NET เรียนรู้วิธีโหลด บันทึก แยกมิติ และกำหนดค่าการซูมอย่างมีประสิทธิภาพ - -### [แทนที่ข้อความแรกที่เกิดขึ้นใน PDF โดยใช้ Aspose.PDF สำหรับ .NET - คู่มือที่ครอบคลุม](./replace-first-text-occurrence-aspose-pdf-net/) -เรียนรู้วิธีการแทนที่ข้อความแรกใน PDF โดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการตั้งค่า ตัวอย่างโค้ดและการใช้งานจริง - -### [ปรับขนาดเนื้อหา PDF ด้วย Aspose.PDF สำหรับ .NET](./resize-pdf-contents-aspose-pdf-dotnet/) -บทช่วยสอนเกี่ยวกับโค้ดสำหรับ Aspose.PDF Net - -### [หมุนหน้า PDF และดึงข้อมูลขนาดโดยใช้ Aspose.PDF สำหรับ .NET](./rotate-pdf-pages-dimensions-aspose-dotnet/) -เรียนรู้วิธีการหมุนหน้า PDF และดึงข้อมูลขนาดอย่างมีประสิทธิภาพโดยใช้ Aspose.PDF สำหรับ .NET พัฒนาทักษะการจัดการเอกสารของคุณด้วยคู่มือฉบับสมบูรณ์นี้ - -### [หมุนหน้า PDF โดยใช้ Aspose.PDF ใน .NET: คู่มือสำหรับนักพัฒนา](./rotate-pdf-pages-aspose-pdf-dotnet/) -เรียนรู้วิธีหมุนหน้า PDF ด้วย Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการหมวนหน้าเฉพาะตามองศาและมีตัวอย่างโค้ดสำหรับการจัดการเอกสารอย่างมีประสิทธิภาพ - -### [แยกหน้า PDF จากหน้าเฉพาะโดยใช้ .NET Streams และ Aspose.PDF](./split-pdf-pages-with-net-streams-aspose-pdf/) -เรียนรู้วิธีแยกไฟล์ PDF จากหน้าเฉพาะอย่างมีประสิทธิภาพโดยใช้สตรีม .NET พร้อมด้วย Aspose.PDF เพื่อเพิ่มประสิทธิภาพการจัดการเอกสารในแอปพลิเคชันของคุณ - -### [แบ่งหน้า PDF ออกเป็นไฟล์แต่ละไฟล์โดยใช้ Aspose.PDF .NET (บทช่วยสอน C#)](./split-pdf-pages-aspose-net-csharp/) -เรียนรู้วิธีแบ่งไฟล์ PDF ออกเป็นหน้าต่างๆ โดยใช้ Aspose.PDF สำหรับ .NET และ C# คู่มือนี้ครอบคลุมถึงการตั้งค่า การนำไปใช้งาน และแอปพลิเคชันในทางปฏิบัติ - -### [แบ่งหน้า PDF ออกเป็นไฟล์แยกต่างหากด้วย Aspose.PDF สำหรับ .NET: คู่มือที่ครอบคลุม](./aspose-pdf-split-pdf-pages-net/) -เรียนรู้วิธีแบ่งหน้า PDF ออกเป็นไฟล์แยกต่างหากโดยใช้ Aspose.PDF สำหรับ .NET คู่มือฉบับสมบูรณ์นี้ครอบคลุมถึงเคล็ดลับในการตั้งค่า การใช้งาน และการปรับแต่ง - -### [แยกและสร้างไฟล์ PDF โดยใช้ Aspose.PDF .NET | คำแนะนำการจัดการเอกสาร](./split-create-pdf-aspose-pdf-net/) -เรียนรู้วิธีแยกไฟล์ PDF หลายหน้าและสร้างไฟล์ PDF ใหม่โดยใช้ Aspose.PDF สำหรับ .NET ปฏิบัติตามคำแนะนำที่ครอบคลุมนี้พร้อมตัวอย่างโค้ด - -### [คู่มือฉบับสมบูรณ์สำหรับการจัดการ PDF ด้วย Aspose.PDF .NET: โหลด บันทึก และแทนที่ข้อความอย่างมีประสิทธิภาพ](./master-pdf-manipulation-aspose-pdf-net/) -เรียนรู้วิธีการจัดการ PDF อย่างเชี่ยวชาญโดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการโหลด การบันทึก และการแทนที่ข้อความใน PDF ซึ่งเหมาะสำหรับนักพัฒนาที่ต้องการประสิทธิภาพ - -### [วิธีลบข้อมูล PDF ใน C# – ซ่อนข้อความ PDF และลบเนื้อหา PDF](./how-to-redact-pdf-in-c-hide-text-pdf-remove-content-pdf/) -เรียนรู้วิธีลบข้อมูลที่เป็นความลับจากไฟล์ PDF ด้วย C# โดยซ่อนข้อความและลบเนื้อหาอย่างปลอดภัย - -### [วิธีซ่อมแซม PDF ด้วย C# – แก้ไขไฟล์ PDF ที่เสียหายอย่างรวดเร็ว](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) -เรียนรู้วิธีซ่อมแซมไฟล์ PDF ที่เสียหายอย่างรวดเร็วด้วย C# และ Aspose.PDF เพื่อกู้คืนเอกสารของคุณได้ทันที +### [วิธีแทรกหน้าใน PDF โดยใช้ Aspose.PDF สำหรับ .NET: คู่มือฉบับสมบูรณ์สำหรับการจัดการเอกสาร](./insert-pages-pdf-aspose-dotnet-guide/) +เรียนรู้วิธีแทรกหน้าใน PDF โดยใช้ Aspose.PDF สำหรับ .NET คำแนะนำทีละขั้นตอนนี้ครอบคลุมทุกอย่างตั้งแต่การตั้งค่าจนถึงการใช้งาน เหมาะสำหรับนักพัฒนา C# -## แหล่งข้อมูลเพิ่มเติม +### [วิธีแทรกหน้าใน PDF โดยใช้ Aspose.PDF สำหรับ .NET: คู่มือครอบคลุมสำหรับการจัดการเอกสารอย่างราบรื่น](./aspose-pdf-net-insert-pages-between-numbers/) +เรียนรู้วิธีการแทรกหน้าลงใน PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยคำแนะนำทีละขั้นตอนนี้ ปรับปรุงเวิร์กโฟลว์เอกสารของคุณอย่างมีประสิทธิภาพ -- [Aspose.PDF สำหรับเอกสารประกอบ Net](https://docs.aspose.com/pdf/net/) -- [เอกสารอ้างอิง Aspose.PDF สำหรับ Net API](https://reference.aspose.com/pdf/net/) -- [ดาวน์โหลด Aspose.PDF สำหรับ Net](https://releases.aspose.com/pdf/net/) -- [การสนับสนุนฟรี](https://forum.aspose.com/) -- [ใบอนุญาตชั่วคราว](https://purchase.aspose.com/temporary-license/) -### [วิธีทำการลบข้อมูลลับ PDF ใน C# ด้วย Aspose PDF – คู่มือฉบับสมบูรณ์](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) -เรียนรู้วิธีลบข้อมูลลับจากไฟล์ PDF อย่างมีประสิทธิภาพโดยใช้ Aspose PDF ใน C# ด้วยคู่มือขั้นตอนเต็มรูปแบบนี้ +### [วิธีแทรกหน้าว่างใน PDF โดยใช้ Aspose.PDF .NET: คู่มือฉบับสมบูรณ์](./aspose-pdf-net-insert-empty-page/) +เรียนรู้วิธีแทรกหน้าว่างในเอกสาร PDF ได้อย่างง่ายดายโดยใช้ Aspose.PDF สำหรับ .NET ปฏิบัติตามคำแนะนำทีละขั้นตอนนี้เพื่อพัฒนาทักษะการจัดการเอกสารของคุณ {{< /blocks/products/pf/tutorial-page-section >}} @@ -332,4 +235,4 @@ {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/thai/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/thai/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..7563b80a6c --- /dev/null +++ b/pdf/thai/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-09-21 +description: บันทึก PDF ที่แก้ไขแล้วโดยใช้ Aspose.Pdf ใน C#. เรียนรู้การแก้ไขทรัพยากร + PDF และเพิ่มความโปร่งใสของ PDF ในตัวอย่างที่สมบูรณ์และสามารถรันได้ +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: th +lastmod: 2026-09-21 +og_description: บันทึก PDF ที่แก้ไขแล้วด้วย Aspose.Pdf ใน C#. คู่มือนี้แสดงวิธีแก้ไขทรัพยากร + PDF และเพิ่มความโปร่งใสของ PDF สำหรับการประมวลผลเอกสารระดับมืออาชีพ. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: บันทึก PDF ที่แก้ไขด้วย Aspose.Pdf – เพิ่มความโปร่งใสขั้นตอนต่อขั้นตอน +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: วิธีบันทึก PDF ที่แก้ไขแล้วด้วย Aspose.Pdf และเพิ่มความโปร่งใส +url: /th/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีบันทึก PDF ที่แก้ไขแล้วด้วย Aspose.Pdf และเพิ่มความโปร่งใส + +หากคุณต้องการ **บันทึก PDF ที่แก้ไขแล้ว** หลังจากเปลี่ยนแปลงทรัพยากรภายในของไฟล์ คู่มือนี้จะให้วิธีแก้ไขแบบครบถ้วน คุณจะได้เรียนรู้วิธีแก้ไขทรัพยากร PDF, แทรกพจนานุกรม graphic‑state ที่กำหนดเอง, และเพิ่มความโปร่งใสให้ PDF ด้วย Aspose.Pdf สำหรับ .NET + +บทเรียนนี้ครอบคลุมทุกขั้นตอนตั้งแต่การโหลดไฟล์ต้นฉบับจนถึงการตรวจสอบผลลัพธ์ ไม่ต้องอ้างอิงภายนอก; โค้ดสามารถทำงานได้ทันทีในโครงการ .NET 6+ ที่ติดตั้งไลบรารี Aspose.Pdf + +## ข้อกำหนดเบื้องต้น + +ก่อนเริ่มทำงาน โปรดตรวจสอบว่าคุณมี: + +* .NET 6 SDK หรือรุ่นที่ใหม่กว่า +* ใบอนุญาต Aspose.Pdf for .NET ที่ใช้งานได้ (หรือคีย์ประเมินผลชั่วคราว) +* PDF อินพุตชื่อ **input.pdf** ที่วางไว้ในโฟลเดอร์ที่คุณควบคุมได้ +* ความรู้พื้นฐานเกี่ยวกับ C# และแนวคิด PDF เช่น resources และ graphic states + +สิ่งเหล่านี้จะทำให้ตัวอย่างทำงานโดยไม่มีปัญหาเรื่องสิทธิ์หรือความเข้ากันได้ + +## วิธีบันทึก PDF ที่แก้ไขแล้วหลังจากแก้ไขทรัพยากร + +โค้ดต่อไปนี้ทำงานทั้งหมดของกระบวนการ: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### ทำไมแต่ละขั้นตอนจึงสำคัญ + +* **ขั้นตอน 1** แยกเส้นทางโฟลเดอร์เพื่อให้คุณสามารถใช้ตัวแปรเดียวกันสำหรับการโหลดและบันทึก +* **ขั้นตอน 2** เปิดไฟล์ต้นฉบับในบล็อก `using` เพื่อรับประกันว่าทรัพยากรเนทีฟทั้งหมดจะถูกปล่อยออกมา +* **ขั้นตอน 3** เข้าถึงพจนานุกรม **Resources** ของหน้า ซึ่งเก็บอ็อบเจ็กต์เช่นฟอนต์, รูปภาพ, และ graphic states การแก้ไขพจนานุกรมนี้คือหัวใจของ **edit pdf resources** +* **ขั้นตอน 4** สร้างรายการ **ExtGState** ใหม่ คีย์ `CA`, `ca`, และ `BM` ควบคุมความโปร่งใสของเส้น, ความโปร่งใสของการเติม, และโหมดผสมตามลำดับ — นี่คือวิธีที่คุณ **add pdf transparency** +* **ขั้นตอน 5** ลงทะเบียน graphic state ใหม่ภายใต้ชื่อ `GS0` เนื้อหาที่อ้างอิง `GS0` จะสืบทอดการตั้งค่าความโปร่งใสนี้ +* **ขั้นตอน 6** (ไม่บังคับ) แสดงกรณีการใช้งานจริง: วาดสี่เหลี่ยมโดยใช้ graphic state ที่กำหนดเอง การทดสอบภาพนี้ยืนยันว่าความโปร่งใสทำงานได้ +* **ขั้นตอน 7** เขียนการเปลี่ยนแปลงลงใน **output.pdf** เพื่อบรรลุเป้าหมายหลักคือ **save modified pdf** + +### ผลลัพธ์ที่คาดหวัง + +* `output.pdf` ปรากฏในโฟลเดอร์เดียวกับไฟล์ต้นฉบับ +* หน้าแรกมีสี่เหลี่ยมกึ่งโปร่งใส (ความโปร่งใสการเติม 50 %, ความโปร่งใสเส้นขอบ 100 %) +* เปิดไฟล์ด้วย Adobe Acrobat หรือโปรแกรมอ่าน PDF ใด ๆ จะเห็นสี่เหลี่ยมผสมกับพื้นหลัง ยืนยันว่าขั้นตอน **add pdf transparency** สำเร็จ + +คุณสามารถเปิดไฟล์ด้วยโปรแกรมอ่าน PDF ใดก็ได้เพื่อยืนยันผลภาพ + +## การแก้ไขทรัพยากร PDF ด้วย Aspose.Pdf + +เมื่อคุณต้องการเปลี่ยนแปลงอ็อบเจ็กต์ PDF ระดับต่ำ พจนานุกรม **Resources** คือจุดเริ่มต้น สถานการณ์ทั่วไปได้แก่: + +| สถานการณ์ | วิธีทำด้วย Aspose.Pdf | +|-----------|----------------------| +| แทนที่ฟอนต์ที่มีอยู่ | ดึง `Resources["Font"]` แล้วแก้ไขรายการ | +| เพิ่ม XObject รูปภาพใหม่ | สร้าง `CosPdfStream` แล้วเพิ่มลงใน `Resources["XObject"]` | +| เปลี่ยนความกว้างของเส้นสำหรับเส้นทางเฉพาะ | เพิ่ม `ExtGState` ที่กำหนดค่า `/LW` | + +โค้ดด้านบนแสดงรูปแบบการทำงาน: ดึง `DictionaryEditor`, ค้นหาพจนานุกรมย่อยเป้าหมาย (เช่น `ExtGState`), แล้วเพิ่มหรือแทนที่รายการ วิธีนี้เป็นวิธีที่แนะนำเพื่อ **edit pdf resources** อย่างปลอดภัย + +## การเพิ่มความโปร่งใสให้ PDF (blend mode, alpha) อย่างละเอียด + +ความโปร่งใสใน PDF นิยามโดยอ็อบเจ็กต์ **ExtGState** คีย์สามตัวที่ใช้ในตัวอย่างคือ: + +| คีย์ | ความหมาย | ค่าที่ใช้บ่อย | +|------|-----------|----------------| +| `CA` | ความโปร่งใสของเส้น (0 = โปร่งใส, 1 = ทึบ) | `0.0` – `1.0` | +| `ca` | ความโปร่งใสของการเติม (ช่วงเดียวกับ `CA`) | `0.0` – `1.0` | +| `BM` | โหมดผสม – วิธีที่สีต้นทางและสีปลายทางผสมกัน | `"Normal"`, `"Multiply"`, `"Screen"` ฯลฯ | + +คุณสามารถทดลองใช้โหมดผสมต่าง ๆ เพื่อให้ได้เอฟเฟกต์เช่น soft‑light หรือ overlay เพียงเปลี่ยน `"Normal"` เป็นค่า `CosPdfName` อื่น ๆ graphic state นี้สามารถนำไปใช้ซ้ำได้หลายหน้า หรือหลายอ็อบเจ็กต์โดยอ้างอิงชื่อเดียวกัน (`GS0` ในตัวอย่าง) + +## ข้อผิดพลาดทั่วไปและเคล็ดลับมืออาชีพ + +| ข้อผิดพลาด | สาเหตุ | วิธีแก้ | +|------------|--------|----------| +| รายการ `ExtGState` ไม่พบ | PDF บางไฟล์ไม่มีพจนานุกรมนี้จนกว่าจะเพิ่ม graphic state | ใช้ `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` ก่อนเพิ่ม | +| ความโปร่งใสไม่แสดงในโปรแกรมอ่านเก่า | โปรแกรมอ่านไม่รองรับความโปร่งใส PDF 1.4+ | ตรวจสอบให้เวอร์ชัน PDF ของไฟล์เอาต์พุตเป็นอย่างน้อย 1.4 (`pdfDocument.Version = 1.4`) | +| ชื่อชนกับ graphic state ที่มีอยู่แล้ว | ใช้ชื่อที่ซ้ำกันทำให้เขียนทับโดยไม่ได้ตั้งใจ | เลือกชื่อที่ไม่ซ้ำ (เช่น `"GS0"`, `"GS_CustomAlpha"`) หรือเช็ค `extGStateDict.ContainsKey(name)` ก่อน | + +การใช้เคล็ดลับเหล่านี้จะลดเวลาแก้บั๊กและทำให้ผลลัพธ์เชื่อถือได้ + +## สรุปตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมทั้งหมดโดยไม่มีคอมเมนต์อธิบาย พร้อมคัดลอก‑วางลงในโครงการคอนโซล: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +รันโปรแกรมนี้จะสร้าง **output.pdf** ที่มีสี่เหลี่ยมโปร่งใสและคงเนื้อหาอื่น ๆ จาก **input.pdf** ไว้ครบถ้วน + +## สรุป + +ตอนนี้คุณรู้วิธี **save modified PDF** หลังจากทำการเปลี่ยนแปลงระดับต่ำ, วิธี **edit PDF resources** ด้วย `DictionaryEditor` ของ Aspose.Pdf, และวิธี **add PDF transparency** ผ่านพจนานุกรม graphic‑state ที่กำหนดเอง เทคนิคเหล่านี้ให้การควบคุมระดับละเอียดต่อการแสดงผลของ PDF และสามารถนำไปใช้ในงานเช่น การใส่ลายน้ำ, การซ้อนรูปภาพ, หรือการสร้างเอฟเฟกต์ภาพซับซ้อน + +ต่อไปคุณอาจสำรวจ: + +* เพิ่ม graphic state หลายตัวสำหรับระดับความโปร่งใสต่าง ๆ (รูปแบบ `add pdf transparency` ที่หลากหลาย) +* อัปเดตประเภททรัพยากรอื่น ๆ เช่น ฟอนต์หรือ XObject (`edit pdf resources` สำหรับรูปภาพ) +* รวมหลาย PDF พร้อมคง graphic state ที่กำหนดเอง (`save modified pdf` ข้ามเอกสาร) + +ลองทดลองกับโหมดผสม, ค่า opacity, และขอบเขตของทรัพยากรเพื่อให้เหมาะกับเวิร์กโฟลว์การประมวลผลเอกสารของคุณเอง ขอให้เขียนโค้ดอย่างสนุกสนาน! + +## สิ่งที่คุณควรเรียนต่อไป + +บทแนะนำต่อไปนี้ครอบคลุมหัวข้อที่เกี่ยวข้องอย่างใกล้ชิดและต่อยอดจากเทคนิคในคู่มือนี้ แต่ละแหล่งข้อมูลมีโค้ดทำงานเต็มรูปแบบพร้อมคำอธิบายทีละขั้นตอน เพื่อช่วยให้คุณเชี่ยวชาญฟีเจอร์ API เพิ่มเติมและสำรวจแนวทางการทำงานอื่น ๆ ในโครงการของคุณ + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/turkish/net/document-manipulation/_index.md b/pdf/turkish/net/document-manipulation/_index.md index eba9d8a284..f7c861d585 100644 --- a/pdf/turkish/net/document-manipulation/_index.md +++ b/pdf/turkish/net/document-manipulation/_index.md @@ -151,7 +151,7 @@ Aspose.PDF for .NET kullanarak PDF sayfa boyutlarını A4'e nasıl güncelleyece ### [.NET için Aspose.PDF Kullanarak PDF'deki Sayfaları Nasıl Sayabilirsiniz (C# Eğitimi)](./mastering-aspose-pdf-net-get-page-count/) Bu adım adım C# eğitimiyle .NET için Aspose.PDF kullanarak bir PDF'deki sayfaların nasıl sayılacağını öğrenin. Belge düzenlemede kolayca ustalaşın. -### [.NET için Aspose.PDF ile PDF'leri Özelleştirme: Sayfa Kenar Boşluklarını Ayarlama ve Çizgiler Çizme](./customize-pdfs-aspose-pdf-set-margins-draw-lines/) +### [.NET için Aspose.PDF Kullanarak PDF'leri Özelleştirme: Sayfa Kenar Boşluklarını Ayarlama ve Çizgiler Çizme](./customize-pdfs-aspose-pdf-set-margins-draw-lines/) Sayfa kenar boşluklarını ayarlayarak ve çizgiler çizerek Aspose.PDF for .NET kullanarak PDF'leri nasıl özelleştireceğinizi öğrenin. Belge biçimlendirmesini geliştirmek isteyen geliştiriciler için mükemmeldir. ### [Aspose.PDF .NET kullanarak PDF'den Sayfalar Nasıl Silinir: Kapsamlı Bir Kılavuz](./delete-pdf-pages-aspose-net/) @@ -172,7 +172,7 @@ Aspose.PDF for .NET kullanarak PDF belgelerindeki gizli metinleri nasıl yönete ### [.NET için Aspose.PDF Kullanarak PDF'ye Sayfalar Nasıl Eklenir: Adım Adım Kılavuz](./insert-pages-into-pdf-aspose-net/) Aspose.PDF for .NET kullanarak bir PDF'den diğerine belirli sayfaları nasıl ekleyeceğinizi öğrenin. Belge düzenleme becerilerinizi geliştirmek için bu adım adım kılavuzu izleyin. -### [.NET için Aspose.PDF Kullanarak Birden Fazla PDF'yi Verimli Şekilde Nasıl Birleştirirsiniz | Belge İşleme Kılavuzu](./append-multiple-pdfs-aspose-pdf-dotnet/) +### [.NET için Aspose.PDF Kullanarak Birden Fazla PDF'yi Verimli Şekilde Nasıl Birleştirirsiniz | Belge İşleme Kılavuzu](./append-multiple-pdf-files-aspose-pdf-dotnet/) Aspose.PDF for .NET kullanarak birden fazla PDF belgesini tek bir dosyada nasıl etkili bir şekilde birleştireceğinizi öğrenin. Bu kılavuz, belge yönetimi sürecinizi kolaylaştırmak için adım adım talimatlar, kod örnekleri ve ipuçları sunar. ### [.NET için Aspose.PDF Kullanarak PDF Dosyaları Nasıl Birleştirilir: Akış Birleştirme ve Mantıksal Yapı Koruma](./merge-pdf-aspose-net-streams-structure/) @@ -247,7 +247,7 @@ Güçlü Aspose.PDF .NET kütüphanesini kullanarak PDF belgelerini yükleme, ge ### [.NET için Aspose.PDF ile PDF İşlemede Ustalaşın: Kapsamlı Bir Kılavuz](./mastering-pdf-manipulation-aspose-pdf-net-guide/) Aspose.PDF for .NET kullanarak PDF'lerden verileri etkili bir şekilde nasıl oluşturacağınızı, değiştireceğinizi, birleştireceğinizi ve çıkaracağınızı öğrenin. Belge iş akışlarınızı geliştirin ve üretkenliği artırın. -### [.NET için Aspose.PDF ile PDF Sayfa Sayısı Manipülasyonunda Ustalaşın: Eksiksiz Bir Kılavuz](./mastering-pdf-manipulation-aspose-pdf-net/) +### [.NET için Aspose.PDF Kullanarak PDF Sayfa Sayısı Manipülasyonunda Ustalaşın: Eksiksiz Bir Kılavuz](./mastering-pdf-manipulation-aspose-pdf-net/) Aspose.PDF for .NET kullanarak PDF sayfa sayılarını nasıl verimli bir şekilde alacağınızı ve değiştireceğinizi öğrenin. Bu kılavuz kurulum, uygulama ve pratik uygulamaları kapsar. ### [Aspose.PDF .NET'te Ustalaşma: LaTeX'i PDF Tablolarına ve Hücrelerine Sorunsuz Bir Şekilde Entegre Edin](./integrate-latex-aspose-pdf-dotnet/) @@ -318,6 +318,9 @@ C# ve Aspose.PDF for .NET kullanarak PDF belgelerindeki hassas metinleri gizleme ### [C# ile PDF Onarma – Bozuk PDF Dosyalarını Hızlıca Düzeltin](./how-to-repair-pdf-in-c-fix-corrupted-pdf-files-quickly/) Aspose.PDF for .NET kullanarak bozuk PDF dosyalarını hızlı ve güvenli bir şekilde onarmayı öğrenin. +### [Aspose.PDF ile Değiştirilen PDF'yi Kaydetme ve Şeffaflık Ekleme](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Aspose.PDF for .NET kullanarak PDF'yi değiştirdikten sonra kaydetmeyi ve şeffaflık eklemeyi adım adım öğrenin. + ## Ek Kaynaklar - [Net Belgeleme için Aspose.PDF](https://docs.aspose.com/pdf/net/) @@ -332,4 +335,4 @@ Aspose.PDF for .NET kullanarak bozuk PDF dosyalarını hızlı ve güvenli bir {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/turkish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/turkish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..70c9f73112 --- /dev/null +++ b/pdf/turkish/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-09-21 +description: Aspose.Pdf kullanarak C#'de değiştirilmiş PDF'yi kaydedin. PDF kaynaklarını + düzenlemeyi ve tam, çalıştırılabilir bir örnekte PDF şeffaflığı eklemeyi öğrenin. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: tr +lastmod: 2026-09-21 +og_description: Aspose.Pdf ile C#’ta değiştirilmiş PDF’yi kaydedin. Bu rehber, PDF + kaynaklarını nasıl düzenleyeceğinizi ve profesyonel belge işleme için PDF şeffaflığı + eklemeyi gösterir. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Aspose.Pdf ile değiştirilmiş PDF'yi kaydedin – şeffaflığı adım adım ekleyin +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Aspose.Pdf ile değiştirilmiş PDF'yi kaydetme ve şeffaflık ekleme +url: /tr/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.Pdf ile değiştirilmiş PDF'yi kaydetme ve şeffaflık ekleme + +İç kaynaklarını değiştirdikten sonra **değiştirilmiş PDF'yi kaydetmeniz** gerekiyorsa, bu kılavuz eksiksiz bir çözüm sunar. PDF kaynaklarını nasıl düzenleyeceğinizi, özel bir graphic‑state sözlüğü eklemeyi ve Aspose.Pdf for .NET kullanarak PDF şeffaflığı eklemeyi öğreneceksiniz. + +Bu öğretici, kaynak dosyanın yüklenmesinden çıktının doğrulanmasına kadar her adımı kapsar. Harici referanslara ihtiyaç yoktur; kod, Aspose.Pdf kütüphanesi yüklü herhangi bir .NET 6+ projesinde olduğu gibi çalışır. + +## Önkoşullar + +Başlamadan önce şunların yüklü olduğundan emin olun: + +* .NET 6 SDK veya daha yeni bir sürüm +* Geçerli bir Aspose.Pdf for .NET lisansı (veya geçici bir değerlendirme anahtarı) +* **input.pdf** adlı bir giriş PDF'i, kontrol ettiğiniz bir klasöre yerleştirilmiş +* C# ve PDF kaynakları, graphic state gibi kavramlara temel düzeyde aşina olmak + +Bu öğeler, örnek kodun izin veya uyumluluk sorunları olmadan çalışmasını sağlar. + +## Kaynakları düzenledikten sonra değiştirilmiş PDF'yi nasıl kaydedilir + +Aşağıdaki kod tüm iş akışını gerçekleştirir: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Her adımın önemi + +* **Adım 1** klasör yolunu izole eder, böylece aynı değişkeni yükleme ve kaydetme için yeniden kullanabilirsiniz. +* **Adım 2** kaynak dosyayı bir `using` bloğu içinde açar, tüm yerel kaynakların serbest bırakılmasını garanti eder. +* **Adım 3** sayfanın **Resources** sözlüğüne erişir; bu sözlük fontlar, görüntüler ve graphic state gibi nesneleri saklar. Bu sözlüğün düzenlenmesi **edit pdf resources** işleminin çekirdeğidir. +* **Adım 4** yeni bir **ExtGState** girdisi oluşturur. `CA`, `ca` ve `BM` anahtarları sırasıyla stroke opaklığı, fill opaklığı ve blend modunu kontrol eder—bu, **add pdf transparency** işleminin temelidir. +* **Adım 5** yeni graphic state'i `GS0` adıyla kaydeder. `GS0` referansını kullanan herhangi bir içerik şeffaflık ayarlarını devralır. +* **Adım 6** (isteğe bağlı) özel graphic state ile çizilen bir dikdörtgeni gösterir. Bu görsel test, şeffaflığın çalıştığını doğrular. +* **Adım 7** değişiklikleri **output.pdf** dosyasına yazar, böylece **save modified pdf** hedefi gerçekleştirilir. + +### Beklenen sonuç + +* `output.pdf` kaynak dosyayla aynı klasörde oluşturulur. +* İlk sayfada yarı‑şeffaf bir dikdörtgen bulunur (%50 fill opaklığı, %100 stroke opaklığı). +* Dosyayı Adobe Acrobat veya herhangi bir PDF görüntüleyicide açtığınızda dikdörtgen arka planla karışık görünür; bu da **add pdf transparency** adımının başarılı olduğunu gösterir. + +Görsel etkiyi doğrulamak için dosyayı herhangi bir PDF okuyucu ile açabilirsiniz. + +## Aspose.Pdf ile PDF kaynaklarını düzenleme + +Düşük‑seviye PDF nesnelerini değiştirmeniz gerektiğinde **Resources** sözlüğü giriş noktasıdır. Yaygın senaryolar şunlardır: + +| Senaryo | Aspose.Pdf ile nasıl yapılır | +|---------|------------------------------| +| Mevcut bir fontu değiştirme | `Resources["Font"]` öğesini alın, girdiyi değiştirin | +| Yeni bir image XObject ekleme | Bir `CosPdfStream` oluşturun, `Resources["XObject"]` içine ekleyin | +| Belirli bir yol için çizgi kalınlığını değiştirme | `/LW` parametresiyle özel bir `ExtGState` ekleyin | + +Yukarıdaki kod, `DictionaryEditor`'ı alıp hedef alt‑sözlüğü (ör. `ExtGState`) bulma ve ardından giriş ekleme veya değiştirme desenini gösterir. Bu yaklaşım, **edit pdf resources** işlemini güvenli bir şekilde yapmanın önerilen yoludur. + +## PDF şeffaflığı (blend mode, alpha) detayları + +PDF'de şeffaflık **ExtGState** nesnesiyle tanımlanır. Örnekte kullanılan üç anahtar şunlardır: + +| Anahtar | Anlamı | Tipik değerler | +|---------|--------|----------------| +| `CA` | Stroke opaklığı (0 = şeffaf, 1 = opak) | `0.0` – `1.0` | +| `ca` | Fill opaklığı (`CA` ile aynı aralık) | `0.0` – `1.0` | +| `BM` | Blend modu – kaynak ve hedef renklerin nasıl birleştirileceği | `"Normal"`, `"Multiply"`, `"Screen"` vb. | + +Farklı blend modları deneyerek soft‑light veya overlay gibi efektler elde edebilirsiniz. `"Normal"` ifadesini başka bir `CosPdfName` değeriyle değiştirmeniz yeterlidir. Graphic state, aynı adı (`GS0` örneğinde) referans göstererek birden çok sayfa veya nesne tarafından yeniden kullanılabilir. + +## Yaygın tuzaklar ve profesyonel ipuçları + +| Tuzak | Neden ortaya çıkar | Çözüm | +|------|--------------------|------| +| `ExtGState` girişi yok | Bazı PDF'ler bir graphic state eklenene kadar sözlüğü içermez | Eklemeye başlamadan önce `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` kullanın | +| Şeffaflık eski görüntüleyicilerde göz ardı edilir | Görüntüleyici PDF 1.4+ şeffaflığı desteklemiyor | Çıktı dosyasının PDF sürümünün en az 1.4 olduğundan emin olun (`pdfDocument.Version = 1.4`) | +| Mevcut graphic state ile isim çakışması | Aynı isim zaten varsa üzerine yazılır | Benzersiz bir isim seçin (ör. `"GS0"`, `"GS_CustomAlpha"`) veya eklemeden önce `extGStateDict.ContainsKey(name)` kontrol edin | + +Bu ipuçlarını uygulamak hata ayıklama süresini azaltır ve güvenilir sonuçlar üretir. + +## Tam çalışan örnek özeti + +Aşağıda açıklayıcı yorumlar olmadan, doğrudan bir konsol projesine kopyalayıp yapıştırabileceğiniz tam program yer almaktadır: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Bu programı çalıştırdığınızda **output.pdf** oluşturulur; şeffaf dikdörtgeni içerir ve **input.pdf**'den diğer tüm içerikler korunur. + +## Sonuç + +Artık düşük‑seviye değişiklikler yaptıktan sonra **save modified PDF** işlemini, Aspose.Pdf’in `DictionaryEditor` sınıfı ile **edit PDF resources** yöntemini ve özel bir graphic‑state sözlüğüyle **add PDF transparency** eklemeyi biliyorsunuz. Bu teknikler, PDF görünümünü ince ayarlarla kontrol etmenizi sağlar ve filigran ekleme, görüntü bindirme veya karmaşık görsel efektler oluşturma gibi görevlerde kullanılabilir. + +İleride keşfedebileceğiniz konular: + +* Farklı opaklık seviyeleri için birden çok graphic state ekleme (`add pdf transparency` varyasyonları) +* Fontlar veya XObject'ler gibi diğer kaynak türlerini güncelleme (`edit pdf resources` for images) +* Özel graphic state'leri koruyarak birden çok PDF'yi birleştirme (`save modified pdf` across documents) + +Blend modlarını, opaklık değerlerini ve kaynak kapsamlarını deneyerek kendi belge‑işleme iş akışınıza uyarlayın. İyi kodlamalar! + + +## Bir Sonraki Öğrenmeniz Gerekenler + + +Aşağıdaki öğreticiler, bu kılavuzda gösterilen tekniklere dayanan ve ilgili konuları derinlemesine ele alan tam çalışan kod örnekleri ve adım‑adım açıklamalar içerir: + +- [Add Transparency to PDF using Aspose – Complete C# Guide](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Add Transparency to PDF with Aspose PDF in C# – Step‑by‑Step Guide](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [How to Save PDF with Aspose – Complete C# Conversion Guide](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/pdf/vietnamese/net/document-manipulation/_index.md b/pdf/vietnamese/net/document-manipulation/_index.md index 1adbc73917..72d839d8f6 100644 --- a/pdf/vietnamese/net/document-manipulation/_index.md +++ b/pdf/vietnamese/net/document-manipulation/_index.md @@ -319,6 +319,9 @@ Tìm hiểu cách sửa các tệp PDF bị hỏng nhanh chóng bằng C# và As ### [Cách xóa nhạy cảm PDF trong C# với Aspose PDF – Hướng dẫn đầy đủ](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) Tìm hiểu cách xóa thông tin nhạy cảm khỏi tài liệu PDF bằng Aspose PDF cho .NET trong C# qua hướng dẫn chi tiết từng bước. +### [Cách lưu PDF đã chỉnh sửa với Aspose.PDF và thêm độ trong suốt](./how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/) +Tìm hiểu cách lưu PDF đã chỉnh sửa và áp dụng hiệu ứng trong suốt bằng Aspose.PDF cho .NET. + ## Tài nguyên bổ sung - [Aspose.PDF cho Tài liệu Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/vietnamese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md b/pdf/vietnamese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md new file mode 100644 index 0000000000..af810afe14 --- /dev/null +++ b/pdf/vietnamese/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-09-21 +description: Lưu PDF đã chỉnh sửa bằng Aspose.Pdf trong C#. Học cách chỉnh sửa tài + nguyên PDF và thêm độ trong suốt PDF trong một ví dụ hoàn chỉnh, có thể chạy được. +draft: false +images: +- PLACEHOLDER_URL/og-image.png +keywords: +- save modified pdf +- edit pdf resources +- add pdf transparency +- Aspose.Pdf C# +- PDF graphics state +language: vi +lastmod: 2026-09-21 +og_description: Lưu PDF đã chỉnh sửa bằng Aspose.Pdf trong C#. Hướng dẫn này chỉ cách + chỉnh sửa tài nguyên PDF và thêm độ trong suốt cho PDF nhằm xử lý tài liệu chuyên + nghiệp. +og_image_alt: Screenshot of a saved modified PDF that shows transparent graphics applied +og_title: Lưu PDF đã chỉnh sửa bằng Aspose.Pdf – thêm độ trong suốt từng bước +schemas: +- author: Aspose + dateModified: '2026-09-21' + description: Save modified PDF using Aspose.Pdf in C#. Learn to edit PDF resources + and add PDF transparency in a complete, runnable example. + headline: How to save modified PDF with Aspose.Pdf and add transparency + type: TechArticle +tags: +- C# +- Aspose.Pdf +- PDF manipulation +title: Cách lưu PDF đã chỉnh sửa bằng Aspose.Pdf và thêm độ trong suốt +url: /vi/net/document-manipulation/how-to-save-modified-pdf-with-aspose-pdf-and-add-transparenc/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách lưu PDF đã chỉnh sửa với Aspose.Pdf và thêm độ trong suốt + +Nếu bạn cần **lưu PDF đã chỉnh sửa** sau khi thay đổi các tài nguyên nội bộ, hướng dẫn này cung cấp giải pháp hoàn chỉnh. Bạn sẽ học cách chỉnh sửa tài nguyên PDF, chèn một dictionary graphic‑state tùy chỉnh, và thêm độ trong suốt PDF bằng cách sử dụng Aspose.Pdf cho .NET. + +Hướng dẫn bao gồm mọi bước từ việc tải tệp nguồn đến việc xác minh kết quả. Không cần tham chiếu bên ngoài; mã chạy ngay trong bất kỳ dự án .NET 6+ nào có cài đặt thư viện Aspose.Pdf. + +## Yêu cầu trước + +Trước khi bắt đầu, hãy chắc chắn rằng bạn có: + +* .NET 6 SDK hoặc phiên bản mới hơn đã được cài đặt +* Giấy phép Aspose.Pdf for .NET hợp lệ (hoặc khóa đánh giá tạm thời) +* Một tệp PDF đầu vào có tên **input.pdf** được đặt trong thư mục bạn kiểm soát +* Kiến thức cơ bản về C# và các khái niệm PDF như resources và graphic states + +Những mục này đảm bảo mẫu chạy mà không gặp vấn đề về quyền hoặc tương thích. + +## Cách lưu PDF đã chỉnh sửa sau khi chỉnh sửa tài nguyên + +Mã sau thực hiện toàn bộ quy trình làm việc: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class Program +{ + static void Main() + { + // 1️⃣ Define the folder that contains the source PDF. + string folderPath = @"C:\MyPdfFolder\"; // <-- change to your folder + + // 2️⃣ Load the PDF document. + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + // 3️⃣ Get the first page and its Resources dictionary. + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"].ToCosPdfDictionary(); + + // 4️⃣ Create a new graphic‑state dictionary with transparency parameters. + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + // Stroke alpha (CA) – fully opaque + new KeyValuePair("CA", new CosPdfNumber(1)), + // Fill alpha (ca) – 50 % transparent + new KeyValuePair("ca", new CosPdfNumber(0.5)), + // Blend mode (BM) – normal blending + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + + foreach (var param in parameters) + graphicStateDict.Add(param); + + // 5️⃣ Insert the new graphic‑state into the page's ExtGState resources. + string graphicStateName = "GS0"; // any unique name works + extGStateDict.Add(graphicStateName, graphicStateDict); + + // 6️⃣ Apply the graphic state to a sample shape (optional but demonstrates effect). + // Here we draw a semi‑transparent rectangle on the first page. + var rectangle = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument); + graphic.State = graphicStateName; // use the custom state + graphic.DrawRectangle(rectangle); + firstPage.Contents.Add(graphic); + + // 7️⃣ Save the modified PDF. + pdfDocument.Save(folderPath + "output.pdf"); + } + + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +### Tại sao mỗi bước lại quan trọng + +* **Step 1** cô lập đường dẫn thư mục để bạn có thể tái sử dụng cùng một biến cho việc tải và lưu. +* **Step 2** mở tệp nguồn trong khối `using`, đảm bảo tất cả tài nguyên gốc được giải phóng. +* **Step 3** truy cập dictionary **Resources** của trang, nơi lưu trữ các đối tượng như phông chữ, hình ảnh và graphic states. Việc chỉnh sửa dictionary này là cốt lõi của **edit pdf resources**. +* **Step 4** tạo một mục **ExtGState** mới. Các khóa `CA`, `ca` và `BM` lần lượt điều khiển độ mờ nét vẽ, độ mờ tô và chế độ hòa trộn — đây là cách bạn **add pdf transparency**. +* **Step 5** đăng ký graphic state mới dưới tên `GS0`. Bất kỳ nội dung nào tham chiếu tới `GS0` sẽ kế thừa các thiết lập độ trong suốt. +* **Step 6** (tùy chọn) hiển thị một trường hợp sử dụng thực tế: một hình chữ nhật được vẽ bằng graphic state tùy chỉnh. Kiểm tra trực quan này xác nhận độ trong suốt hoạt động. +* **Step 7** ghi các thay đổi vào **output.pdf**, hoàn thành mục tiêu chính là **save modified pdf**. + +### Kết quả mong đợi + +* `output.pdf` xuất hiện trong cùng thư mục với tệp nguồn. +* Trang đầu tiên chứa một hình chữ nhật bán trong suốt (độ mờ tô 50 %, độ mờ nét vẽ 100 %). +* Mở tệp trong Adobe Acrobat hoặc bất kỳ trình xem PDF nào sẽ thấy hình chữ nhật hòa trộn với nền, xác nhận bước **add pdf transparency** đã thành công. + +Bạn có thể mở tệp bằng bất kỳ trình đọc PDF nào để kiểm tra hiệu ứng trực quan. + +## Chỉnh sửa tài nguyên PDF với Aspose.Pdf + +Khi cần thay đổi các đối tượng PDF mức thấp, dictionary **Resources** là điểm khởi đầu. Các kịch bản thường gặp bao gồm: + +| Kịch bản | Cách thực hiện với Aspose.Pdf | +|----------|------------------------------| +| Thay thế một phông chữ hiện có | Lấy `Resources["Font"]`, sửa mục tương ứng | +| Thêm một Image XObject mới | Tạo một `CosPdfStream`, thêm vào `Resources["XObject"]` | +| Thay đổi độ rộng nét cho một đường cụ thể | Thêm một `ExtGState` tùy chỉnh với tham số `/LW` | + +Mã trên minh họa mẫu: lấy `DictionaryEditor`, xác định sub‑dictionary mục tiêu (ví dụ `ExtGState`), sau đó thêm hoặc thay thế các mục. Cách tiếp cận này là phương pháp được khuyến nghị để **edit pdf resources** một cách an toàn. + +## Thêm độ trong suốt PDF (blend mode, alpha) chi tiết + +Độ trong suốt trong PDF được định nghĩa bởi đối tượng **ExtGState**. Ba khóa được sử dụng trong ví dụ là: + +| Khóa | Ý nghĩa | Giá trị điển hình | +|------|----------|-------------------| +| `CA` | Độ mờ nét vẽ (0 = trong suốt, 1 = đậm) | `0.0` – `1.0` | +| `ca` | Độ mờ tô (cùng phạm vi với `CA`) | `0.0` – `1.0` | +| `BM` | Chế độ hòa trộn – cách màu nguồn và màu đích kết hợp | `"Normal"`, `"Multiply"`, `"Screen"` … | + +Bạn có thể thử nghiệm các chế độ hòa trộn khác nhau để đạt hiệu ứng như soft‑light hoặc overlay. Chỉ cần thay `"Normal"` bằng một giá trị `CosPdfName` khác. Graphic state này có thể được tái sử dụng trên nhiều trang hoặc đối tượng bằng cách tham chiếu cùng một tên (`GS0` trong mẫu). + +## Những rủi ro thường gặp và mẹo chuyên nghiệp + +| Rủi ro | Nguyên nhân | Cách khắc phục | +|--------|-------------|----------------| +| Mục `ExtGState` không tồn tại | Một số PDF không tạo dictionary này cho đến khi một graphic state được thêm | Dùng `resourcesEditor["ExtGState"] ??= new CosPdfDictionary(pdfDocument)` trước khi thêm | +| Độ trong suốt bị bỏ qua trong các trình xem cũ | Trình xem không hỗ trợ độ trong suốt PDF 1.4+ | Đảm bảo phiên bản PDF của tệp đầu ra ít nhất là 1.4 (`pdfDocument.Version = 1.4`) | +| Xung đột tên với các graphic state đã tồn tại | Sử dụng tên đã có sẽ ghi đè không mong muốn | Chọn tên duy nhất (ví dụ `"GS0"`, `"GS_CustomAlpha"`) hoặc kiểm tra `extGStateDict.ContainsKey(name)` trước | + +Áp dụng những mẹo này giảm thời gian gỡ lỗi và tạo ra kết quả đáng tin cậy. + +## Tóm tắt ví dụ làm việc đầy đủ + +Dưới đây là toàn bộ chương trình không có chú thích giải thích, sẵn sàng sao chép‑dán vào dự án console: + +```csharp +using System; +using System.Collections.Generic; +using Aspose.Pdf; +using Aspose.Pdf.Text; +using Aspose.Pdf.Graphics; + +class SaveModifiedPdfDemo +{ + static void Main() + { + string folderPath = @"C:\MyPdfFolder\"; // adjust path + using (var pdfDocument = new Document(folderPath + "input.pdf")) + { + Page firstPage = pdfDocument.Pages[1]; + var resourcesEditor = new DictionaryEditor(firstPage.Resources); + var extGStateDict = resourcesEditor["ExtGState"] + .ToCosPdfDictionary(); + + CosPdfDictionary graphicStateDict = CosPdfDictionary.CreateEmptyDictionary(pdfDocument); + var parameters = new[] + { + new KeyValuePair("CA", new CosPdfNumber(1)), + new KeyValuePair("ca", new CosPdfNumber(0.5)), + new KeyValuePair("BM", new CosPdfName("Normal")) + }; + foreach (var p in parameters) graphicStateDict.Add(p); + + string gsName = "GS0"; + extGStateDict.Add(gsName, graphicStateDict); + + var rect = new Rectangle(100, 500, 300, 700); + var graphic = new Aspose.Pdf.Generator.Graphic(pdfDocument) { State = gsName }; + graphic.DrawRectangle(rect); + firstPage.Contents.Add(graphic); + + pdfDocument.Save(folderPath + "output.pdf"); + } + Console.WriteLine("PDF saved as output.pdf with added transparency."); + } +} +``` + +Chạy chương trình này sẽ tạo **output.pdf** chứa hình chữ nhật trong suốt và giữ nguyên mọi nội dung khác từ **input.pdf**. + +## Kết luận + +Bây giờ bạn đã biết cách **save modified PDF** sau khi thực hiện các thay đổi mức thấp, cách **edit PDF resources** bằng `DictionaryEditor` của Aspose.Pdf, và cách **add PDF transparency** thông qua một dictionary graphic‑state tùy chỉnh. Những kỹ thuật này cho phép bạn kiểm soát chi tiết việc hiển thị PDF và áp dụng cho các nhiệm vụ như thêm watermark, chồng hình ảnh, hoặc tạo hiệu ứng hình ảnh phức tạp. + +Tiếp theo, bạn có thể khám phá: + +* Thêm nhiều graphic state cho các mức độ opacity khác nhau (các biến thể của `add pdf transparency`) +* Cập nhật các loại tài nguyên khác như phông chữ hoặc XObject (`edit pdf resources` cho hình ảnh) +* Gộp nhiều PDF trong khi giữ nguyên graphic state tùy chỉnh (`save modified pdf` giữa các tài liệu) + +Hãy tự do thử nghiệm các chế độ hòa trộn, giá trị opacity và phạm vi tài nguyên để phù hợp với quy trình xử lý tài liệu của bạn. Chúc lập trình vui! + +## Bạn nên học gì tiếp theo? + +Các hướng dẫn sau đây đề cập đến các chủ đề liên quan chặt chẽ, xây dựng trên các kỹ thuật đã trình bày trong hướng dẫn này. Mỗi tài nguyên bao gồm các ví dụ mã hoàn chỉnh với giải thích từng bước để giúp bạn làm chủ các tính năng API bổ sung và khám phá các cách triển khai thay thế trong dự án của mình. + +- [Thêm độ trong suốt vào PDF bằng Aspose – Hướng dẫn C# đầy đủ](/pdf/english/net/programming-with-operators/add-transparency-to-pdf-using-aspose-complete-c-guide/) +- [Thêm độ trong suốt vào PDF với Aspose PDF trong C# – Hướng dẫn từng bước](/pdf/english/net/images-graphics/add-transparency-to-pdf-with-aspose-pdf-in-c-step-by-step-gu/) +- [Cách lưu PDF với Aspose – Hướng dẫn chuyển đổi C# đầy đủ](/pdf/english/net/document-conversion/how-to-save-pdf-with-aspose-complete-c-conversion-guide/) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file